Skip to content
Snippets Groups Projects
gatk.wdl 7.33 KiB
Newer Older
Cats's avatar
Cats committed
# Apply Base Quality Score Recalibration (BQSR) model
task ApplyBQSR {
Peter van 't Hof's avatar
Peter van 't Hof committed
    String? preCommand
    File? gatkJar
Cats's avatar
Cats committed
    File inputBam
Cats's avatar
Cats committed
    File inputBamIndex
Cats's avatar
Cats committed
    String outputBamPath
    File recalibrationReport
    Array[File]+ sequenceGroupInterval
    File refDict
    File refFasta
    File refFastaIndex
    Int? compressionLevel
Peter van 't Hof's avatar
Peter van 't Hof committed

Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier

Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))

    String toolCommand = if defined(gatkJar)
    then "java -Xmx" + mem + "G -jar " + gatkJar
    else "gatk -Xmx" + mem + "G"

Peter van 't Hof's avatar
Peter van 't Hof committed
    command {
Peter van 't Hof's avatar
Peter van 't Hof committed
        set -e -o pipefail
        ${preCommand}
        ${toolCommand} \
Cats's avatar
Cats committed
        -Xms${mem}G -jar ${gatkJar} \
          ApplyBQSR \
          --create-output-bam-md5 \
          --add-output-sam-program-record \
          -R ${refFasta} \
          -I ${inputBam} \
Peter van 't Hof's avatar
Peter van 't Hof committed
          --use-original-qualities \
Cats's avatar
Cats committed
          -O ${outputBamPath} \
          -bqsr ${recalibrationReport} \
          --static-quantized-quals 10 --static-quantized-quals 20 --static-quantized-quals 30 \
          -L ${sep=" -L " sequenceGroupInterval}
Peter van 't Hof's avatar
Peter van 't Hof committed
    }
Cats's avatar
Cats committed

Peter van 't Hof's avatar
Peter van 't Hof committed
    output {
Cats's avatar
Cats committed
        File recalibrated_bam = outputBamPath
        File recalibrated_bam_checksum = outputBamPath + ".md5"
Peter van 't Hof's avatar
Peter van 't Hof committed
    }
Cats's avatar
Cats committed

    runtime {
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Peter van 't Hof's avatar
Peter van 't Hof committed
}

Cats's avatar
Cats committed
# Generate Base Quality Score Recalibration (BQSR) model
task BaseRecalibrator {
Peter van 't Hof's avatar
Peter van 't Hof committed
    String? preCommand
    File? gatkJar
Cats's avatar
Cats committed
    File inputBam
    File inputBamIndex
    String recalibrationReportPath
    Array[File]+ sequenceGroupInterval
    Array[File]+ knownIndelsSitesVCFs
    Array[File]+ knownIndelsSitesIndices
    File refDict
    File refFasta
    File refFastaIndex
Peter van 't Hof's avatar
Peter van 't Hof committed

Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier

Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))

    String toolCommand = if defined(gatkJar)
    then "java -Xmx" + mem + "G -jar " + gatkJar
    else "gatk -Xmx" + mem + "G"

Peter van 't Hof's avatar
Peter van 't Hof committed
    command {
Peter van 't Hof's avatar
Peter van 't Hof committed
        set -e -o pipefail
        ${preCommand}
        ${toolCommand} \
Cats's avatar
Cats committed
          BaseRecalibrator \
          -R ${refFasta} \
          -I ${inputBam} \
Peter van 't Hof's avatar
Peter van 't Hof committed
          --use-original-qualities \
Cats's avatar
Cats committed
          -O ${recalibrationReportPath} \
          --known-sites ${sep=" --known-sites " knownIndelsSitesVCFs} \
          -L ${sep=" -L " sequenceGroupInterval}
Peter van 't Hof's avatar
Peter van 't Hof committed
    }
Cats's avatar
Cats committed

Peter van 't Hof's avatar
Peter van 't Hof committed
    output {
Cats's avatar
Cats committed
        File recalibrationReport = recalibrationReportPath
Peter van 't Hof's avatar
Peter van 't Hof committed
    }
