diff --git a/java/src/org/broadinstitute/sting/gatk/iterators/LocusIteratorByState.java b/java/src/org/broadinstitute/sting/gatk/iterators/LocusIteratorByState.java index f2a1eaa35..c52c79ce2 100755 --- a/java/src/org/broadinstitute/sting/gatk/iterators/LocusIteratorByState.java +++ b/java/src/org/broadinstitute/sting/gatk/iterators/LocusIteratorByState.java @@ -571,17 +571,18 @@ class LocusOverflowTracker { public boolean exceeded(GenomeLoc loc, int pileupSize) { boolean exceeded = pileupSize >= maxPileupSize; if (exceeded && warningsEmitted <= MAX_WARNINGS) { - warningInQueue = true; if (lastLocation == null) lastLocation = loc; - else if (lastLocation.contiguousP(loc)) + else if (lastLocation.contiguousP(loc)) { lastLocation = lastLocation.merge(loc); + } else { warnUser(); lastLocation = loc; } + warningInQueue = true; } else if (warningInQueue) { - lastLocation = null; warnUser(); + lastLocation = null; } return exceeded; } diff --git a/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateTest.java b/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateTest.java index cd56ef619..37ace69c7 100644 --- a/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateTest.java +++ b/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateTest.java @@ -82,6 +82,7 @@ public class LocusIteratorByStateTest extends BaseTest { AlignmentContext context = li.next(); //System.err.println(context.getLocation() + " " + context.getPileup().size()); } + li.getLocusOverflowTracker().cleanWarningQueue(); Assert.assertEquals(2, ((LocusIteratorOverride) li.getLocusOverflowTracker()).getWarningCount()); } } diff --git a/java/test/org/broadinstitute/sting/gatk/iterators/LocusOverflowTrackerTest.java b/java/test/org/broadinstitute/sting/gatk/iterators/LocusOverflowTrackerTest.java index b6cc32c01..877e1fd52 100644 --- a/java/test/org/broadinstitute/sting/gatk/iterators/LocusOverflowTrackerTest.java +++ b/java/test/org/broadinstitute/sting/gatk/iterators/LocusOverflowTrackerTest.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.gatk.iterators; import net.sf.samtools.SAMFileHeader; import net.sf.samtools.SAMRecord; import org.broadinstitute.sting.BaseTest; +import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLocParser; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils; @@ -40,10 +41,11 @@ public class LocusOverflowTrackerTest extends BaseTest { @Test public void testLocusOverflow() { SAMRecord rec = ArtificialSAMUtils.createArtificialRead(header, "readUno", 0, 1, 100); - if (tracker.exceeded(rec, MAX_READS - 1)) + GenomeLoc loc = GenomeLocParser.createGenomeLoc(rec); + if (tracker.exceeded(loc, MAX_READS - 1)) Assert.fail("We shouldn't be exceeded when MAX_READS -1 is the input"); - if (!tracker.exceeded(rec, MAX_READS)) Assert.fail("We should be exceeded when MAX_READS is the input"); - if (!tracker.exceeded(rec, MAX_READS + 1)) + if (!tracker.exceeded(loc, MAX_READS)) Assert.fail("We should be exceeded when MAX_READS is the input"); + if (!tracker.exceeded(loc, MAX_READS + 1)) Assert.fail("We shouldn't be exceeded when MAX_READS +1 is the input"); } @@ -51,7 +53,8 @@ public class LocusOverflowTrackerTest extends BaseTest { public void testContinuousLocus() { for (int x = 1; x < 5; x++) { SAMRecord rec = ArtificialSAMUtils.createArtificialRead(header, "readUno", 0, x, 100); - tracker.exceeded(rec, MAX_READS + 1); + GenomeLoc loc = GenomeLocParser.createGenomeLoc(rec); + tracker.exceeded(loc, MAX_READS + 1); } tracker.cleanWarningQueue(); Assert.assertEquals(1, ((LocusIteratorOverride) tracker).getWarningCount()); @@ -61,11 +64,13 @@ public class LocusOverflowTrackerTest extends BaseTest { public void testTwoSeperateContinuousLoci() { for (int x = 1; x < 5; x++) { SAMRecord rec = ArtificialSAMUtils.createArtificialRead(header, "readUno", 0, x, 2); - tracker.exceeded(rec, MAX_READS + 1); + GenomeLoc loc = GenomeLocParser.createGenomeLoc(rec); + tracker.exceeded(loc, MAX_READS + 1); } for (int x = 10; x < 15; x++) { SAMRecord rec = ArtificialSAMUtils.createArtificialRead(header, "readUno", 0, x, 2); - tracker.exceeded(rec, MAX_READS + 1); + GenomeLoc loc = GenomeLocParser.createGenomeLoc(rec); + tracker.exceeded(loc, MAX_READS + 1); } tracker.cleanWarningQueue(); Assert.assertEquals(2, ((LocusIteratorOverride) tracker).getWarningCount()); @@ -76,7 +81,8 @@ public class LocusOverflowTrackerTest extends BaseTest { public void testOverflow() { for (int x = 1; x < (LocusOverflowTracker.warningsEmitted * 3); x += 2) { SAMRecord rec = ArtificialSAMUtils.createArtificialRead(header, "readUno", 0, x, 100); - tracker.exceeded(rec, MAX_READS + 1); + GenomeLoc loc = GenomeLocParser.createGenomeLoc(rec); + tracker.exceeded(loc, MAX_READS + 1); } tracker.cleanWarningQueue(); Assert.assertEquals(LocusOverflowTracker.warningsEmitted, ((LocusIteratorOverride) tracker).getWarningCount());