/** * @param run opened read collection * @param header sam header * @param cachedReferences list of cached references shared among all iterators from a single SRAFileReader * @param recordRangeInfo info about record ranges withing SRA archive * @param chunk used to determine which alignments the iterator should return */ public SRAAlignmentIterator(SRAAccession accession, final ReadCollection run, final SAMFileHeader header, ReferenceCache cachedReferences, final SRAIterator.RecordRangeInfo recordRangeInfo, final Chunk chunk) { this.accession = accession; this.run = run; this.header = header; this.cachedReferences = cachedReferences; this.referencesLengths = recordRangeInfo.getReferenceLengthsAligned(); referencesChunksIterator = getReferenceChunks(chunk).iterator(); try { nextReference(); } catch (final Exception e) { throw new RuntimeException(e); } }
/** * @param run opened read collection * @param header sam header * @param cachedReferences list of cached references shared among all iterators from a single SRAFileReader * @param recordRangeInfo info about record ranges withing SRA archive * @param chunk used to determine which alignments the iterator should return */ public SRAAlignmentIterator(SRAAccession accession, final ReadCollection run, final SAMFileHeader header, ReferenceCache cachedReferences, final SRAIterator.RecordRangeInfo recordRangeInfo, final Chunk chunk) { this.accession = accession; this.run = run; this.header = header; this.cachedReferences = cachedReferences; this.referencesLengths = recordRangeInfo.getReferenceLengthsAligned(); referencesChunksIterator = getReferenceChunks(chunk).iterator(); try { nextReference(); } catch (final Exception e) { throw new RuntimeException(e); } }
@Override public boolean hasNext() { // check aligned if (lastRecord != null) { lastRecord.detachFromIterator(); lastRecord = null; } if (hasMoreAlignments == null) { try { hasMoreAlignments = alignedIterator.nextAlignment(); } catch (ErrorMsg e) { throw new RuntimeException(e); } } while (!hasMoreAlignments && hasMoreReferences) { nextReference(); } return hasMoreAlignments; }
@Override public boolean hasNext() { // check aligned if (lastRecord != null) { lastRecord.detachFromIterator(); lastRecord = null; } if (hasMoreAlignments == null) { try { hasMoreAlignments = alignedIterator.nextAlignment(); } catch (ErrorMsg e) { throw new RuntimeException(e); } } while (!hasMoreAlignments && hasMoreReferences) { nextReference(); } return hasMoreAlignments; }