69 lines
2.5 KiB
Scala
69 lines
2.5 KiB
Scala
import org.broadinstitute.sting.queue.QScript
|
|
import org.broadinstitute.sting.utils.text._
|
|
import org.broadinstitute.sting.queue.extensions.gatk._
|
|
import collection.JavaConversions._
|
|
|
|
class LinearIndexBinTests extends QScript {
|
|
qscript =>
|
|
|
|
@Input(doc="The path to the GenomeAnalysisTK.jar file.", shortName="gatk")
|
|
var gatkJar: File = null
|
|
|
|
@Argument(doc="Rod list to test. The first line in the list is the reference.", shortName="BL")
|
|
var rodLists: List[File] = Nil
|
|
|
|
@Argument(doc="Number of times to run the test.", shortName="numRuns", required=false)
|
|
var numRuns = 1
|
|
|
|
@Input(doc="memory limits", shortName="mem", required=true)
|
|
var memoryLimits: List[Int] = Nil
|
|
|
|
@Input(doc="max bin size", shortName="maxBin", required=false)
|
|
var maxBinSize = 512
|
|
|
|
def script = {
|
|
var maxFeaturesPerBin = List.empty[String]
|
|
var currMaxFeatures = maxBinSize
|
|
while (currMaxFeatures > 1) {
|
|
maxFeaturesPerBin +:= currMaxFeatures.toString
|
|
currMaxFeatures /= 2
|
|
}
|
|
maxFeaturesPerBin :::= List("0.001", "0.01", "0.1", "1")
|
|
|
|
for (run <- 1 to numRuns) {
|
|
for (rodList <- rodLists) {
|
|
val rodListName = rodList.getName
|
|
val lines = new XReadLines(rodList).iterator
|
|
val reference = new File(lines.next)
|
|
val rodFiles = lines.map(path => new File(path)).toList
|
|
|
|
for (memoryLimit <- memoryLimits) {
|
|
for (maxFeatures <- maxFeaturesPerBin) {
|
|
val dir = "%s_%smfpb_%02dg_run%02d".format(rodListName, "00000".take(5-maxFeatures.length) + maxFeatures, memoryLimit, run)
|
|
|
|
val countRod = new CountRod {
|
|
override def javaOpts = super.javaOpts + " -DMAX_FEATURES_PER_BIN=" + maxFeatures
|
|
}
|
|
countRod.jobOutputFile = new File(dir, "CountRod.out")
|
|
countRod.out = new File(dir, "CountRod.txt")
|
|
|
|
countRod.jarFile = qscript.gatkJar
|
|
countRod.reference_sequence = reference
|
|
countRod.memoryLimit = Some(memoryLimit)
|
|
|
|
// Some of the BED files don't have a chrM, which makes the GATK angry. Run unsafe.
|
|
countRod.U = Some(org.broadinstitute.sting.gatk.arguments.ValidationExclusion.TYPE.ALL)
|
|
|
|
for ((rodFile, index) <- rodFiles.zipWithIndex) {
|
|
val rodType = rodFile.getName.split("\\.").last
|
|
countRod.rodBind :+= new RodBind(rodType + (index+1), rodType.toUpperCase, rodFile.getAbsolutePath)
|
|
}
|
|
|
|
add(countRod)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|