private boolean loadIndex(long dataIndexVersion) throws IOException { mIndexPos = 0; mIndexedSequenceFileNumber = -1; mIndex = DataFileIndex.loadDataFileIndex( dataIndexVersion, new File(mDir, mIndexFile), mDataFilePrefix); if (mIndex.getTotalNumberSequences() != mNumberSequences) { throw new CorruptSdfException(mDir); } return true; }
/** * Alternative to other one with similar name * * @param directory directory containing SDF * @param indexFile index file * @param loadNames should we load names * @param loadFullNames should we load full names * @param region region to restrict to * @throws IOException IO exception occurs */ CompressedMemorySequencesReader2( File directory, IndexFile indexFile, boolean loadNames, boolean loadFullNames, LongRange region) throws IOException { mIndexFile = indexFile; mRegion = SequencesReaderFactory.resolveRange(indexFile, region); mStart = mRegion.getStart(); mEnd = mRegion.getEnd(); mNumberSequences = mEnd - mStart; mData = DataInMemory.loadDelayQuality( directory, indexFile, DataFileIndex.loadSequenceDataFileIndex(indexFile.dataIndexVersion(), directory), mStart, mEnd); if (mNumberSequences > Integer.MAX_VALUE) { throw new IllegalArgumentException( "Too many sequences in region: " + region + ", maximum is: " + Integer.MAX_VALUE); } mDirectory = directory; if (loadNames && mIndexFile.hasNames()) { loadNames(); loadNameSuffixes(loadFullNames, mIndexFile.hasSequenceNameSuffixes()); } final StringBuilder sb = new StringBuilder("CMSR2 statistics"); sb.append(LS); this.infoString(sb); Diagnostic.userLog(sb.toString()); }
protected void loadNext() { final long value; value = mIndex.numberSequences(mIndexPos++); mIndexedSequenceFileNumber++; mCurrentLower = mCurrentUpper; mCurrentUpper += value; }
/** * Creates a the stream manager * * @param dir Directory containing sequence data * @param numbersequences Number of sequences in directory * @param indexFile Name of file containing index * @param dataPrefix Filename prefix for data * @param pointerPrefix Filename prefix for pointers * @param dataIndexVersion the version with which to interpret the data * @param opener file opener implementation * @throws IOException If an I/O Error occurs */ AbstractStreamManager( final File dir, final long numbersequences, final String indexFile, final String dataPrefix, final String pointerPrefix, long dataIndexVersion, DataFileOpener opener) throws IOException { mDir = dir; mNumberSequences = numbersequences; mIndexFile = indexFile; mDataFilePrefix = dataPrefix; loadIndex(dataIndexVersion); mData = new DataRollingFile(mDir, dataPrefix, mIndex.numberEntries(), mIndex, opener); mPointers = new RollingFile(mDir, pointerPrefix, mIndex.numberEntries()); }
@Override SeekableStream openFileInternal(File f, int fileNum) throws IOException { return mOpener.openRandomAccess(f, mDataIndex.dataSize(fileNum)); }