Cats's avatar
Cats committed

    runtime {
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Peter van 't Hof's avatar
Peter van 't Hof committed
}

Cats's avatar
Cats committed
task CombineGVCFs {
Peter van 't Hof's avatar
Peter van 't Hof committed
    String? preCommand
Cats's avatar
Cats committed
    Array[File]+ gvcfFiles
    Array[File]+ gvcfFileIndexes
    Array[File]+ intervals
Peter van 't Hof's avatar
Peter van 't Hof committed

Cats's avatar
Cats committed
    String outputPath

    String? gatkJar
Cats's avatar
Cats committed

    File refFasta
    File refFastaIndex
    File refDict

    Int? compressionLevel
Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier

Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))

    String toolCommand = if defined(gatkJar)
    then "java -Xmx" + mem + "G -jar " + gatkJar
    else "gatk -Xmx" + mem + "G"

Peter van 't Hof's avatar
Peter van 't Hof committed
    command {
Peter van 't Hof's avatar
Peter van 't Hof committed
        set -e -o pipefail
        ${preCommand}
Cats's avatar
Cats committed

        if [ ${length(gvcfFiles)} -gt 1 ]; then
            ${toolCommand} \
Cats's avatar
Cats committed
            -Xmx${mem}G -jar ${gatkJar} \
             CombineGVCFs \
             -R ${refFasta} \
             -O ${outputPath} \
             -V ${sep=' -V ' gvcfFiles} \
             -L ${sep=' -L ' intervals}
        else # TODO this should be handeled in wdl
            ln -sf ${select_first(gvcfFiles)} ${outputPath}
            ln -sf ${select_first(gvcfFileIndexes)} ${outputPath}.tbi
        fi
Peter van 't Hof's avatar
Peter van 't Hof committed
    }
Cats's avatar
Cats committed

Peter van 't Hof's avatar
Peter van 't Hof committed
    output {
Cats's avatar
Cats committed
        File outputGVCF = outputPath
        File outputGVCFindex = outputPath + ".tbi"
Peter van 't Hof's avatar
Peter van 't Hof committed
    }
Cats's avatar
Cats committed

    runtime {
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Peter van 't Hof's avatar
Peter van 't Hof committed
}
Cats's avatar
Cats committed
# Combine multiple recalibration tables from scattered BaseRecalibrator runs
task GatherBqsrReports {
Peter van 't Hof's avatar
Peter van 't Hof committed
    String? preCommand
    String? gatkJar
Cats's avatar
Cats committed
    Array[File] inputBQSRreports
    String outputReportPath
Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier

Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))

    String toolCommand = if defined(gatkJar)
    then "java -Xmx" + mem + "G -jar " + gatkJar
    else "gatk -Xmx" + mem + "G"

