diff --git a/scala/qscript/hanna/DoC.scala b/scala/qscript/hanna/DoC.scala new file mode 100644 index 000000000..4982e1778 --- /dev/null +++ b/scala/qscript/hanna/DoC.scala @@ -0,0 +1,59 @@ +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) + } + +}