Class TabixIndex

  • All Implemented Interfaces:
    Index

    public class TabixIndex
    extends Object
    implements Index
    This class represent a Tabix index that has been built in memory or read from a file. It can be queried or written to a file.
    • Field Detail

      • MAGIC_NUMBER

        public static final int MAGIC_NUMBER
    • Constructor Detail

      • TabixIndex

        public TabixIndex​(TabixFormat formatSpec,
                          List<String> sequenceNames,
                          BinningIndexContent[] indices)
        Parameters:
        formatSpec - Information about how to interpret the file being indexed. Unused by this class other than written to an output file.
        sequenceNames - Sequences in the file being indexed, in the order they appear in the file.
        indices - One for each element of sequenceNames
      • TabixIndex

        public TabixIndex​(InputStream inputStream)
                   throws IOException
        Parameters:
        inputStream - This is expected to be buffered and be gzip-decompressing as appropriate. Caller should close input stream after ctor returns.
        Throws:
        IOException
      • TabixIndex

        public TabixIndex​(File tabixFile)
                   throws IOException
        Convenient ctor that opens the file, wraps with with BGZF reader, and closes after reading index.
        Throws:
        IOException
      • TabixIndex

        public TabixIndex​(Path tabixPath)
                   throws IOException
        Convenient ctor that opens the path, wraps with with BGZF reader, and closes after reading index.
        Throws:
        IOException
    • Method Detail

      • getBlocks

        public List<Block> getBlocks​(String chr,
                                     int start,
                                     int end)
        Description copied from interface: Index
        Query the index.
        Specified by:
        getBlocks in interface Index
        Parameters:
        chr - the chromosome
        start - the start position, one-based, inclusive.
        end - the end position, one-based, inclusive.
        Returns:
        List of regions of file that are candidates for the given query.

        TODO: This method has not yet been tested, since the primary task is index writing.

      • isCurrentVersion

        public boolean isCurrentVersion()
        Specified by:
        isCurrentVersion in interface Index
        Returns:
        true if the index is up to date, false otherwise
      • getSequenceNames

        public List<String> getSequenceNames()
        Specified by:
        getSequenceNames in interface Index
        Returns:
        a list of the sequence names we've seen during indexing, in order
      • containsChromosome

        public boolean containsChromosome​(String chr)
        Specified by:
        containsChromosome in interface Index
        Parameters:
        chr - the chromosome (or contig) name
        Returns:
        true if we have an entry; false otherwise
      • getProperties

        public Map<String,​String> getProperties()
        No arbitrary properties in Tabix
        Specified by:
        getProperties in interface Index
        Returns:
        get the list of properties for this index. Returns null if no properties.
      • equalsIgnoreProperties

        public boolean equalsIgnoreProperties​(Object o)
        Description copied from interface: Index
        Returns true if this and obj are 'effectively' equivalent indices. Ignores the time stamp on the file, as this may not be the same for even identical indices
        Specified by:
        equalsIgnoreProperties in interface Index
        Returns:
      • write

        public void write​(Path tabixPath)
                   throws IOException
        Writes the index with BGZF.
        Specified by:
        write in interface Index
        Parameters:
        tabixPath - Where to write the index.
        Throws:
        IOException - if the index is unable to write to the specified path.
      • writeBasedOnFeaturePath

        public void writeBasedOnFeaturePath​(Path featurePath)
                                     throws IOException
        Writes to a path with appropriate name and directory based on feature path.
        Specified by:
        writeBasedOnFeaturePath in interface Index
        Parameters:
        featurePath - Path being indexed.
        Throws:
        IOException - if featureFile is not a normal file.
      • write

        public void write​(LittleEndianOutputStream los)
                   throws IOException
        Description copied from interface: Index
        all indexes are writable to disk
        Specified by:
        write in interface Index
        Parameters:
        los - It is assumes that caller has done appropriate buffering and BlockCompressedOutputStream wrapping. Caller should close output stream after invoking this method.
        Throws:
        IOException
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object