gatk-3.8/scala/qscript/hanna/DoC.scala

60 lines
2.2 KiB
Scala

import org.broadinstitute.sting.gatk.DownsampleType
import org.broadinstitute.sting.queue.QScript
import org.broadinstitute.sting.queue.extensions.gatk._
/**
* A pipeline for Queue that runs a custom walker outside of the GATK jar.
* NOTE: This code is an unsupported example for soliciting feedback on how to improve Queue.
* Future syntax will simplify running the GATK so please expect the syntax below to change significantly.
*/
class DoC extends QScript {
// The full packaged jar should be used.
// You can build this jar via 'ant package' and then find it under
// 'Sting/dist/packages/GenomeAnalysisTK-*/GenomeAnalysisTK.jar'
@Input(doc="The path to the packaged GenomeAnalysisTK.jar file.", shortName="gatk")
var gatkJar: File = null
@Input(doc="The reference file for the bam files.", shortName="R")
var referenceFile: File = null
// NOTE: Do not initialize List, Set, or Option to null
// as you won't be able to update the collection.
// By default set:
// List[T] = Nil
// Set[T] = Set.empty[T]
// Option[T] = None
@Input(doc="One or more bam files.", shortName="I")
var bamFiles: List[File] = Nil
@Input(doc="An optional file with a list of intervals to proccess.", shortName="L", required=false)
var intervalsString: List[String] = List("2:87000001-90000000")
// This trait allows us set the variables below in one place,
// and then reuse this trait on each CommandLineGATK function below.
trait DepthOfCoverageArguments extends CommandLineGATK {
this.jarFile = DoC.this.gatkJar
this.reference_sequence = DoC.this.referenceFile
this.intervalsString = DoC.this.intervalsString
this.memoryLimit = Some(8)
}
def script = {
// Create the four function that we can run.
val doc = new DepthOfCoverage with DepthOfCoverageArguments
doc.downsampling_type = Some(DownsampleType.NONE)
doc.omitLocusTable = true
doc.omitIntervals = true
doc.omitSampleSummary = true
// If you are running this on a compute farm, make sure that the Sting/shell
// folder is in your path to use mergeText.sh and splitIntervals.sh.
//doc.scatterCount = 3
doc.input_file = DoC.this.bamFiles
doc.out = new File("doc-all.out")
add(doc)
}
}