protected void advanceSubIterator() { try { if (mCurrentOffset < mOffsets.size()) { if (mOffsets.start(mCurrentOffset) != mPreviousVirtualOffsetStart) { // Diagnostic.developerLog("After region " + mCurrentOffset + " " + mCurrentRegion + ", // opening new reader at offset " + // VirtualOffsets.offsetToString(mOffsets.start(mCurrentOffset)) + " for region " + // mOffsets.region(mCurrentOffset)); mReader.seek(mOffsets.start(mCurrentOffset)); mBuffered = false; // } else { // Diagnostic.developerLog("After region " + mCurrentOffset + " " + mCurrentRegion + ", // re-using existing reader for region " + mOffsets.region(mCurrentOffset)); } mCurrentRegion = mOffsets.region(mCurrentOffset); final int newTemplate = mSequenceLookup.get(mCurrentRegion.getSequenceName()); if (newTemplate != mCurrentTemplate) { mPreviousAlignmentStart = Integer.MIN_VALUE; } mPreviousVirtualOffsetStart = mOffsets.start(mCurrentOffset); mCurrentTemplate = newTemplate; } mCurrentOffset++; } catch (IOException e) { throw new RuntimeIOException(e.getMessage(), e); } }
public SingleRestrictionLineReader(File input, TabixIndexReader tir, RegionRestriction region) throws IOException { if (region == null) { throw new NullPointerException(); } mSequence = region.getSequenceName(); mBeg = region.getStart(); mEnd = region.getEnd(); final BlockCompressedLineReader bclr = new BlockCompressedLineReader(new BlockCompressedInputStream(input)); mBCPositionReader = tir.getOptions().mFormat == TabixIndexer.TabixOptions.FORMAT_VCF ? new VcfPositionReader(bclr, tir.getOptions().mSkip) : new GenericPositionReader(bclr, tir.getOptions()); mRange = tir.getFilePointers(region); if (mRange != null) { mBCPositionReader.seek(mRange.start(0)); } }