/** * Prints meta-data statistics from BAM index (.bai) file * Statistics include count of aligned and unaligned reads for each reference sequence * and a count of all records with no start coordinate */ static public BAMIndexMetaData[] getIndexStats(final BAMFileReader bam) { AbstractBAMFileIndex index = (AbstractBAMFileIndex) bam.getIndex(); // read through all the bins of every reference. int nRefs = index.getNumberOfReferences(); BAMIndexMetaData[] result = new BAMIndexMetaData[nRefs == 0 ? 1 : nRefs]; for (int i = 0; i < nRefs; i++) { result[i] = index.getMetaData(i); } if (result[0] == null) { result[0] = new BAMIndexMetaData(); } final Long noCoordCount = index.getNoCoordinateCount(); if (noCoordCount != null) // null in old index files without metadata result[0].setNoCoordinateRecordCount(noCoordCount); return result; } }
/** * Prints meta-data statistics from BAM index (.bai) file * Statistics include count of aligned and unaligned reads for each reference sequence * and a count of all records with no start coordinate */ static public BAMIndexMetaData[] getIndexStats(final BAMFileReader bam){ AbstractBAMFileIndex index = (AbstractBAMFileIndex) bam.getIndex(); // read through all the bins of every reference. int nRefs = index.getNumberOfReferences(); BAMIndexMetaData[] result = new BAMIndexMetaData[nRefs == 0 ? 1 : nRefs]; for (int i = 0; i < nRefs; i++) { result[i] = index.getMetaData(i); } if (result[0] == null){ result[0] = new BAMIndexMetaData(); } final Long noCoordCount = index.getNoCoordinateCount(); if (noCoordCount != null) // null in old index files without metadata result[0].setNoCoordinateRecordCount(noCoordCount); return result; } }
/** * Prints meta-data statistics from BAM index (.bai or .csi) file * Statistics include count of aligned and unaligned reads for each reference sequence * and a count of all records with no start coordinate */ static public BAMIndexMetaData[] getIndexStats(final BAMFileReader bam) { AbstractBAMFileIndex index = (AbstractBAMFileIndex) bam.getIndex(); // read through all the bins of every reference. int nRefs = index.getNumberOfReferences(); BAMIndexMetaData[] result = new BAMIndexMetaData[nRefs == 0 ? 1 : nRefs]; for (int i = 0; i < nRefs; i++) { result[i] = index.getMetaData(i); } if (result[0] == null) { result[0] = new BAMIndexMetaData(); } final Long noCoordCount = index.getNoCoordinateCount(); if (noCoordCount != null) // null in old index files without metadata result[0].setNoCoordinateRecordCount(noCoordCount); return result; } }
/** * Return meta data for the given reference including information about number of aligned, unaligned, and noCoordinate records * * @param reference the reference of interest * @return meta data for the reference */ @Override public BAMIndexMetaData getMetaData(final int reference) { seek(4); final List<Chunk> metaDataChunks = new ArrayList<Chunk>(); final int sequenceCount = readInteger(); if (reference >= sequenceCount) { return null; } skipToSequence(reference); final int binCount = readInteger(); for (int binNumber = 0; binNumber < binCount; binNumber++) { final int indexBin = readInteger(); final int nChunks = readInteger(); if (indexBin == GenomicIndexUtil.MAX_BINS) { readChunks(nChunks, metaDataChunks); } else { skipBytes(16 * nChunks); } } return new BAMIndexMetaData(metaDataChunks); }
/** * Return meta data for the given reference including information about number of aligned, unaligned, and noCoordinate records * * @param reference the reference of interest * @return meta data for the reference */ public BAMIndexMetaData getMetaData(final int reference) { seek(4); final List<Chunk> metaDataChunks = new ArrayList<Chunk>(); final int sequenceCount = readInteger(); if (reference >= sequenceCount) { return null; } skipToSequence(reference); final int binCount = readInteger(); for (int binNumber = 0; binNumber < binCount; binNumber++) { final int indexBin = readInteger(); final int nChunks = readInteger(); if (indexBin == GenomicIndexUtil.MAX_BINS) { for (int ci = 0; ci < nChunks; ci++) { final long chunkBegin = readLong(); final long chunkEnd = readLong(); metaDataChunks.add(new Chunk(chunkBegin, chunkEnd)); } } else { skipBytes(16 * nChunks); } } return new BAMIndexMetaData(metaDataChunks); }
return new BAMIndexMetaData(metaDataChunks);
return new BAMIndexContent(referenceSequence, bins, binCount - (metaDataSeen? 1 : 0), new BAMIndexMetaData(metaDataChunks), linearIndex);
return new BAMIndexContent(referenceSequence, bins, binCount - (metaDataSeen? 1 : 0), new BAMIndexMetaData(metaDataChunks), null);
return new BAMIndexContent(referenceSequence, bins, binCount - (metaDataSeen? 1 : 0), new BAMIndexMetaData(metaDataChunks), linearIndex);
return new BAMIndexContent(referenceSequence, bins, binCount - (metaDataSeen? 1 : 0), new BAMIndexMetaData(metaDataChunks), linearIndex);
/** * Return meta data for the given reference including information about number of aligned, unaligned, and noCoordinate records * * @param reference the reference of interest * @return meta data for the reference */ @Override public BAMIndexMetaData getMetaData(final int reference) { if (metaDataPos > 0 && position() != metaDataPos) { seek(metaDataPos); } final List<Chunk> metaDataChunks = new ArrayList<Chunk>(); final int sequenceCount = getNumberOfReferences(); if (reference >= sequenceCount) { return null; } skipToSequence(reference); final int binCount = readInteger(); // n_bin for (int binNumber = 0; binNumber < binCount; binNumber++) { final int indexBin = readInteger(); // bin final long lOffset = readLong(); // loffset final int nChunks = readInteger(); // n_chunk if (indexBin == getMaxBins() + 1) { readChunks(nChunks, metaDataChunks); } else { skipBytes(BAMFileConstants.CSI_CHUNK_SIZE * nChunks); } } return new BAMIndexMetaData(metaDataChunks); }