public class BAMFileReader extends SamReader.ReaderImplementation
Modifier and Type | Class and Description |
---|---|
class |
BAMFileReader.BAMQueryFilteringIterator
Pull SAMRecords from a coordinate-sorted iterator, and filter out any that do not match the filter.
|
Modifier and Type | Method and Description |
---|---|
void |
close() |
CloseableIterator<SAMRecord> |
createIndexIterator(QueryInterval[] intervals,
boolean contained,
long[] filePointers)
Prepare to iterate through SAMRecords that match the given intervals.
|
protected void |
enableIndexCaching(boolean enabled)
If true, uses the caching version of the index reader.
|
protected void |
enableIndexMemoryMapping(boolean enabled)
If false, disable the use of memory mapping for accessing index files (default behavior is to use memory mapping).
|
SAMFileHeader |
getFileHeader() |
SAMFileSpan |
getFilePointerSpanningReads()
Gets an unbounded pointer to the first record in the BAM file.
|
static BAMFileSpan |
getFileSpan(QueryInterval[] intervals,
BAMIndex fileIndex)
Use the index to determine the chunk boundaries for the required intervals.
|
BAMIndex |
getIndex()
Retrieves the index for the given file type.
|
SamIndexes |
getIndexType()
Return the type of the BAM index, BAI or CSI.
|
CloseableIterator<SAMRecord> |
getIterator()
Prepare to iterate through the SAMRecords in file order.
|
CloseableIterator<SAMRecord> |
getIterator(SAMFileSpan chunks) |
ValidationStringency |
getValidationStringency() |
long |
getVirtualFilePointer() |
boolean |
hasIndex() |
CloseableIterator<SAMRecord> |
query(QueryInterval[] intervals,
boolean contained)
Prepare to iterate through the SAMRecords that match any of the given intervals.
|
CloseableIterator<SAMRecord> |
queryAlignmentStart(java.lang.String sequence,
int start)
Prepare to iterate through the SAMRecords with the given alignment start.
|
CloseableIterator<SAMRecord> |
queryUnmapped()
Prepare to iterate through the SAMRecords that are unmapped and do not have a reference name or alignment start.
|
protected static SAMFileHeader |
readHeader(BinaryCodec stream,
ValidationStringency validationStringency,
java.lang.String source)
Reads the header of a BAM file from a stream
|
void |
setEagerDecode(boolean desired) |
SamReader.Type |
type() |
protected void enableIndexCaching(boolean enabled)
enabled
- true to use the caching version of the reader.protected void enableIndexMemoryMapping(boolean enabled)
enabled
- True to use memory mapping, false to use regular I/O.public SamReader.Type type()
public boolean hasIndex()
public BAMIndex getIndex()
public SamIndexes getIndexType()
SamIndexes.BAI
or SamIndexes.CSI
or nullpublic void setEagerDecode(boolean desired)
public void close()
public SAMFileHeader getFileHeader()
public ValidationStringency getValidationStringency()
public CloseableIterator<SAMRecord> getIterator()
public CloseableIterator<SAMRecord> getIterator(SAMFileSpan chunks)
public SAMFileSpan getFilePointerSpanningReads()
public CloseableIterator<SAMRecord> query(QueryInterval[] intervals, boolean contained)
intervals
- list of intervals to be queried. Must be optimized.contained
- If true, the alignments for the SAMRecords must be completely contained in the interval
specified by start and end. If false, the SAMRecords need only overlap the interval.QueryInterval.optimizeIntervals(QueryInterval[])
public CloseableIterator<SAMRecord> queryAlignmentStart(java.lang.String sequence, int start)
sequence
- Reference sequence sought.start
- Alignment start sought.public CloseableIterator<SAMRecord> queryUnmapped()
protected static SAMFileHeader readHeader(BinaryCodec stream, ValidationStringency validationStringency, java.lang.String source) throws java.io.IOException
stream
- A BinaryCodec to read the header fromvalidationStringency
- Determines how stringent to be when validating the samsource
- Note that this is used only for reporting errors.java.io.IOException
public static BAMFileSpan getFileSpan(QueryInterval[] intervals, BAMIndex fileIndex)
intervals
- the intervals to restrict reads tofileIndex
- the BAM index to usepublic CloseableIterator<SAMRecord> createIndexIterator(QueryInterval[] intervals, boolean contained, long[] filePointers)
intervals
- the intervals to restrict reads tocontained
- if true
, return records that are strictly
contained in the intervals, otherwise return records that overlapfilePointers
- file pointer pairs corresponding to chunk boundaries for the
intervalspublic long getVirtualFilePointer()
BlockCompressedInputStream.getFilePointer()