diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/evaluation/similaritymatrix/ComputeSimilarityMatrixImage.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/evaluation/similaritymatrix/ComputeSimilarityMatrixImage.java | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/evaluation/similaritymatrix/ComputeSimilarityMatrixImage.java b/src/de/lmu/ifi/dbs/elki/evaluation/similaritymatrix/ComputeSimilarityMatrixImage.java index 90a11583..e09dba3a 100644 --- a/src/de/lmu/ifi/dbs/elki/evaluation/similaritymatrix/ComputeSimilarityMatrixImage.java +++ b/src/de/lmu/ifi/dbs/elki/evaluation/similaritymatrix/ComputeSimilarityMatrixImage.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.evaluation.similaritymatrix; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2013 + Copyright (C) 2014 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -42,7 +42,6 @@ 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.DistanceFunction; import de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski.EuclideanDistanceFunction; -import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance; import de.lmu.ifi.dbs.elki.evaluation.Evaluator; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.logging.LoggingUtil; @@ -90,7 +89,7 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { /** * The distance function to use */ - private DistanceFunction<? super O, ? extends NumberDistance<?, ?>> distanceFunction; + private DistanceFunction<? super O> distanceFunction; /** * Scaling function to use @@ -109,7 +108,7 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { * @param scaling Scaling function to use for contrast * @param skipzero Skip zero values when scaling. */ - public ComputeSimilarityMatrixImage(DistanceFunction<? super O, ? extends NumberDistance<?, ?>> distanceFunction, ScalingFunction scaling, boolean skipzero) { + public ComputeSimilarityMatrixImage(DistanceFunction<? super O> distanceFunction, ScalingFunction scaling, boolean skipzero) { super(); this.distanceFunction = distanceFunction; this.scaling = scaling; @@ -131,7 +130,7 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { if(order.size() != relation.size()) { throw new IllegalStateException("Iterable result doesn't match database size - incomplete ordering?"); } - DistanceQuery<O, ? extends NumberDistance<?, ?>> dq = distanceFunction.instantiate(relation); + DistanceQuery<O> dq = distanceFunction.instantiate(relation); final int size = order.size(); // When the logging is in the outer loop, it's just 2*size (providing enough @@ -148,16 +147,14 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { for(; id1.valid(); id1.advance()) { id2.seek(id1.getOffset()); for(; id2.valid(); id2.advance()) { - final double dist = dq.distance(id1, id2).doubleValue(); + final double dist = dq.distance(id1, id2); if(!Double.isNaN(dist) && !Double.isInfinite(dist) /* && dist > 0.0 */) { if(!skipzero || dist > 0.0) { minmax.put(dist); } } } - if(prog != null) { - prog.incrementProcessed(LOG); - } + LOG.incrementProcessed(prog); } } @@ -173,7 +170,7 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { for(int x = 0; x < size && id1.valid(); x++, id1.advance()) { id2.seek(id1.getOffset()); for(int y = x; y < size && id2.valid(); y++, id2.advance()) { - double ddist = dq.distance(id1, id2).doubleValue(); + double ddist = dq.distance(id1, id2); if(ddist > 0.0) { ddist = scale.getScaled(ddist); } @@ -186,14 +183,10 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { img.setRGB(x, y, col); img.setRGB(y, x, col); } - if(prog != null) { - prog.incrementProcessed(LOG); - } + LOG.incrementProcessed(prog); } } - if(prog != null) { - prog.ensureCompleted(LOG); - } + LOG.ensureCompleted(prog); return new SimilarityMatrix(img, relation, order); } @@ -338,7 +331,7 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { /** * The distance function to use */ - private DistanceFunction<O, ? extends NumberDistance<?, ?>> distanceFunction; + private DistanceFunction<O> distanceFunction; /** * Scaling function to use @@ -353,7 +346,7 @@ public class ComputeSimilarityMatrixImage<O> implements Evaluator { @Override protected void makeOptions(Parameterization config) { super.makeOptions(config); - ObjectParameter<DistanceFunction<O, ? extends NumberDistance<?, ?>>> distanceFunctionP = AbstractAlgorithm.makeParameterDistanceFunction(EuclideanDistanceFunction.class, DistanceFunction.class); + ObjectParameter<DistanceFunction<O>> distanceFunctionP = AbstractAlgorithm.makeParameterDistanceFunction(EuclideanDistanceFunction.class, DistanceFunction.class); if(config.grab(distanceFunctionP)) { distanceFunction = distanceFunctionP.instantiateClass(config); } |