diff --git a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/IntervalSharder.java b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/IntervalSharder.java index f78693c27..cc0a371ea 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/IntervalSharder.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/IntervalSharder.java @@ -73,8 +73,15 @@ public class IntervalSharder implements Iterator { */ public FilePointer next() { FilePointer current = wrappedIterator.next(); - while(wrappedIterator.hasNext() && current.isRegionUnmapped == wrappedIterator.peek().isRegionUnmapped && current.minus(wrappedIterator.peek()) == 0) + + while ( wrappedIterator.hasNext() && + current.isRegionUnmapped == wrappedIterator.peek().isRegionUnmapped && + (current.getContigIndex() == wrappedIterator.peek().getContigIndex() || current.isRegionUnmapped) && + current.minus(wrappedIterator.peek()) == 0 ) { + current = current.combine(parser,wrappedIterator.next()); + } + return current; } diff --git a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/LocusShardBalancer.java b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/LocusShardBalancer.java index 585b63457..e1bf2d98e 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/LocusShardBalancer.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/LocusShardBalancer.java @@ -42,8 +42,10 @@ public class LocusShardBalancer extends ShardBalancer { public Shard next() { FilePointer current = filePointers.next(); - while(filePointers.hasNext() && current.minus(filePointers.peek()) == 0) - current = current.combine(parser,filePointers.next()); + + // FilePointers have already been combined as necessary at the IntervalSharder level. No + // need to do so again here. + return new LocusShard(parser,readsDataSource,current.getLocations(),current.fileSpans); }