From 6fb4be1a0985c7895c5cf65099feb920075f97b5 Mon Sep 17 00:00:00 2001 From: Matt Hanna Date: Wed, 14 Dec 2011 18:05:31 -0500 Subject: [PATCH] Cache header merger. --- .../sting/gatk/datasources/reads/SAMDataSource.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java index d70c63bd2..fdaca54de 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java @@ -95,6 +95,11 @@ public class SAMDataSource { */ private final Map readerPositions = new HashMap(); + /** + * Cached representation of the merged header used to generate a merging iterator. + */ + private final SamFileHeaderMerger headerMerger; + /** * The merged header. */ @@ -287,7 +292,7 @@ public class SAMDataSource { initializeReaderPositions(readers); - SamFileHeaderMerger headerMerger = new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate,readers.headers(),true); + headerMerger = new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate,readers.headers(),true); mergedHeader = headerMerger.getMergedHeader(); hasReadGroupCollisions = headerMerger.hasReadGroupCollisions(); @@ -535,8 +540,6 @@ public class SAMDataSource { * @return An iterator over the selected data. */ private StingSAMIterator getIterator(SAMReaders readers, Shard shard, boolean enableVerification) { - SamFileHeaderMerger headerMerger = new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate,readers.headers(),true); - // Set up merging to dynamically merge together multiple BAMs. MergingSamRecordIterator mergingIterator = new MergingSamRecordIterator(headerMerger,readers.values(),true);