Class MappedDataStoreFactory

  • All Implemented Interfaces:
    DataStoreFactory

    public class MappedDataStoreFactory
    extends java.lang.Object
    implements DataStoreFactory

    Builder for a data store that is backed by a java.nio.MappedByteBuffer. This has a limitation that the total size of the mapped buffer and therefore the hash table can not exceed 2 gigs.

    The data store file has the following structure.

     file: header, hash table, nameArray, nameTable, hitTable
    
     header:
       int hashTablePos, // byte offset in file
       int hitTablePos,  // byte offset in file
       int nameArrayPos, // byte offset in file
       int nameTablePos, // byte offset in file
       int wordLength,
       int serializedPackingLength,
       byte[] serializedPacking
    
       hash table:
         int hashTableLength,
         int[hashTableLength] hits // index into hitTable
    
      nameArray:
        int nameArrayLength,
        int[nameArrayLength] nameArray // byte offset into nameTable
    
      nameTable:
        int nameTableSize, // size in bytes
        (short nameLength, char[nameLength] name)[nameTableSize] names
    
      hitTable:
        int hitTableSize, // size in bytes
        hitTableRecord[hitTableSize] hits
    
      hitTableRecord:
        int hitCount,
        hitRecord[hitCount] hit
    
      hit:
        int seqIndex, // index into nameArray
        int offset    // offset into the sequence
     

    Author:
    Matthew Pocock
    • Constructor Detail

      • MappedDataStoreFactory

        public MappedDataStoreFactory()
    • Method Detail

      • getDataStore

        public DataStore getDataStore​(java.io.File storeFile)
                               throws java.io.IOException
        Description copied from interface: DataStoreFactory
        Get a pre-built data store associated with a file.
        Specified by:
        getDataStore in interface DataStoreFactory
        Parameters:
        storeFile - the File to map in as a data store
        Returns:
        the DataStore made by mapping the file
        Throws:
        java.io.IOException - if the file could not be mapped
      • buildDataStore

        public DataStore buildDataStore​(java.io.File storeFile,
                                        SequenceDB seqDB,
                                        Packing packing,
                                        int wordLength,
                                        int threshold)
                                 throws IllegalAlphabetException,
                                        java.io.IOException,
                                        BioException
        Description copied from interface: DataStoreFactory
        Build a new DataStore.
        Specified by:
        buildDataStore in interface DataStoreFactory
        Parameters:
        storeFile - the file to store the data store
        seqDB - the SequenceDB to store in the data store
        packing - the Packing used to bit-encode the sequences
        wordLength - the number of symbols per word
        threshold - the number of times a word must appear to be ignored
        Throws:
        IllegalAlphabetException - if the packing does not agree with the sequences
        BioException - if there is a problem building the data store
        java.io.IOException