From c1da8cd5e7376b70d3d2d8b8735f2140b999727c Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Wed, 2 Nov 2011 11:26:34 -0400 Subject: [PATCH] Final version of bp-resolved locus scatter/gather -- Minor refactoring to allow LocusScatterFunction to have maxIntervals be the original scatter count, rather than capping this by the interval count as Contig and Interval do --- .../gatk/ContigScatterFunction.scala | 2 ++ .../gatk/IntervalScatterFunction.scala | 2 ++ .../gatk/LocusScatterFunction.scala | 23 ++++++++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/ContigScatterFunction.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/ContigScatterFunction.scala index d2b3006a9..2609c3607 100755 --- a/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/ContigScatterFunction.scala +++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/ContigScatterFunction.scala @@ -35,6 +35,8 @@ class ContigScatterFunction extends GATKScatterFunction with InProcessFunction { // Include unmapped reads by default. this.includeUnmapped = true + override def scatterCount = if (intervalFilesExist) super.scatterCount min this.maxIntervals else super.scatterCount + protected override def maxIntervals = { GATKScatterFunction.getGATKIntervals(this.referenceSequence, this.intervals).contigs.size } diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/IntervalScatterFunction.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/IntervalScatterFunction.scala index f65d5ab29..40a6fc4b4 100644 --- a/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/IntervalScatterFunction.scala +++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/IntervalScatterFunction.scala @@ -35,6 +35,8 @@ class IntervalScatterFunction extends GATKScatterFunction with InProcessFunction protected override def maxIntervals = GATKScatterFunction.getGATKIntervals(this.referenceSequence, this.intervals).locs.size + override def scatterCount = if (intervalFilesExist) super.scatterCount min this.maxIntervals else super.scatterCount + def run() { val gi = GATKScatterFunction.getGATKIntervals(this.referenceSequence, this.intervals) val splits = IntervalUtils.splitFixedIntervals(gi.locs, this.scatterOutputFiles.size) diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/LocusScatterFunction.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/LocusScatterFunction.scala index 366d23488..8f52b9b82 100644 --- a/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/LocusScatterFunction.scala +++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/gatk/LocusScatterFunction.scala @@ -24,20 +24,21 @@ package org.broadinstitute.sting.queue.extensions.gatk +import collection.JavaConversions._ import org.broadinstitute.sting.utils.interval.IntervalUtils import org.broadinstitute.sting.queue.function.InProcessFunction /** * A scatter function that divides down to the locus level. */ -class LocusScatterFunction extends IntervalScatterFunction { -} -// -//class LocusScatterFunction extends GATKScatterFunction with InProcessFunction { -// // todo -- max intervals is actually the original scatter count, not capped by interval size -// def run() { -// val gi = GATKScatterFunction.getGATKIntervals(this.referenceSequence, this.intervals) -// val splits = IntervalUtils.splitLocusIntervals(gi.locs, this.scatterOutputFiles.size) -// IntervalUtils.scatterFixedIntervals(gi.samFileHeader, splits, this.scatterOutputFiles) -// } -//} \ No newline at end of file +//class LocusScatterFunction extends IntervalScatterFunction { } + +class LocusScatterFunction extends GATKScatterFunction with InProcessFunction { + protected override def maxIntervals = scatterCount + + def run() { + val gi = GATKScatterFunction.getGATKIntervals(this.referenceSequence, this.intervals) + val splits = IntervalUtils.splitLocusIntervals(gi.locs, this.scatterOutputFiles.size) + IntervalUtils.scatterFixedIntervals(gi.samFileHeader, splits, this.scatterOutputFiles) + } +} \ No newline at end of file