Package elki.distance.external
Class FileBasedSparseFloatDistance
- java.lang.Object
-
- elki.distance.AbstractDatabaseDistance<elki.database.ids.DBID>
-
- elki.distance.AbstractDBIDRangeDistance
-
- elki.distance.external.FileBasedSparseFloatDistance
-
- All Implemented Interfaces:
elki.distance.DBIDDistance,elki.distance.DBIDRangeDistance,elki.distance.Distance<elki.database.ids.DBID>
public class FileBasedSparseFloatDistance extends elki.distance.AbstractDBIDRangeDistanceDistance function that is based on float distances given by a distance matrix of an external ASCII file.Note: parsing an ASCII file is rather expensive.
See
AsciiDistanceParserfor the default input format.TODO: use a
float[]instead of the hash map?- Since:
- 0.1
- Author:
- Elke Achtert, Erich Schubert
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFileBasedSparseFloatDistance.ParParameterization class.
-
Field Summary
Fields Modifier and Type Field Description private it.unimi.dsi.fastutil.longs.Long2FloatOpenHashMapcacheThe distance cacheprotected floatdefaultDistanceDistance to return when not defined otherwise.private static elki.logging.LoggingLOGClass logger.private java.net.URImatrixfileInput file of distance matrixprivate intmaxMinimum and maximum IDs seen.private intminMinimum and maximum IDs seen.private DistanceParserparserDistance parser
-
Constructor Summary
Constructors Constructor Description FileBasedSparseFloatDistance(DistanceParser parser, java.net.URI matrixfile, float defaultDistance)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckRange(elki.database.ids.DBIDRange range)doubledistance(int i1, int i2)booleanequals(java.lang.Object obj)<O extends elki.database.ids.DBID>
elki.database.query.distance.DistanceQuery<O>instantiate(elki.database.relation.Relation<O> relation)protected voidloadCache(int size, java.io.InputStream in)Fill cache from an input stream.protected static longmakeKey(int i1, int i2)Combine two integer ids into a long value.-
Methods inherited from class elki.distance.AbstractDBIDRangeDistance
distance, getInputTypeRestriction
-
-
-
-
Field Detail
-
LOG
private static final elki.logging.Logging LOG
Class logger.
-
cache
private it.unimi.dsi.fastutil.longs.Long2FloatOpenHashMap cache
The distance cache
-
parser
private DistanceParser parser
Distance parser
-
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 float defaultDistance
Distance to return when not defined otherwise.
-
-
Constructor Detail
-
FileBasedSparseFloatDistance
public FileBasedSparseFloatDistance(DistanceParser parser, java.net.URI matrixfile, float defaultDistance)
Constructor.- Parameters:
parser- Parsermatrixfile- input filedefaultDistance- 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:
instantiatein interfaceelki.distance.Distance<elki.database.ids.DBID>- Overrides:
instantiatein classelki.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 sizein- Input stream
-
makeKey
protected static final long makeKey(int i1, int i2)Combine two integer ids into a long value.- Parameters:
i1- First idi2- Second id- Returns:
- Combined value
-
checkRange
public void checkRange(elki.database.ids.DBIDRange range)
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
-