From 12e1f192c48a8333eaee644fe241724c22939ca3 Mon Sep 17 00:00:00 2001 From: aaron Date: Thu, 16 Apr 2009 18:42:00 +0000 Subject: [PATCH] Fixed a bug in this code where it would eat reads that didn't start at the beginning of the provided interval. This should fix / help fix Kristian problem git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@453 348d0f76-0448-11de-a6fe-93d51630548a --- .../providers/LocusContextProvider.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/dataSources/providers/LocusContextProvider.java b/java/src/org/broadinstitute/sting/gatk/dataSources/providers/LocusContextProvider.java index 1f2afd78d..2a2bf2c7c 100755 --- a/java/src/org/broadinstitute/sting/gatk/dataSources/providers/LocusContextProvider.java +++ b/java/src/org/broadinstitute/sting/gatk/dataSources/providers/LocusContextProvider.java @@ -1,18 +1,17 @@ package org.broadinstitute.sting.gatk.dataSources.providers; -import org.broadinstitute.sting.utils.GenomeLoc; -import org.broadinstitute.sting.gatk.iterators.LocusIterator; -import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger; -import org.broadinstitute.sting.gatk.LocusContext; -import org.broadinstitute.sting.gatk.traversals.TraversalStatistics; -import org.apache.log4j.Logger; -import net.sf.samtools.SAMRecord; - -import java.util.Iterator; -import java.util.ArrayList; - import edu.mit.broad.picard.filter.FilteringIterator; import edu.mit.broad.picard.filter.SamRecordFilter; +import net.sf.samtools.SAMRecord; +import org.apache.log4j.Logger; +import org.broadinstitute.sting.gatk.LocusContext; +import org.broadinstitute.sting.gatk.iterators.LocusIterator; +import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger; +import org.broadinstitute.sting.gatk.traversals.TraversalStatistics; +import org.broadinstitute.sting.utils.GenomeLoc; + +import java.util.ArrayList; +import java.util.Iterator; /** * Created by IntelliJ IDEA. @@ -27,7 +26,7 @@ public class LocusContextProvider { // What's the last locus accessed? Used for sanity checking. private GenomeLoc lastLoc = null; private LocusIterator loci; - + private LocusContext locus; protected static Logger logger = Logger.getLogger(LocusContextProvider.class); public LocusContextProvider( Iterator reads ) { @@ -60,9 +59,11 @@ public class LocusContextProvider { if ( ! locusIter.hasNext() ) return null; - LocusContext locus = locusIter.next(); + if (locus == null) { + locus = locusIter.next(); + } - while ( ! target.containsP(locus.getLocation()) && locusIter.hasNext() ) { + while (target.isPast(locus.getLocation()) && locusIter.hasNext() ) { logger.debug(String.format(" current locus is %s vs %s => %d", locus.getLocation(), target, locus.getLocation().compareTo(target))); locus = locusIter.next(); }