Merge pull request #667 from broadinstitute/ks_refactor_doc_scala_package

Refactored DoC scala package
This commit is contained in:
jmthibault79 2014-06-25 16:05:30 -04:00
commit dc93507023
2 changed files with 25 additions and 21 deletions

View File

@ -747,10 +747,10 @@
<executions>
<execution>
<id>delete-mavens-links</id>
<phase>process-test-resources</phase>
<goals>
<goal>exec</goal>
</goals>
<phase>process-test-resources</phase>
<inherited>false</inherited>
<configuration>
<executable>${gatk.basedir}/public/src/main/scripts/shell/delete_maven_links.sh</executable>

View File

@ -36,7 +36,10 @@ import scala.Some
import org.broadinstitute.gatk.utils.text.XReadLines
import org.broadinstitute.gatk.queue.util.VCF_BAM_utilities
package object DoC {
// Minimal refactor from a package object to a file full of classes/objects
// due to ongoing bugs with inner classes/objects in package objects:
// https://issues.scala-lang.org/browse/SI-4344
// https://issues.scala-lang.org/browse/SI-5954
class DoC(val bams: List[File], val DoC_output: File, val countType: CoverageUtils.CountPileupType, val MAX_DEPTH: Int, val minMappingQuality: Int, val minBaseQuality: Int, val scatterCountInput: Int, val START_BIN: Int, val NUM_BINS: Int, val minCoverageCalcs: Seq[Int], val sampleRenameMappingFile: Option[File] = None) extends CommandLineGATK with ScatterGatherableFunction {
val DOC_OUTPUT_SUFFIX: String = ".sample_interval_summary"
@ -83,24 +86,6 @@ package object DoC {
override def commandLine = super.commandLine.replaceAll(" --omitDepthOutputAtEachBase", "")
}
def buildDoCgroups(samples: List[String], sampleToBams: scala.collection.mutable.Map[String, scala.collection.mutable.Set[File]], samplesPerJob: Int, outputBase: File): List[Group] = {
var l: List[Group] = Nil
var remaining = samples
var subsamples: List[String] = Nil
var count = 1
while (!remaining.isEmpty) {
val splitRes = (remaining splitAt samplesPerJob)
subsamples = splitRes._1
remaining = splitRes._2
l ::= new Group("group" + count, outputBase, subsamples, VCF_BAM_utilities.findBAMsForSamples(subsamples, sampleToBams))
count = count + 1
}
return l
}
// A group has a list of samples and bam files to use for DoC
class Group(val name: String, val outputBase: File, val samples: List[String], val bams: List[File]) {
// getName() just includes the file name WITHOUT the path:
@ -169,6 +154,25 @@ package object DoC {
var sampleToBams = scala.collection.mutable.Map.empty[String, scala.collection.mutable.Set[File]]
}
object DoC {
def buildDoCgroups(samples: List[String], sampleToBams: scala.collection.mutable.Map[String, scala.collection.mutable.Set[File]], samplesPerJob: Int, outputBase: File): List[Group] = {
var l: List[Group] = Nil
var remaining = samples
var subsamples: List[String] = Nil
var count = 1
while (!remaining.isEmpty) {
val splitRes = (remaining splitAt samplesPerJob)
subsamples = splitRes._1
remaining = splitRes._2
l ::= new Group("group" + count, outputBase, subsamples, VCF_BAM_utilities.findBAMsForSamples(subsamples, sampleToBams))
count = count + 1
}
return l
}
def parseBamListWithOptionalSampleMappings(bamsFile: File): ParsedBamListWithOptionalSampleMappings = {
val r = new ParsedBamListWithOptionalSampleMappings(bamsFile)
@ -210,6 +214,7 @@ package object DoC {
return r
}
}
class ProcessBamListWithOptionalSampleMappings(parsedBamList: ParsedBamListWithOptionalSampleMappings, outputBase: String) extends InProcessFunction {
@Input(doc="")
@ -235,4 +240,3 @@ package object DoC {
bamSampleMapWriter.close
}
}
}