Class BAMIndexMerger


  • public final class BAMIndexMerger
    extends IndexMerger<AbstractBAMFileIndex>
    Merges BAM index files for (headerless) parts of a BAM file into a single index file. The index files must have been produced using BAMIndexer with fillInUninitializedValues set to false. A partitioned BAM is a directory containing the following files:
    1. A file named header containing all header bytes in BAM format.
    2. Zero or more files named part-00000, part-00001, ... etc, containing a list of alignments in BAM format.
    3. A file named terminator containing a BGZF end-of-file marker block.
    If an index is required, a BAM index can be generated for each (headerless) part file. These files should be named .part-00000.bai, .part-00001.bai, ... etc. Note the leading . to make the files hidden. This format has the following properties:
    • Parts and their indexes may be written in parallel, since one part file can be written independently of the others.
    • A BAM file can be created from a partitioned BAM file by concatenating all the non-hidden files (header, part-00000, part-00001, ..., terminator).
    • A BAM index can be created from a partitioned BAM file by merging all of the hidden files with a .bai suffix. Note that this is not a simple file concatenation operation. See BAMIndexMerger.
    • Constructor Detail

      • BAMIndexMerger

        public BAMIndexMerger​(OutputStream out,
                              long headerLength)
    • Method Detail

      • processIndex

        public void processIndex​(AbstractBAMFileIndex index,
                                 long partLength)
        Description copied from class: IndexMerger
        Process the next index and add to the merged index.
        Specified by:
        processIndex in class IndexMerger<AbstractBAMFileIndex>
        Parameters:
        index - the index to merge
        partLength - the length of the part file corresponding to the index, in bytes.
      • finish

        public void finish​(long dataFileLength)
        Description copied from class: IndexMerger
        Finish merging the indexes, and close the output stream.
        Specified by:
        finish in class IndexMerger<AbstractBAMFileIndex>
        Parameters:
        dataFileLength - the length of the total data file, in bytes.
      • mergeLinearIndexes

        public static LinearIndex mergeLinearIndexes​(int referenceSequence,
                                                     List<LinearIndex> linearIndexes,
                                                     long[] offsets)
        Merge linear indexes for (headerless) BAM file parts.
        Parameters:
        referenceSequence - the reference sequence number for the linear indexes being merged
        linearIndexes - the linear indexes to merge
        offsets - linear index i will be shifted by offset i
        Returns:
        the merged linear index