60 lines
2.2 KiB
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)
|
|
}
|
|
|
|
}
|