From 2f5064dd1d1e1d8e5b8071bfca3c29b4cc174df1 Mon Sep 17 00:00:00 2001 From: chapmanb Date: Mon, 12 Aug 2013 14:36:57 -0400 Subject: [PATCH] Provide close methods to clean up resources used while creating AlignmentContexts from BAM file regions. Allows utilization of CoveredLocusView via the API Signed-off-by: David Roazen --- .../sting/gatk/datasources/reads/BAMScheduler.java | 8 ++++++++ .../sting/gatk/datasources/reads/IntervalSharder.java | 3 +++ .../sting/gatk/datasources/reads/SAMDataSource.java | 8 ++++++++ .../sting/gatk/datasources/reads/ShardBalancer.java | 3 +++ 4 files changed, 22 insertions(+) diff --git a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/BAMScheduler.java b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/BAMScheduler.java index adb668ff9..2f03edb68 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/BAMScheduler.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/BAMScheduler.java @@ -246,6 +246,14 @@ public class BAMScheduler implements Iterator { */ private PeekableIterator bamScheduleIterator = null; + /** + * Clean up underlying BAMSchedule file handles. + */ + public void close() { + if(bamScheduleIterator != null) + bamScheduleIterator.close(); + } + /** * Get the next overlapping tree of bins associated with the given BAM file. * @param currentLocus The actual locus for which to check overlap. 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 048ce17f5..b476945ce 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 @@ -62,6 +62,9 @@ public class IntervalSharder implements Iterator { wrappedIterator = new PeekableIterator(scheduler); this.parser = parser; } + public void close() { + wrappedIterator.close(); + } public boolean hasNext() { return wrappedIterator.hasNext(); 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 ac2ed4a4c..9dc9734a5 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java @@ -352,6 +352,14 @@ public class SAMDataSource { resourcePool.releaseReaders(readers); } + public void close() { + SAMReaders readers = resourcePool.getAvailableReaders(); + for(SAMReaderID readerID: readerIDs) { + SAMFileReader reader = readers.getReader(readerID); + reader.close(); + } + } + /** * Returns Reads data structure containing information about the reads data sources placed in this pool as well as * information about how they are downsampled, sorted, and filtered diff --git a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ShardBalancer.java b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ShardBalancer.java index ff0fa1127..37f1bcfac 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ShardBalancer.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ShardBalancer.java @@ -43,4 +43,7 @@ public abstract class ShardBalancer implements Iterable { this.filePointers = new PeekableIterator(filePointers); this.parser = parser; } + public void close() { + this.filePointers.close(); + } }