diff --git a/java/src/org/broadinstitute/sting/gatk/datasources/simpleDataSources/BlockDrivenSAMDataSource.java b/java/src/org/broadinstitute/sting/gatk/datasources/simpleDataSources/BlockDrivenSAMDataSource.java index 53b9061b3..b575ef6b8 100644 --- a/java/src/org/broadinstitute/sting/gatk/datasources/simpleDataSources/BlockDrivenSAMDataSource.java +++ b/java/src/org/broadinstitute/sting/gatk/datasources/simpleDataSources/BlockDrivenSAMDataSource.java @@ -264,16 +264,16 @@ public class BlockDrivenSAMDataSource extends SAMDataSource { Map> readerToIteratorMap = new HashMap>(); for(SAMReaderID id: getReaderIDs()) { SAMFileReader2 reader2 = (SAMFileReader2)readers.getReader(id); - List chunks = shard.getChunks().get(id); - readerToIteratorMap.put(reader2,reader2.iterator(chunks)); + CloseableIterator iterator = reader2.iterator(shard.getChunks().get(id)); + if(shard.getFilter() != null) + iterator = new FilteringIterator(iterator,shard.getFilter()); + readerToIteratorMap.put(reader2,iterator); } SamFileHeaderMerger headerMerger = new SamFileHeaderMerger(readers.values(),SAMFileHeader.SortOrder.coordinate,true); - // Set up merging and filtering to dynamically merge together multiple BAMs and filter out records not in the shard set. + // Set up merging to dynamically merge together multiple BAMs. CloseableIterator iterator = new MergingSamRecordIterator(headerMerger,readerToIteratorMap,true); - if(shard.getFilter() != null) - iterator = new FilteringIterator(iterator,shard.getFilter()); return applyDecoratingIterators(enableVerification, new ReleasingIterator(readers,StingSAMIteratorAdapter.adapt(reads,iterator)),