diff options
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction')
96 files changed, 309 insertions, 62 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDBIDRangeDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDBIDRangeDistanceFunction.java index b858f6dd..330f1f6a 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDBIDRangeDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDBIDRangeDistanceFunction.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * within a consecutive range. This is beneficial for external distances. * * @author Erich Schubert + * @since 0.7.0 */ public abstract class AbstractDBIDRangeDistanceFunction extends AbstractDatabaseDistanceFunction<DBID> implements DBIDRangeDistanceFunction { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDatabaseDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDatabaseDistanceFunction.java index 3bd107ca..851e7dc6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDatabaseDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractDatabaseDistanceFunction.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * Abstract super class for distance functions needing a database context. * * @author Elke Achtert + * @since 0.4.0 * * @apiviz.has AbstractDatabaseDistanceFunction.Instance * @apiviz.excludeSubtypes diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractIndexBasedDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractIndexBasedDistanceFunction.java index 73eed528..1676364e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractIndexBasedDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractIndexBasedDistanceFunction.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * Abstract super class for distance functions needing a database index. * * @author Elke Achtert + * @since 0.4.0 * * @apiviz.has AbstractIndexBasedDistanceFunction.Instance * @apiviz.composedOf IndexFactory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorDistanceFunction.java index b4de6fbf..56dd19ea 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorDistanceFunction.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.data.type.TypeUtil; * on number vectors and returning double values. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.excludeSubtypes diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorNorm.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorNorm.java index 59273fc5..7af85c0e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorNorm.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractNumberVectorNorm.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; * norms. * * @author Erich Schubert + * @since 0.2 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractPrimitiveDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractPrimitiveDistanceFunction.java index a19199b9..e06e2c5b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractPrimitiveDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractPrimitiveDistanceFunction.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * AbstractDistanceFunction provides some methods valid for any extending class. * * @author Arthur Zimek + * @since 0.4.0 * * @apiviz.excludeSubtypes * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialDistanceFunction.java index a36faa3f..e73cb7bc 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialDistanceFunction.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * distance functions easier. * * @author Erich Schubert + * @since 0.4.0 */ public abstract class AbstractSpatialDistanceFunction extends AbstractNumberVectorDistanceFunction implements SpatialPrimitiveDistanceFunction<NumberVector> { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialNorm.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialNorm.java index b8915ef1..bc3fc200 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialNorm.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/AbstractSpatialNorm.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * distance functions easier. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ArcCosineDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ArcCosineDistanceFunction.java index b8227739..a51544e7 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ArcCosineDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ArcCosineDistanceFunction.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * value, i.e., <code>arccos(<v1,v2>)</code>. * * @author Arthur Zimek + * @since 0.2 */ @Alias({ "arccos" }) public class ArcCosineDistanceFunction extends AbstractSpatialDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/BrayCurtisDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/BrayCurtisDistanceFunction.java index 46770514..dafe9c65 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/BrayCurtisDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/BrayCurtisDistanceFunction.java @@ -67,6 +67,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * TODO: add a version optimized for sparse vectors / binary data. * * @author Erich Schubert + * @since 0.4.0 */ @Alias({ "bray-curtis", "braycurtis", "sorensen", "dice", "sorensen-dice" }) @Reference(authors = "J. R. Bray and J. T. Curtis", title = "An ordination of the upland forest communities of southern Wisconsin", booktitle = "Ecological monographs 27.4", url = "http://dx.doi.org/10.2307/1942268") diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CanberraDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CanberraDistanceFunction.java index 530ee70d..f373e2e1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CanberraDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CanberraDistanceFunction.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "G. N. Lance, W. T. Williams", // title = "Computer programs for hierarchical polythetic classification (similarity analyses)", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ClarkDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ClarkDistanceFunction.java index 128d7e80..56f7de86 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ClarkDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/ClarkDistanceFunction.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "M.-M. Deza and E. Deza", title = "Dictionary of distances", booktitle = "Dictionary of distances") public class ClarkDistanceFunction extends AbstractSpatialDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CosineDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CosineDistanceFunction.java index b0f55abd..ec9a9bf6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CosineDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/CosineDistanceFunction.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * <code>1-(cosine similarity)</code>. * * @author Arthur Zimek + * @since 0.2 */ @Alias({ "cosine" }) public class CosineDistanceFunction extends AbstractSpatialDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDDistanceFunction.java index 4a1803da..8f3ee417 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDDistanceFunction.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Example: external precomputed distances * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses DBID oneway - - defined on diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDRangeDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDRangeDistanceFunction.java index 23284d1a..6c121ce5 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDRangeDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DBIDRangeDistanceFunction.java @@ -1,5 +1,7 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction; +import de.lmu.ifi.dbs.elki.database.ids.DBIDRange; + /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures @@ -34,6 +36,7 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction; * Example: external precomputed distances * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses de.lmu.ifi.dbs.elki.database.ids.DBIDRange oneway - - defined on @@ -47,4 +50,12 @@ public interface DBIDRangeDistanceFunction extends DBIDDistanceFunction { * @return Distance */ double distance(int i1, int i2); + + /** + * Validate the range of DBIDs to use. This will log a warning if an obvious + * mismatch was found. + * + * @param range DBID range + */ + void checkRange(DBIDRange range); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DistanceFunction.java index d53c9e26..375083d1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/DistanceFunction.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * Base interface for any kind of distances. * * @author Erich Schubert + * @since 0.2 * * @param <O> Object type * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/IndexBasedDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/IndexBasedDistanceFunction.java index 8b41f956..9e24c934 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/IndexBasedDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/IndexBasedDistanceFunction.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; * Distance function relying on an index (such as preprocessed neighborhoods). * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.stereotype factory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Kulczynski1DistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Kulczynski1DistanceFunction.java index 2baa2466..da8ea270 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Kulczynski1DistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Kulczynski1DistanceFunction.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "M.-M. Deza and E. Deza", title = "Dictionary of distances", booktitle = "Dictionary of distances") public class Kulczynski1DistanceFunction extends AbstractSpatialDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/LorentzianDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/LorentzianDistanceFunction.java index cbb193ac..fdf6de66 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/LorentzianDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/LorentzianDistanceFunction.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "M.-M. Deza and E. Deza", title = "Dictionary of distances", booktitle = "Dictionary of distances") public class LorentzianDistanceFunction extends AbstractSpatialNorm { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/MatrixWeightedDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/MatrixWeightedDistanceFunction.java index 40b8b900..006e2bd0 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/MatrixWeightedDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/MatrixWeightedDistanceFunction.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector; * Weighted distance for feature vectors. * * @author Elke Achtert + * @since 0.2 */ // TODO: Factory with parameterizable weight matrix? public class MatrixWeightedDistanceFunction extends AbstractNumberVectorDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Norm.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Norm.java index f25c91be..ba7724a6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Norm.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/Norm.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction; * Abstract interface for a mathematical norm. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/NumberVectorDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/NumberVectorDistanceFunction.java index 3b6021e0..7840d0b8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/NumberVectorDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/NumberVectorDistanceFunction.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; * vectors. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/PrimitiveDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/PrimitiveDistanceFunction.java index 2a3ae0c1..0995e7b9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/PrimitiveDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/PrimitiveDistanceFunction.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.data.type.SimpleTypeInformation; * Primitive distance function that is defined on some kind of object. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/RandomStableDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/RandomStableDistanceFunction.java index e1eafbad..d6ced169 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/RandomStableDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/RandomStableDistanceFunction.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * metrical. * * @author Erich Schubert + * @since 0.4.0 */ public class RandomStableDistanceFunction extends AbstractDatabaseDistanceFunction<DBID> implements DBIDDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SharedNearestNeighborJaccardDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SharedNearestNeighborJaccardDistanceFunction.java index c11a3448..691a7373 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SharedNearestNeighborJaccardDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SharedNearestNeighborJaccardDistanceFunction.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz * coefficient, which is a proper distance metric. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses * de.lmu.ifi.dbs.elki.index.preprocessed.snn.SharedNearestNeighborIndex diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SpatialPrimitiveDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SpatialPrimitiveDistanceFunction.java index 2611c36f..d8d246e1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SpatialPrimitiveDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/SpatialPrimitiveDistanceFunction.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * API for a spatial primitive distance function. * * @author Erich Schubert + * @since 0.4.0 * * @param <V> Vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedCanberraDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedCanberraDistanceFunction.java index bd4fb5db..8c2b382e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedCanberraDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedCanberraDistanceFunction.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * Weighted Canberra distance function, a variation of Manhattan distance. * * @author Erich Schubert + * @since 0.4.0 */ public class WeightedCanberraDistanceFunction extends AbstractSpatialDistanceFunction implements WeightedNumberVectorDistanceFunction<NumberVector> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedNumberVectorDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedNumberVectorDistanceFunction.java index 682b394a..2890292b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedNumberVectorDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/WeightedNumberVectorDistanceFunction.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; * Distance functions where each dimension is assigned a weight. * * @author Erich Schubert + * @since 0.4.0 * * @param <V> Vector type, usually NumberVector or above. */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/AbstractSimilarityAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/AbstractSimilarityAdapter.java index f77c4927..31138c4d 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/AbstractSimilarityAdapter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/AbstractSimilarityAdapter.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * equation. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has Instance * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/ArccosSimilarityAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/ArccosSimilarityAdapter.java index 4931c4e8..87cadf1a 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/ArccosSimilarityAdapter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/ArccosSimilarityAdapter.java @@ -28,17 +28,20 @@ import de.lmu.ifi.dbs.elki.database.query.similarity.SimilarityQuery; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction; import de.lmu.ifi.dbs.elki.distance.similarityfunction.NormalizedSimilarityFunction; +import de.lmu.ifi.dbs.elki.utilities.Alias; /** * Adapter from a normalized similarity function to a distance function using * <code>arccos(sim)</code>. * * @author Erich Schubert + * @since 0.2 * * @apiviz.has Instance * * @param <O> Object class to process. */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.adapter.SimilarityAdapterArccos") public class ArccosSimilarityAdapter<O> extends AbstractSimilarityAdapter<O> { /** * Constructor. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LinearAdapterLinear.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LinearAdapterLinear.java index 63b681e9..4d1f76c4 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LinearAdapterLinear.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LinearAdapterLinear.java @@ -28,17 +28,20 @@ import de.lmu.ifi.dbs.elki.database.query.similarity.SimilarityQuery; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction; import de.lmu.ifi.dbs.elki.distance.similarityfunction.NormalizedSimilarityFunction; +import de.lmu.ifi.dbs.elki.utilities.Alias; /** * Adapter from a normalized similarity function to a distance function using * <code>1 - sim</code>. * * @author Erich Schubert + * @since 0.2 * * @apiviz.has Instance * * @param <O> Object class to process. */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.adapter.SimilarityAdapterLinear") public class LinearAdapterLinear<O> extends AbstractSimilarityAdapter<O> { /** * Constructor. @@ -98,4 +101,4 @@ public class LinearAdapterLinear<O> extends AbstractSimilarityAdapter<O> { return NORMALIZED_SIMILARITY; } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LnSimilarityAdapter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LnSimilarityAdapter.java index f3002e1a..1ccc3749 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LnSimilarityAdapter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/adapter/LnSimilarityAdapter.java @@ -28,17 +28,20 @@ import de.lmu.ifi.dbs.elki.database.query.similarity.SimilarityQuery; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction; import de.lmu.ifi.dbs.elki.distance.similarityfunction.NormalizedSimilarityFunction; +import de.lmu.ifi.dbs.elki.utilities.Alias; /** * Adapter from a normalized similarity function to a distance function using * <code>-log(sim)</code>. * * @author Erich Schubert + * @since 0.2 * * @apiviz.has Instance * * @param <O> object class to process. */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.adapter.SimilarityAdapterLn") public class LnSimilarityAdapter<O> extends AbstractSimilarityAdapter<O> { /** * Constructor. @@ -98,4 +101,4 @@ public class LnSimilarityAdapter<O> extends AbstractSimilarityAdapter<O> { return NORMALIZED_SIMILARITY; } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HSBHistogramQuadraticDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HSBHistogramQuadraticDistanceFunction.java index ec5e4a90..48383915 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HSBHistogramQuadraticDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HSBHistogramQuadraticDistanceFunction.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntListParameter; * </p> * * @author Erich Schubert + * @since 0.3 */ @Reference(authors = "J. R. Smith, S. F. Chang", title = "VisualSEEk: a fully automated content-based image query system", booktitle = "Proceedings of the fourth ACM international conference on Multimedia 1997", url = "http://dx.doi.org/10.1145/244130.244151") public class HSBHistogramQuadraticDistanceFunction extends MatrixWeightedDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HistogramIntersectionDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HistogramIntersectionDistanceFunction.java index e4141684..ba5e129b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HistogramIntersectionDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/HistogramIntersectionDistanceFunction.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * International Journal of Computer Vision, 7(1), 32, 1991 * * @author Erich Schubert + * @since 0.3 */ @Title("Color histogram intersection distance") @Description("Distance function for color histograms that emphasizes 'strong' bins.") diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/RGBHistogramQuadraticDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/RGBHistogramQuadraticDistanceFunction.java index 70935d28..01540f98 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/RGBHistogramQuadraticDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/colorhistogram/RGBHistogramQuadraticDistanceFunction.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * </p> * * @author Erich Schubert + * @since 0.3 */ @Reference(authors = "J. Hafner, H. S.Sawhney, W. Equits, M. Flickner, W. Niblack", title = "Efficient Color Histogram Indexing for Quadratic Form Distance Functions", booktitle = "IEEE Trans. on Pattern Analysis and Machine Intelligence, Vol. 17, No. 7, July 1995", url = "http://dx.doi.org/10.1109/34.391417") public class RGBHistogramQuadraticDistanceFunction extends MatrixWeightedDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsolutePearsonCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsolutePearsonCorrelationDistanceFunction.java index c0033742..df2c3018 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsolutePearsonCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsolutePearsonCorrelationDistanceFunction.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * uncorrelated. * * @author Erich Schubert + * @since 0.3 */ public class AbsolutePearsonCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsoluteUncenteredCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsoluteUncenteredCorrelationDistanceFunction.java index 50321129..b37719db 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsoluteUncenteredCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/AbsoluteUncenteredCorrelationDistanceFunction.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * but uses a fixed mean of 0 instead of the sample mean. * * @author Erich Schubert + * @since 0.4.0 */ public class AbsoluteUncenteredCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/PearsonCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/PearsonCorrelationDistanceFunction.java index 0a0c6dc9..0bcafa43 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/PearsonCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/PearsonCorrelationDistanceFunction.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * will be intermediate (around 1). * * @author Arthur Zimek + * @since 0.3 */ public class PearsonCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredPearsonCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredPearsonCorrelationDistanceFunction.java index ea1cede4..f98235d4 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredPearsonCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredPearsonCorrelationDistanceFunction.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * 1). * * @author Arthur Zimek + * @since 0.3 */ public class SquaredPearsonCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredUncenteredCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredUncenteredCorrelationDistanceFunction.java index 5f39b0ad..0828c82a 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredUncenteredCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/SquaredUncenteredCorrelationDistanceFunction.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * but uses a fixed mean of 0 instead of the sample mean. * * @author Erich Schubert + * @since 0.4.0 */ public class SquaredUncenteredCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/UncenteredCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/UncenteredCorrelationDistanceFunction.java index 83bb7e7d..e5f6dd18 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/UncenteredCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/UncenteredCorrelationDistanceFunction.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * uses a fixed mean of 0 instead of the sample mean. * * @author Erich Schubert + * @since 0.3 */ public class UncenteredCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedPearsonCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedPearsonCorrelationDistanceFunction.java index 60ed0638..70c8f34e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedPearsonCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedPearsonCorrelationDistanceFunction.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * * @author Arthur Zimek * @author Erich Schubert + * @since 0.3 */ public class WeightedPearsonCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction implements WeightedNumberVectorDistanceFunction<NumberVector> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedSquaredPearsonCorrelationDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedSquaredPearsonCorrelationDistanceFunction.java index 4ec94227..108f8f97 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedSquaredPearsonCorrelationDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/correlation/WeightedSquaredPearsonCorrelationDistanceFunction.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * * @author Arthur Zimek * @author Erich Schubert + * @since 0.3 */ public class WeightedSquaredPearsonCorrelationDistanceFunction extends AbstractNumberVectorDistanceFunction implements WeightedNumberVectorDistanceFunction<NumberVector> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/AsciiDistanceParser.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/AsciiDistanceParser.java index 2122f43b..61552730 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/AsciiDistanceParser.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/AsciiDistanceParser.java @@ -29,6 +29,7 @@ import java.io.InputStream; import de.lmu.ifi.dbs.elki.datasource.parser.CSVReaderFormat; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.logging.progress.IndefiniteProgress; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil; import de.lmu.ifi.dbs.elki.utilities.documentation.Description; import de.lmu.ifi.dbs.elki.utilities.documentation.Title; @@ -41,11 +42,12 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz * Parser for parsing one distance value per line. * * A line must have the following format: {@code id1 id2 distanceValue}, where - * id1 and id2 are integers representing the two ids belonging to the distance - * value. Lines starting with "#" will be ignored. + * id1 and id2 are integers starting at 0 representing the two ids belonging to + * the distance value. Lines starting with "#" will be ignored. * * @author Elke Achtert * @author Erich Schubert + * @since 0.2 * * @apiviz.uses CSVReaderFormat * @apiviz.composedOf TokenizedReader @@ -54,8 +56,11 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz */ @Title("Number Distance Parser") @Description("Parser for the following line format:\n" // - + "id1 id2 distanceValue, where id1 and is2 are integers representing the two ids belonging to the distance value.\n" // - + "The ids and the distance value are separated by whitespace. Empty lines and lines beginning with \"#\" will be ignored.") ++ "id1 id2 distanceValue, where id1 and is2 are integers starting at 0 representing the two ids belonging to the distance value.\n" // ++ "The ids and the distance value are separated by whitespace. Empty lines and lines beginning with \"#\" will be ignored.") +@Alias({ "de.lmu.ifi.dbs.elki.datasource.parser.NumberDistanceParser", // +"de.lmu.ifi.dbs.elki.distance.distancefunction.external.NumberDistanceParser", // +"de.lmu.ifi.dbs.elki.parser.NumberDistanceParser" }) public class AsciiDistanceParser implements DistanceParser { /** * The logger for this class. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedDoubleDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedDoubleDistanceFunction.java index 6bfd6df0..5ad01b72 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedDoubleDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedDoubleDistanceFunction.java @@ -26,7 +26,9 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; import java.io.File; import java.io.IOException; +import de.lmu.ifi.dbs.elki.database.ids.DBIDRange; import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractDBIDRangeDistanceFunction; +import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.persistent.OnDiskUpperTriangleMatrix; import de.lmu.ifi.dbs.elki.utilities.documentation.Description; import de.lmu.ifi.dbs.elki.utilities.documentation.Title; @@ -42,11 +44,15 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; * matrix of an external binary matrix file. * * @author Erich Schubert + * @since 0.2 */ @Title("File based double distance for database objects.") @Description("Loads double distance values from an external matrix.") public class DiskCacheBasedDoubleDistanceFunction extends AbstractDBIDRangeDistanceFunction { - // TODO: constructor with file. + /** + * Class logger. + */ + private static final Logging LOG = Logging.getLogger(DiskCacheBasedDoubleDistanceFunction.class); /** * Magic to identify double cache matrices @@ -68,6 +74,17 @@ public class DiskCacheBasedDoubleDistanceFunction extends AbstractDBIDRangeDista this.cache = cache; } + /** + * Constructor. + * + * @param matrixfile File name + * @throws IOException + */ + public DiskCacheBasedDoubleDistanceFunction(File matrixfile) throws IOException { + super(); + this.cache = new OnDiskUpperTriangleMatrix(matrixfile, DOUBLE_CACHE_MAGIC, 0, ByteArrayUtil.SIZE_DOUBLE, false); + } + @Override public double distance(int i1, int i2) { // the smaller id is the first key @@ -84,6 +101,13 @@ public class DiskCacheBasedDoubleDistanceFunction extends AbstractDBIDRangeDista } @Override + public void checkRange(DBIDRange range) { + if(cache.getMatrixSize() < range.size()) { + LOG.warning("Distance matrix has size " + cache.getMatrixSize() + " but range has size: " + range.size()); + } + } + + @Override public boolean equals(Object obj) { if(obj == null) { return false; diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedFloatDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedFloatDistanceFunction.java index de8d96b4..b6731a30 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedFloatDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DiskCacheBasedFloatDistanceFunction.java @@ -26,7 +26,9 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; import java.io.File; import java.io.IOException; +import de.lmu.ifi.dbs.elki.database.ids.DBIDRange; import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractDBIDRangeDistanceFunction; +import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.persistent.OnDiskUpperTriangleMatrix; import de.lmu.ifi.dbs.elki.utilities.documentation.Description; import de.lmu.ifi.dbs.elki.utilities.documentation.Title; @@ -41,11 +43,15 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; * of an external binary matrix file. * * @author Erich Schubert + * @since 0.2 */ @Title("File based float distance for database objects.") @Description("Loads float distance values from an external matrix.") public class DiskCacheBasedFloatDistanceFunction extends AbstractDBIDRangeDistanceFunction { - // TODO: constructor with file. + /** + * Class logger. + */ + private static final Logging LOG = Logging.getLogger(DiskCacheBasedFloatDistanceFunction.class); /** * Magic to identify double cache matrices @@ -67,6 +73,17 @@ public class DiskCacheBasedFloatDistanceFunction extends AbstractDBIDRangeDistan this.cache = cache; } + /** + * Constructor. + * + * @param matrixfile File name + * @throws IOException + */ + public DiskCacheBasedFloatDistanceFunction(File matrixfile) throws IOException { + super(); + this.cache = new OnDiskUpperTriangleMatrix(matrixfile, FLOAT_CACHE_MAGIC, 0, ByteArrayUtil.SIZE_FLOAT, false); + } + @Override public double distance(int i1, int i2) { // the smaller id is the first key @@ -94,6 +111,13 @@ public class DiskCacheBasedFloatDistanceFunction extends AbstractDBIDRangeDistan return this.cache.equals(other.cache); } + @Override + public void checkRange(DBIDRange range) { + if(cache.getMatrixSize() < range.size()) { + LOG.warning("Distance matrix has size " + cache.getMatrixSize() + " but range has size: " + range.size()); + } + } + /** * Parameterization class. * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceCacheWriter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceCacheWriter.java index cd73b73e..3d83db66 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceCacheWriter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceCacheWriter.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; * Interface to plug in the cache storage into the parser. * * @author Erich Schubert + * @since 0.4.0 */ public interface DistanceCacheWriter { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceParser.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceParser.java index 28234d75..d495427b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceParser.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/DistanceParser.java @@ -30,6 +30,7 @@ import java.io.InputStream; * InputStream. * * @author Arthur Zimek + * @since 0.2 * * @apiviz.uses DistanceCacheWriter oneway - - «create» */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedDoubleDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedDoubleDistanceFunction.java index 4f872766..cbbf7fa2 100755 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedDoubleDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedDoubleDistanceFunction.java @@ -1,5 +1,28 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +import de.lmu.ifi.dbs.elki.database.ids.DBID; +import de.lmu.ifi.dbs.elki.database.ids.DBIDRange; +import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery; +import de.lmu.ifi.dbs.elki.database.relation.Relation; +import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractDBIDRangeDistanceFunction; +import de.lmu.ifi.dbs.elki.logging.Logging; +import de.lmu.ifi.dbs.elki.utilities.FileUtil; +import de.lmu.ifi.dbs.elki.utilities.documentation.Description; +import de.lmu.ifi.dbs.elki.utilities.documentation.Title; +import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; +import gnu.trove.impl.Constants; + /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures @@ -26,26 +49,6 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; import gnu.trove.map.TLongDoubleMap; import gnu.trove.map.hash.TLongDoubleHashMap; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; - -import de.lmu.ifi.dbs.elki.database.ids.DBID; -import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery; -import de.lmu.ifi.dbs.elki.database.relation.Relation; -import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractDBIDRangeDistanceFunction; -import de.lmu.ifi.dbs.elki.utilities.FileUtil; -import de.lmu.ifi.dbs.elki.utilities.documentation.Description; -import de.lmu.ifi.dbs.elki.utilities.documentation.Title; -import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; - /** * Distance function that is based on double distances given by a distance * matrix of an external ASCII file. @@ -58,6 +61,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * * @author Elke Achtert * @author Erich Schubert + * @since 0.2 * * @apiviz.composedOf DistanceCacheWriter */ @@ -65,6 +69,11 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; @Description("Loads double distance values from an external text file.") public class FileBasedDoubleDistanceFunction extends AbstractDBIDRangeDistanceFunction { /** + * Class logger. + */ + private static final Logging LOG = Logging.getLogger(FileBasedDoubleDistanceFunction.class); + + /** * The distance cache */ private TLongDoubleMap cache; @@ -80,6 +89,11 @@ public class FileBasedDoubleDistanceFunction extends AbstractDBIDRangeDistanceFu private File matrixfile; /** + * Minimum and maximum IDs seen. + */ + private int min, max; + + /** * Constructor. * * @param parser Parser @@ -106,18 +120,25 @@ public class FileBasedDoubleDistanceFunction extends AbstractDBIDRangeDistanceFu @Override public double distance(int i1, int i2) { - if(i1 == i2) { - return 0.; - } - return cache.get(makeKey(i1, i2)); + return (i1 == i2) ? 0. : cache.get(makeKey(i1 + min, i2 + min)); } private void loadCache(DistanceParser parser, File matrixfile) throws IOException { InputStream in = new BufferedInputStream(FileUtil.tryGzipInput(new FileInputStream(matrixfile))); - cache = new TLongDoubleHashMap(); + cache = new TLongDoubleHashMap(Constants.DEFAULT_CAPACITY, Constants.DEFAULT_LOAD_FACTOR, -1L, Double.POSITIVE_INFINITY); + min = Integer.MAX_VALUE; + max = Integer.MIN_VALUE; parser.parse(in, new DistanceCacheWriter() { @Override public void put(int id1, int id2, double distance) { + if(id1 < id2) { + min = id1 < min ? id1 : min; + max = id2 > max ? id2 : max; + } + else { + min = id2 < min ? id2 : min; + max = id1 > max ? id1 : max; + } cache.put(makeKey(id1, id2), distance); } @@ -126,6 +147,9 @@ public class FileBasedDoubleDistanceFunction extends AbstractDBIDRangeDistanceFu return cache.containsKey(makeKey(id1, id2)); } }); + if(min != 0) { + LOG.verbose("Distance matrix is supposed to be 0-indexed. Choosing offset " + min + " to compensate."); + } } /** @@ -142,6 +166,14 @@ public class FileBasedDoubleDistanceFunction extends AbstractDBIDRangeDistanceFu } @Override + public void checkRange(DBIDRange range) { + final int size = max + 1 - min; + if(size < range.size()) { + LOG.warning("Distance matrix has size " + size + " but range has size: " + range.size()); + } + } + + @Override public boolean equals(Object obj) { if(obj == null) { return false; diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedFloatDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedFloatDistanceFunction.java index d14afb5d..51ae874e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedFloatDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/external/FileBasedFloatDistanceFunction.java @@ -1,5 +1,27 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +import de.lmu.ifi.dbs.elki.database.ids.DBID; +import de.lmu.ifi.dbs.elki.database.ids.DBIDRange; +import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery; +import de.lmu.ifi.dbs.elki.database.relation.Relation; +import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractDBIDRangeDistanceFunction; +import de.lmu.ifi.dbs.elki.logging.Logging; +import de.lmu.ifi.dbs.elki.utilities.FileUtil; +import de.lmu.ifi.dbs.elki.utilities.documentation.Description; +import de.lmu.ifi.dbs.elki.utilities.documentation.Title; +import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; +import gnu.trove.impl.Constants; + /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures @@ -26,25 +48,6 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.external; import gnu.trove.map.TLongFloatMap; import gnu.trove.map.hash.TLongFloatHashMap; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; - -import de.lmu.ifi.dbs.elki.database.ids.DBID; -import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery; -import de.lmu.ifi.dbs.elki.database.relation.Relation; -import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractDBIDRangeDistanceFunction; -import de.lmu.ifi.dbs.elki.utilities.FileUtil; -import de.lmu.ifi.dbs.elki.utilities.documentation.Description; -import de.lmu.ifi.dbs.elki.utilities.documentation.Title; -import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; - /** * Distance function that is based on float distances given by a distance matrix * of an external ASCII file. @@ -57,6 +60,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * * @author Elke Achtert * @author Erich Schubert + * @since 0.2 * * @apiviz.composedOf DistanceCacheWriter */ @@ -64,6 +68,11 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; @Description("Loads float distance values from an external text file.") public class FileBasedFloatDistanceFunction extends AbstractDBIDRangeDistanceFunction { /** + * Class logger. + */ + private static final Logging LOG = Logging.getLogger(FileBasedFloatDistanceFunction.class); + + /** * The distance cache */ private TLongFloatMap cache; @@ -79,6 +88,11 @@ public class FileBasedFloatDistanceFunction extends AbstractDBIDRangeDistanceFun private File matrixfile; /** + * Minimum and maximum IDs seen. + */ + private int min, max; + + /** * Constructor. * * @param parser Parser @@ -105,15 +119,25 @@ public class FileBasedFloatDistanceFunction extends AbstractDBIDRangeDistanceFun @Override public double distance(int i1, int i2) { - return (i1 == i2) ? 0. : cache.get(makeKey(i1, i2)); + return (i1 == i2) ? 0. : cache.get(makeKey(i1 + min, i2 + min)); } private void loadCache(DistanceParser parser, File matrixfile) throws IOException { InputStream in = new BufferedInputStream(FileUtil.tryGzipInput(new FileInputStream(matrixfile))); - cache = new TLongFloatHashMap(); + cache = new TLongFloatHashMap(Constants.DEFAULT_CAPACITY, Constants.DEFAULT_LOAD_FACTOR, -1L, Float.POSITIVE_INFINITY); + min = Integer.MAX_VALUE; + max = Integer.MIN_VALUE; parser.parse(in, new DistanceCacheWriter() { @Override public void put(int id1, int id2, double distance) { + if(id1 < id2) { + min = id1 < min ? id1 : min; + max = id2 > max ? id2 : max; + } + else { + min = id2 < min ? id2 : min; + max = id1 > max ? id1 : max; + } cache.put(makeKey(id1, id2), (float) distance); } @@ -122,6 +146,9 @@ public class FileBasedFloatDistanceFunction extends AbstractDBIDRangeDistanceFun return cache.containsKey(makeKey(id1, id2)); } }); + if(min != 0) { + LOG.verbose("Distance matrix is supposed to be 0-indexed. Choosing offset " + min + " to compensate."); + } } /** @@ -138,6 +165,14 @@ public class FileBasedFloatDistanceFunction extends AbstractDBIDRangeDistanceFun } @Override + public void checkRange(DBIDRange range) { + final int size = max + 1 - min; + if(size < range.size()) { + LOG.warning("Distance matrix has size " + size + " but range has size: " + range.size()); + } + } + + @Override public boolean equals(Object obj) { if(obj == null) { return false; diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/DimensionSelectingLatLngDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/DimensionSelectingLatLngDistanceFunction.java index 203e9e1c..8e8f9310 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/DimensionSelectingLatLngDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/DimensionSelectingLatLngDistanceFunction.java @@ -56,6 +56,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * </p> * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf EarthModel */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LatLngDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LatLngDistanceFunction.java index 2ccb13ec..b7528a41 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LatLngDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LatLngDistanceFunction.java @@ -52,6 +52,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * </p> * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf EarthModel */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LngLatDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LngLatDistanceFunction.java index 2e1f0c13..faf541a1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LngLatDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/geo/LngLatDistanceFunction.java @@ -52,6 +52,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * </p> * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf EarthModel */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/HistogramMatchDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/HistogramMatchDistanceFunction.java index 089460f3..cd1d0be5 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/HistogramMatchDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/HistogramMatchDistanceFunction.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "L.N. Vaserstein", // title = "Markov processes over denumerable products of spaces describing large systems of automata", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/KolmogorovSmirnovDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/KolmogorovSmirnovDistanceFunction.java index a078eae3..7645e5fd 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/KolmogorovSmirnovDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/histogram/KolmogorovSmirnovDistanceFunction.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * i.e. they should be some 1-dimensional histogram. * * @author Erich Schubert + * @since 0.4.0 */ public class KolmogorovSmirnovDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/EuclideanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/EuclideanDistanceFunction.java index 422ea5d0..d17756f9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/EuclideanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/EuclideanDistanceFunction.java @@ -32,8 +32,10 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * Euclidean distance for {@link NumberVector}s. * * @author Arthur Zimek + * @since 0.2 */ -@Alias({ "euclidean", "euclid", "l2", "EuclideanDistanceFunction", "de.lmu.ifi.dbs.elki.distance.distancefunction.EuclideanDistanceFunction" }) +@Alias({ "euclidean", "euclid", "l2", // +"de.lmu.ifi.dbs.elki.distance.distancefunction.EuclideanDistanceFunction" }) public class EuclideanDistanceFunction extends LPIntegerNormDistanceFunction { /** * Static instance. Use this! diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPIntegerNormDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPIntegerNormDistanceFunction.java index 055e96cf..56d03b41 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPIntegerNormDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPIntegerNormDistanceFunction.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * machine version. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPNormDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPNormDistanceFunction.java index 88b5edc5..aa8b9e80 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPNormDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/LPNormDistanceFunction.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * LP-Norm for {@link NumberVector}s. * * @author Arthur Zimek + * @since 0.2 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/ManhattanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/ManhattanDistanceFunction.java index f0562aa0..f82514ac 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/ManhattanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/ManhattanDistanceFunction.java @@ -32,8 +32,10 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * Manhattan distance for {@link NumberVector}s. * * @author Arthur Zimek + * @since 0.2 */ -@Alias({ "taxicab", "cityblock", "l1", "ManhattanDistanceFunction", "de.lmu.ifi.dbs.elki.distance.distancefunction.ManhattanDistanceFunction" }) +@Alias({ "taxicab", "cityblock", "l1", // +"de.lmu.ifi.dbs.elki.distance.distancefunction.ManhattanDistanceFunction" }) public class ManhattanDistanceFunction extends LPIntegerNormDistanceFunction { /** * The static instance to use. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MaximumDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MaximumDistanceFunction.java index 84c1e7a2..dce6a67e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MaximumDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MaximumDistanceFunction.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * Maximum distance for {@link NumberVector}s. * * @author Erich Schubert + * @since 0.3 */ @Alias({ "maximum", "max", "chebyshev", "de.lmu.ifi.dbs.elki.distance.distancefunction.MaximumDistanceFunction" }) public class MaximumDistanceFunction extends LPNormDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java index 1d218718..3ce7da42 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * Maximum distance for {@link NumberVector}s. * * @author Erich Schubert + * @since 0.3 */ @Alias({ "minimum", "min", "de.lmu.ifi.dbs.elki.distance.distancefunction.MinimumDistanceFunction" }) public class MinimumDistanceFunction extends AbstractSpatialNorm { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseEuclideanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseEuclideanDistanceFunction.java index b6085f9a..91960751 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseEuclideanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseEuclideanDistanceFunction.java @@ -24,13 +24,16 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski; */ import de.lmu.ifi.dbs.elki.data.SparseNumberVector; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; /** * Euclidean distance function, optimized for {@link SparseNumberVector}s. * * @author Erich Schubert + * @since 0.5.0 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.SparseEuclideanDistanceFunction") public class SparseEuclideanDistanceFunction extends SparseLPNormDistanceFunction { /** * Static instance diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseLPNormDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseLPNormDistanceFunction.java index 28e3e33e..97ffe515 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseLPNormDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseLPNormDistanceFunction.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.data.type.SimpleTypeInformation; import de.lmu.ifi.dbs.elki.data.type.TypeUtil; import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractPrimitiveDistanceFunction; import de.lmu.ifi.dbs.elki.distance.distancefunction.Norm; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; @@ -37,8 +38,10 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * LP-Norm, optimized for {@link SparseNumberVector}s. * * @author Erich Schubert + * @since 0.5.0 */ // TODO: implement SpatialDistanceFunction +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.SparseLPNormDistanceFunction") public class SparseLPNormDistanceFunction extends AbstractPrimitiveDistanceFunction<SparseNumberVector> implements Norm<SparseNumberVector> { /** * P parameter and its inverse. @@ -153,4 +156,4 @@ public class SparseLPNormDistanceFunction extends AbstractPrimitiveDistanceFunct return new SparseLPNormDistanceFunction(p); } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseManhattanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseManhattanDistanceFunction.java index ffb6bdfc..a83a0ac4 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseManhattanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseManhattanDistanceFunction.java @@ -24,13 +24,16 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski; */ import de.lmu.ifi.dbs.elki.data.SparseNumberVector; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; /** * Manhattan distance, optimized for {@link SparseNumberVector}s. * * @author Erich Schubert + * @since 0.5.0 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.SparseManhattanDistanceFunction") public class SparseManhattanDistanceFunction extends SparseLPNormDistanceFunction { /** * Static instance @@ -112,4 +115,4 @@ public class SparseManhattanDistanceFunction extends SparseLPNormDistanceFunctio return SparseManhattanDistanceFunction.STATIC; } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseMaximumDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseMaximumDistanceFunction.java index 237453c8..5a33c6aa 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseMaximumDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SparseMaximumDistanceFunction.java @@ -23,13 +23,16 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski; along with this program. If not, see <http://www.gnu.org/licenses/>. */ import de.lmu.ifi.dbs.elki.data.SparseNumberVector; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; /** * Maximum distance, optimized for {@link SparseNumberVector}s. * * @author Erich Schubert + * @since 0.5.0 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.SparseMaximumDistanceFunction") public class SparseMaximumDistanceFunction extends SparseLPNormDistanceFunction { /** * Static instance @@ -123,4 +126,4 @@ public class SparseMaximumDistanceFunction extends SparseLPNormDistanceFunction return SparseMaximumDistanceFunction.STATIC; } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SquaredEuclideanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SquaredEuclideanDistanceFunction.java index 387dfa86..7714282c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SquaredEuclideanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/SquaredEuclideanDistanceFunction.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * computing the square root. * * @author Arthur Zimek + * @since 0.2 */ @Alias({ "squaredeuclidean", "de.lmu.ifi.dbs.elki.distance.distancefunction.SquaredEuclideanDistanceFunction" }) public class SquaredEuclideanDistanceFunction extends AbstractSpatialNorm { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedEuclideanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedEuclideanDistanceFunction.java index 3fbfc28e..fe163c43 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedEuclideanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedEuclideanDistanceFunction.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * Weighted Euclidean distance for {@link NumberVector}s. * * @author Erich Schubert + * @since 0.4.0 */ public class WeightedEuclideanDistanceFunction extends WeightedLPNormDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedLPNormDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedLPNormDistanceFunction.java index 6f9a99c2..dc75a0bd 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedLPNormDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedLPNormDistanceFunction.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable; import de.lmu.ifi.dbs.elki.data.type.SimpleTypeInformation; import de.lmu.ifi.dbs.elki.data.type.VectorFieldTypeInformation; import de.lmu.ifi.dbs.elki.distance.distancefunction.WeightedNumberVectorDistanceFunction; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParameter; @@ -37,7 +38,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * Weighted version of the Minkowski L_p norm distance for {@link NumberVector}. * * @author Erich Schubert + * @since 0.4.0 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.WeightedLPNormDistanceFunction") public class WeightedLPNormDistanceFunction extends LPNormDistanceFunction implements WeightedNumberVectorDistanceFunction<NumberVector> { /** * Weight array diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedManhattanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedManhattanDistanceFunction.java index 473c24fb..2d2483a6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedManhattanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedManhattanDistanceFunction.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * {@link NumberVector}s. * * @author Erich Schubert + * @since 0.4.0 */ public class WeightedManhattanDistanceFunction extends WeightedLPNormDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedMaximumDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedMaximumDistanceFunction.java index 14f1d899..71a4bf7e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedMaximumDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedMaximumDistanceFunction.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * {@link NumberVector}s. * * @author Erich Schubert + * @since 0.4.0 */ public class WeightedMaximumDistanceFunction extends WeightedLPNormDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedSquaredEuclideanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedSquaredEuclideanDistanceFunction.java index b57e0317..9e6a5868 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedSquaredEuclideanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/WeightedSquaredEuclideanDistanceFunction.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable; import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractSpatialNorm; import de.lmu.ifi.dbs.elki.distance.distancefunction.WeightedNumberVectorDistanceFunction; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParameter; @@ -38,7 +39,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleListParamet * same rankings as Euclidean distance, but saves computing the square root. * * @author Arthur Zimek + * @since 0.4.0 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.WeightedSquaredEuclideanDistanceFunction") public class WeightedSquaredEuclideanDistanceFunction extends AbstractSpatialNorm implements WeightedNumberVectorDistanceFunction<NumberVector> { /** * Weight array diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/ChiSquaredDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/ChiSquaredDistanceFunction.java index 06b7bf79..5eb40eea 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/ChiSquaredDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/ChiSquaredDistanceFunction.java @@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Alias("chisq") @Reference(authors = "J. Puzicha, J.M. Buhmann, Y. Rubner, C. Tomasi", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/HellingerDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/HellingerDistanceFunction.java index f955520a..ba191a46 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/HellingerDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/HellingerDistanceFunction.java @@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * TODO: support acceleration for sparse vectors * * @author Erich Schubert + * @since 0.7.0 */ @Reference(authors = "E. Hellinger", // title = "Neue Begründung der Theorie quadratischer Formen von unendlichvielen Veränderlichen", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JeffreyDivergenceDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JeffreyDivergenceDistanceFunction.java index 55f9a476..16814c4c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JeffreyDivergenceDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JeffreyDivergenceDistanceFunction.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "J. Puzicha, J.M. Buhmann, Y. Rubner, C. Tomasi", // title = "Empirical evaluation of dissimilarity measures for color and texture", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JensenShannonDivergenceDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JensenShannonDivergenceDistanceFunction.java index 18eb33bf..6b20a3f7 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JensenShannonDivergenceDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/JensenShannonDivergenceDistanceFunction.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * scaled by half. * * @author Erich Schubert + * @since 0.6.0 */ public class JensenShannonDivergenceDistanceFunction extends JeffreyDivergenceDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceAsymmetricDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceAsymmetricDistanceFunction.java index 48cd39e4..064fc6df 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceAsymmetricDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceAsymmetricDistanceFunction.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "S. Kullback", title = "Information theory and statistics", booktitle = "Information theory and statistics, Courier Dover Publications, 1997.") @Alias("kl") diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceReverseAsymmetricDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceReverseAsymmetricDistanceFunction.java index 1e96ee0e..4bfe9521 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceReverseAsymmetricDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/KullbackLeiblerDivergenceReverseAsymmetricDistanceFunction.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "S. Kullback", title = "Information theory and statistics", booktitle = "Information theory and statistics, Courier Dover Publications, 1997.") @Alias("kli") diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/SqrtJensenShannonDivergenceDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/SqrtJensenShannonDivergenceDistanceFunction.java index ca99a4c8..b792f97c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/SqrtJensenShannonDivergenceDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/probabilistic/SqrtJensenShannonDivergenceDistanceFunction.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * </p> * * @author Erich Schubert + * @since 0.4.0 */ @Reference(authors = "D. M. Endres, J. E. Schindelin", title = "A new metric for probability distributions", booktitle = "IEEE Transactions on Information Theory, 49(7)", url = "http://dx.doi.org/10.1109/TIT.2003.813506") public class SqrtJensenShannonDivergenceDistanceFunction extends AbstractNumberVectorDistanceFunction { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/AbstractSetDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/AbstractSetDistanceFunction.java index 814d144e..bce8437c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/AbstractSetDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/AbstractSetDistanceFunction.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractPrimitiveDistanceFu * Abstract base class for set distance functions. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/HammingDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/HammingDistanceFunction.java index 4d467db9..a04c5d37 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/HammingDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/HammingDistanceFunction.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * TODO: add a sparse (but not binary) optimized version? * * @author Erich Schubert + * @since 0.7.0 */ @Reference(authors = "R. W. Hamming", // title = "Error detecting and error correcting codes", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/JaccardSimilarityDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/JaccardSimilarityDistanceFunction.java index 954339ec..c13b4af0 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/JaccardSimilarityDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/set/JaccardSimilarityDistanceFunction.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.distance.distancefunction.NumberVectorDistanceFunction; import de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction; import de.lmu.ifi.dbs.elki.distance.similarityfunction.NormalizedPrimitiveSimilarityFunction; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.documentation.Reference; /** @@ -56,12 +57,14 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference; * </p> * * @author Erich Schubert + * @since 0.6.0 * * @param <O> Vector type */ @Reference(authors = "P. Jaccard", // title = "Distribution de la florine alpine dans la Bassin de Dranses et dans quelques regiones voisines", // booktitle = "Bulletin del la Société Vaudoise des Sciences Naturelles") +@Alias("de.lmu.ifi.dbs.elki.distance.similarityfunction.JaccardPrimitiveSimilarityFunction") public class JaccardSimilarityDistanceFunction<O extends FeatureVector<?>> extends AbstractSetDistanceFunction<O> implements NormalizedPrimitiveSimilarityFunction<O>, NumberVectorDistanceFunction<O>, PrimitiveDistanceFunction<O> { /** * Constructor. No parameters. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/LevenshteinDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/LevenshteinDistanceFunction.java index 5a6aa5f6..a2b098e5 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/LevenshteinDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/LevenshteinDistanceFunction.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * * @author Felix Stahlberg * @author Erich Schubert + * @since 0.6.0 * * @apiviz.uses String */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/NormalizedLevenshteinDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/NormalizedLevenshteinDistanceFunction.java index 8a48038d..f2b3d7db 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/NormalizedLevenshteinDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/strings/NormalizedLevenshteinDistanceFunction.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; * * @author Felix Stahlberg * @author Erich Schubert + * @since 0.6.0 * * @apiviz.uses String */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/AbstractDimensionsSelectingDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/AbstractDimensionsSelectingDistanceFunction.java index 98d753ff..17f493cd 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/AbstractDimensionsSelectingDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/AbstractDimensionsSelectingDistanceFunction.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntListParameter; * Selected dimensions are encuded as bits in a {@code long[]}. * * @author Elke Achtert + * @since 0.2 * @param <V> the type of FeatureVector to compute the distances in between */ public abstract class AbstractDimensionsSelectingDistanceFunction<V extends FeatureVector<?>> extends AbstractPrimitiveDistanceFunction<V> implements PrimitiveDistanceFunction<V>, DimensionSelectingSubspaceDistanceFunction<V> { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/DimensionSelectingSubspaceDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/DimensionSelectingSubspaceDistanceFunction.java index e96dfd33..0e46d953 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/DimensionSelectingSubspaceDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/DimensionSelectingSubspaceDistanceFunction.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction; * Interface for dimension selecting subspace distance functions. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/OnedimensionalDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/OnedimensionalDistanceFunction.java index 58b16354..e37287e3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/OnedimensionalDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/OnedimensionalDistanceFunction.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable; import de.lmu.ifi.dbs.elki.data.type.VectorFieldTypeInformation; import de.lmu.ifi.dbs.elki.data.type.VectorTypeInformation; import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractSpatialNorm; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.BitsUtil; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; @@ -40,7 +41,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * absolute difference of their values in a specified dimension only. * * @author Elke Achtert + * @since 0.2 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.subspace.DimensionSelectingDistanceFunction") public class OnedimensionalDistanceFunction extends AbstractSpatialNorm implements DimensionSelectingSubspaceDistanceFunction<NumberVector> { /** * The dimension to be considered for distance computation. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceEuclideanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceEuclideanDistanceFunction.java index baa67c60..57895724 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceEuclideanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceEuclideanDistanceFunction.java @@ -25,6 +25,7 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.subspace; import de.lmu.ifi.dbs.elki.data.NumberVector; import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.BitsUtil; /** @@ -32,7 +33,9 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil; * dimensions. * * @author Elke Achtert + * @since 0.2 */ +@Alias("de.lmu.ifi.dbs.elki.distance.distancefunction.subspace.DimensionsSelectingEuclideanDistanceFunction") public class SubspaceEuclideanDistanceFunction extends SubspaceLPNormDistanceFunction { /** * Constructor. @@ -144,4 +147,4 @@ public class SubspaceEuclideanDistanceFunction extends SubspaceLPNormDistanceFun return new SubspaceEuclideanDistanceFunction(dimensions); } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceLPNormDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceLPNormDistanceFunction.java index 69ca26a2..f3102c76 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceLPNormDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceLPNormDistanceFunction.java @@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * dimensions. * * @author Elke Achtert + * @since 0.2 */ public class SubspaceLPNormDistanceFunction extends AbstractDimensionsSelectingDistanceFunction<NumberVector> implements SpatialPrimitiveDistanceFunction<NumberVector>, Norm<NumberVector>, NumberVectorDistanceFunction<NumberVector> { /** @@ -198,4 +199,4 @@ public class SubspaceLPNormDistanceFunction extends AbstractDimensionsSelectingD return new SubspaceLPNormDistanceFunction(p, dimensions); } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceManhattanDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceManhattanDistanceFunction.java index 4e2e1ed5..87168695 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceManhattanDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceManhattanDistanceFunction.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil; * dimensions. * * @author Elke Achtert + * @since 0.5.0 */ public class SubspaceManhattanDistanceFunction extends SubspaceLPNormDistanceFunction { /** @@ -130,4 +131,4 @@ public class SubspaceManhattanDistanceFunction extends SubspaceLPNormDistanceFun return new SubspaceManhattanDistanceFunction(dimensions); } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceMaximumDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceMaximumDistanceFunction.java index edf88ef6..e24ff4cc 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceMaximumDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/subspace/SubspaceMaximumDistanceFunction.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil; * dimensions. * * @author Elke Achtert + * @since 0.5.0 */ public class SubspaceMaximumDistanceFunction extends SubspaceLPNormDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java index 6eb4a0cf..37d611a4 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * Edit Distance for FeatureVectors. * * @author Thomas Bernecker + * @since 0.2 */ public abstract class AbstractEditDistanceFunction extends AbstractNumberVectorDistanceFunction { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DTWDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DTWDistanceFunction.java index b3a1e19f..deddb490 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DTWDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DTWDistanceFunction.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title; * * @author Thomas Bernecker * @author Erich Schubert + * @since 0.2 */ @Title("Dynamic Time Warping Distance Function") @Reference(authors = "Berndt, D. and Clifford, J.", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DerivativeDTWDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DerivativeDTWDistanceFunction.java index c21997cb..4116fb94 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DerivativeDTWDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/DerivativeDTWDistanceFunction.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title; * </p> * * @author Lara Hirschbeck, Daniel Kolb + * @since 0.2 */ @Title("Derivative dynamic time warping") @Reference(authors = "E. J. Keogh and M. J. Pazzani", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java index c6d01419..afc7b8de 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * </p> * * @author Thomas Bernecker + * @since 0.2 */ @Title("Edit Distance on Real Sequence") @Reference(authors = "L. Chen and M. T. Özsu and V. Oria", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java index 39341d1e..93fd98bd 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * </p> * * @author Thomas Bernecker + * @since 0.2 */ @Title("Edit Distance with Real Penalty") @Reference(authors = "L. Chen and R. Ng", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java index 2d71ba1c..12e2752d 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java @@ -68,6 +68,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; * * * @author Thomas Bernecker + * @since 0.2 */ @Title("Longest Common Subsequence distance function") @Reference(authors = "M. Vlachos, M. Hadjieleftheriou, D. Gunopulos, E. Keogh", // |