Class FileBasedSparseDoubleDistance

  • All Implemented Interfaces:
    elki.distance.DBIDDistance, elki.distance.DBIDRangeDistance, elki.distance.Distance<elki.database.ids.DBID>

    public class FileBasedSparseDoubleDistance
    extends elki.distance.AbstractDBIDRangeDistance
    Distance function that is based on double distances given by a distance matrix of an external ASCII file.

    Note: parsing an ASCII file is rather expensive.

    See AsciiDistanceParser for the default input format.

    TODO: use a double[] instead of the hash map?

    Since:
    0.1
    Author:
    Elke Achtert, Erich Schubert
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  FileBasedSparseDoubleDistance.Par
      Parameterization class.
      • Nested classes/interfaces inherited from class elki.distance.AbstractDatabaseDistance

        elki.distance.AbstractDatabaseDistance.Instance<O extends java.lang.Object>
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private it.unimi.dsi.fastutil.longs.Long2DoubleOpenHashMap cache
      The distance cache
      protected double defaultDistance
      Distance to return when not defined otherwise.
      private static elki.logging.Logging LOG
      Class logger.
      private java.net.URI matrixfile
      Input file of distance matrix
      private int max
      Minimum and maximum IDs seen.
      private int min
      Minimum and maximum IDs seen.
      private DistanceParser parser
      Distance parser
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void checkRange​(elki.database.ids.DBIDRange range)  
      double distance​(int i1, int i2)  
      boolean equals​(java.lang.Object obj)  
      <O extends elki.database.ids.DBID>
      elki.database.query.distance.DistanceQuery<O>
      instantiate​(elki.database.relation.Relation<O> relation)  
      protected void loadCache​(int size, java.io.InputStream in)
      Fill cache from an input stream.
      protected static long makeKey​(int i1, int i2)
      Combine two integer ids into a long value.
      • Methods inherited from class elki.distance.AbstractDBIDRangeDistance

        distance, getInputTypeRestriction
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface elki.distance.Distance

        isMetric, isSquared, isSymmetric
    • Field Detail

      • LOG

        private static final elki.logging.Logging LOG
        Class logger.
      • cache

        private it.unimi.dsi.fastutil.longs.Long2DoubleOpenHashMap cache
        The distance cache
      • matrixfile

        private java.net.URI matrixfile
        Input file of distance matrix
      • min

        private int min
        Minimum and maximum IDs seen.
      • max

        private int max
        Minimum and maximum IDs seen.
      • defaultDistance

        protected double defaultDistance
        Distance to return when not defined otherwise.
    • Constructor Detail

      • FileBasedSparseDoubleDistance

        public FileBasedSparseDoubleDistance​(DistanceParser parser,
                                             java.net.URI matrixfile,
                                             double defaultDistance)
        Constructor.
        Parameters:
        parser - Parser
        matrixfile - input file
        defaultDistance - Default distance (when undefined)
    • Method Detail

      • instantiate

        public <O extends elki.database.ids.DBID> elki.database.query.distance.DistanceQuery<O> instantiate​(elki.database.relation.Relation<O> relation)
        Specified by:
        instantiate in interface elki.distance.Distance<elki.database.ids.DBID>
        Overrides:
        instantiate in class elki.distance.AbstractDBIDRangeDistance
      • distance

        public double distance​(int i1,
                               int i2)
      • loadCache

        protected void loadCache​(int size,
                                 java.io.InputStream in)
        Fill cache from an input stream.
        Parameters:
        size - Expected size
        in - Input stream
      • makeKey

        protected static final long makeKey​(int i1,
                                            int i2)
        Combine two integer ids into a long value.
        Parameters:
        i1 - First id
        i2 - Second id
        Returns:
        Combined value
      • checkRange

        public void checkRange​(elki.database.ids.DBIDRange range)
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object