diff --git a/java/src/org/broadinstitute/sting/gatk/datasources/shards/IntervalSharder.java b/java/src/org/broadinstitute/sting/gatk/datasources/shards/IntervalSharder.java index c36b0c671..93a417571 100644 --- a/java/src/org/broadinstitute/sting/gatk/datasources/shards/IntervalSharder.java +++ b/java/src/org/broadinstitute/sting/gatk/datasources/shards/IntervalSharder.java @@ -105,6 +105,8 @@ public class IntervalSharder { BinMergingIterator binMerger = new BinMergingIterator(); for(SAMReaderID id: dataSource.getReaderIDs()) { final SAMSequenceRecord referenceSequence = dataSource.getHeader(id).getSequence(contig); + if(referenceSequence == null) + continue; final CachingBAMFileIndex index = dataSource.getIndex(id); binMerger.addReader(id, index, @@ -119,6 +121,9 @@ public class IntervalSharder { if(!location.getContig().equals(contig)) throw new StingException("Location outside bounds of contig"); + if(!binIterator.hasNext()) + break; + int locationStart = (int)location.getStart(); final int locationStop = (int)location.getStop(); @@ -195,7 +200,7 @@ public class IntervalSharder { filePointers.add(lastFilePointer); // Lookup the locations for every file pointer in the index. - for(SAMReaderID id: dataSource.getReaderIDs()) { + for(SAMReaderID id: readerToIndexMap.keySet()) { CachingBAMFileIndex index = readerToIndexMap.get(id); for(FilePointer filePointer: filePointers) filePointer.addFileSpans(id,index.getChunksOverlapping(filePointer.overlap.getBin(id)));