Class Downsampling


  • public class Downsampling
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int BASE_SAMPLING_LEVEL
      The base (down)sampling level determines the granularity at which we can down/upsample.
    • Constructor Summary

      Constructors 
      Constructor Description
      Downsampling()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static int getEffectiveIndexIntervalAfterIndex​(int index, int samplingLevel, int minIndexInterval)
      Calculates the effective index interval after the entry at `index` in an IndexSummary.
      static java.util.List<java.lang.Integer> getOriginalIndexes​(int samplingLevel)
      Returns a list that can be used to translate current index summary indexes to their original index before downsampling.
      static java.util.List<java.lang.Integer> getSamplingPattern​(int samplingLevel)
      Gets a list L of starting indices for downsampling rounds: the first round should start with the offset given by L[0], the second by the offset in L[1], etc.
      static int[] getStartPoints​(int currentSamplingLevel, int newSamplingLevel)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • BASE_SAMPLING_LEVEL

        public static final int BASE_SAMPLING_LEVEL
        The base (down)sampling level determines the granularity at which we can down/upsample. A higher number allows us to approximate more closely the ideal sampling. (It could also mean we do a lot of expensive almost-no-op resamplings from N to N-1, but the thresholds in IndexSummaryManager prevent that.) BSL must be a power of two in order to have good sampling patterns. This cannot be changed without rebuilding all index summaries at full sampling; for now we treat it as a constant.
        See Also:
        Constant Field Values
    • Constructor Detail

      • Downsampling

        public Downsampling()
    • Method Detail

      • getSamplingPattern

        public static java.util.List<java.lang.Integer> getSamplingPattern​(int samplingLevel)
        Gets a list L of starting indices for downsampling rounds: the first round should start with the offset given by L[0], the second by the offset in L[1], etc.
        Parameters:
        samplingLevel - the base sampling level
        Returns:
        A list of `samplingLevel` unique indices between 0 and `samplingLevel`
      • getOriginalIndexes

        public static java.util.List<java.lang.Integer> getOriginalIndexes​(int samplingLevel)
        Returns a list that can be used to translate current index summary indexes to their original index before downsampling. (This repeats every `samplingLevel`, so that's how many entries we return.) For example, if [0, 64] is returned, the current index summary entry at index 0 was originally at index 0, and the current index 1 was originally at index 64.
        Parameters:
        samplingLevel - the current sampling level for the index summary
        Returns:
        a list of original indexes for current summary entries
      • getEffectiveIndexIntervalAfterIndex

        public static int getEffectiveIndexIntervalAfterIndex​(int index,
                                                              int samplingLevel,
                                                              int minIndexInterval)
        Calculates the effective index interval after the entry at `index` in an IndexSummary. In other words, this returns the number of partitions in the primary on-disk index before the next partition that has an entry in the index summary. If samplingLevel == BASE_SAMPLING_LEVEL, this will be equal to the index interval.
        Parameters:
        index - an index into an IndexSummary
        samplingLevel - the current sampling level for that IndexSummary
        minIndexInterval - the min index interval (effective index interval at full sampling)
        Returns:
        the number of partitions before the next index summary entry, inclusive on one end
      • getStartPoints

        public static int[] getStartPoints​(int currentSamplingLevel,
                                           int newSamplingLevel)