Peter van 't Hof's avatar
Peter van 't Hof committed
    command {
        set -e -o pipefail
        ${preCommand}
        ${toolCommand} \
Cats's avatar
Cats committed
        GatherBQSRReports \
        -I ${sep=' -I ' inputBQSRreports} \
        -O ${outputReportPath}
Cats's avatar
Cats committed

Peter van 't Hof's avatar
Peter van 't Hof committed
    output {
Cats's avatar
Cats committed
        File outputBQSRreport = outputReportPath
Cats's avatar
Cats committed

    runtime {
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Peter van 't Hof's avatar
Peter van 't Hof committed

task GenotypeGVCFs {
Peter van 't Hof's avatar
Peter van 't Hof committed
    String? preCommand
Cats's avatar
Cats committed
    File gvcfFiles
    File gvcfFileIndexes
Peter van 't Hof's avatar
Peter van 't Hof committed
    Array[File]+ intervals
Cats's avatar
Cats committed
    String outputPath
    String? gatkJar
Cats's avatar
Cats committed
    File refFasta
    File refFastaIndex
    File refDict
Cats's avatar
Cats committed
    File dbsnpVCF
    File dbsnpVCFindex
Cats's avatar
Cats committed
    Int? compressionLevel
Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier
Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))

    String toolCommand = if defined(gatkJar)
    then "java -Xmx" + mem + "G -jar " + gatkJar
    else "gatk -Xmx" + mem + "G"

Peter van 't Hof's avatar
Peter van 't Hof committed
    command {
        set -e -o pipefail
        ${preCommand}
        ${toolCommand} \
Cats's avatar
Cats committed
        -Xmx${mem}G -jar ${gatkJar} \
Peter van 't Hof's avatar
Peter van 't Hof committed
         GenotypeGVCFs \
Cats's avatar
Cats committed
         -R ${refFasta} \
         -O ${outputPath} \
         -D ${dbsnpVCF} \
Peter van 't Hof's avatar
Peter van 't Hof committed
         -G StandardAnnotation \
         --only-output-calls-starting-in-intervals \
         -new-qual \
Cats's avatar
Cats committed
         -V ${gvcfFiles} \
Peter van 't Hof's avatar
Peter van 't Hof committed
         -L ${sep=' -L ' intervals}
Peter van 't Hof's avatar
Peter van 't Hof committed
    }

    output {
Cats's avatar
Cats committed
        File outputVCF = outputPath
        File outputVCFindex = outputPath + ".tbi"
Cats's avatar
Cats committed

    runtime{
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Cats's avatar
Cats committed
# Call variants on a single sample with HaplotypeCaller to produce a GVCF
task HaplotypeCallerGvcf {
Peter van 't Hof's avatar
Peter van 't Hof committed
    String? preCommand
Cats's avatar
Cats committed
    Array[File]+ inputBams
    Array[File]+ inputBamsIndex
    Array[File]+ intervalList
    String gvcfPath
    File refDict
Cats's avatar
Cats committed
    File refFasta
    File refFastaIndex
Cats's avatar
Cats committed
    Float? contamination
Cats's avatar
Cats committed
    Int? compressionLevel
    String? gatkJar
Cats's avatar
Cats committed

Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier
Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))

    String toolCommand = if defined(gatkJar)
    then "java -Xmx" + mem + "G -jar " + gatkJar
    else "gatk -Xmx" + mem + "G"

Peter van 't Hof's avatar
Peter van 't Hof committed
    command {
        set -e -o pipefail
        ${preCommand}
        ${toolCommand} \
Cats's avatar
Cats committed
        -Xmx${mem}G -jar ${gatkJar} \
          HaplotypeCaller \
          -R ${refFasta} \
          -O ${gvcfPath} \
          -I ${sep=" -I " inputBams} \
          -L ${sep=' -L ' intervalList} \
          -contamination ${default=0 contamination} \
          -ERC GVCF
Peter van 't Hof's avatar
Peter van 't Hof committed
    }

    output {
Cats's avatar
Cats committed
        File outputGVCF = gvcfPath
        File outputGVCFindex = gvcfPath + ".tbi"
Cats's avatar
Cats committed

    runtime {
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Cats's avatar
Cats committed

task SplitNCigarReads {
    String? preCommand

Cats's avatar
Cats committed
    File inputBam
    File inputBamIndex
    File refFasta
    File refFastaIndex
    File refDict
    String outputBam
    String gatkJar
    Array[File]+ intervals

Cats's avatar
Cats committed
    Float? memory
    Float? memoryMultiplier
Cats's avatar
Cats committed

Cats's avatar
Cats committed
    Int mem = ceil(select_first([memory, 4.0]))
Cats's avatar
Cats committed
    command {
        set -e -o pipefail
        ${preCommand}
Cats's avatar
Cats committed
        java -Xms${mem}G -jar ${gatkJar} \
Cats's avatar
Cats committed
        SplitNCigarReads \
Cats's avatar
Cats committed
        -I ${inputBam} \
        -R ${refFasta} \
        -O ${outputBam} \
        -L ${sep=' -L ' intervals}
Cats's avatar
Cats committed
    }

    output {
Cats's avatar
Cats committed
        File bam = outputBam
Cats's avatar
Cats committed
        File bamIndex = sub(outputBam, "\\.bam$", ".bai")
Cats's avatar
Cats committed
    }
Cats's avatar
Cats committed

    runtime {
        memory: ceil(mem * select_first([memoryMultiplier, 3.0]))
Cats's avatar
Cats committed
    }
Cats's avatar
Cats committed
}