From 59045ccb28b5e83bd846fb983ea240d9549a6087 Mon Sep 17 00:00:00 2001 From: hanna Date: Tue, 16 Mar 2010 16:23:37 +0000 Subject: [PATCH] Filter,merge performs much better than merge,filter. Many thanks to Eric for checking in an integration test that so compellingly demonstrates this. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3011 348d0f76-0448-11de-a6fe-93d51630548a --- .../simpleDataSources/BlockDrivenSAMDataSource.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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)),