diff options
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed')
26 files changed, 67 insertions, 23 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/AbstractPreprocessorIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/AbstractPreprocessorIndex.java index 7377955b..3892c896 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/AbstractPreprocessorIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/AbstractPreprocessorIndex.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * object storage for preprocessing results. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf WritableDataStore * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/LocalProjectionIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/LocalProjectionIndex.java index af5fbcc9..66b30c9d 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/LocalProjectionIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/LocalProjectionIndex.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.ProjectionResult; * Abstract index interface for local projections * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has ProjectionResult * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/fastoptics/RandomProjectedNeighborsAndDensities.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/fastoptics/RandomProjectedNeighborsAndDensities.java index e24852a9..f5615331 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/fastoptics/RandomProjectedNeighborsAndDensities.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/fastoptics/RandomProjectedNeighborsAndDensities.java @@ -85,6 +85,7 @@ import gnu.trove.list.array.TIntArrayList; * * @author Johannes Schneider * @author Erich Schubert + * @since 0.7.0 */ @Reference(authors = "J. Schneider and M. Vlachos", // title = "Fast parameterless density-based clustering via random projections", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/AbstractMaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/AbstractMaterializeKNNPreprocessor.java index 343f17b7..6d156c63 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/AbstractMaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/AbstractMaterializeKNNPreprocessor.java @@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * Abstract base class for KNN Preprocessors. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/CachedDoubleDistanceKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/CachedDoubleDistanceKNNPreprocessor.java index ae7ce384..7d9f6b19 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/CachedDoubleDistanceKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/CachedDoubleDistanceKNNPreprocessor.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; * Preprocessor that loads an existing cached kNN result. * * @author Erich Schubert + * @since 0.6.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNChangeEvent.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNChangeEvent.java index 953a3baa..0963229a 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNChangeEvent.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNChangeEvent.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * subscribed {@link KNNListener} of the change. * * @author Elke Achtert + * @since 0.4.0 * * @apiviz.has DBIDs * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNJoinMaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNJoinMaterializeKNNPreprocessor.java index 8a6af2fd..895d80c8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNJoinMaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNJoinMaterializeKNNPreprocessor.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * Class to materialize the kNN using a spatial join on an R-tree. * * @author Erich Schubert + * @since 0.5.0 * * @param <V> vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNListener.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNListener.java index 40e772b1..166c4286 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNListener.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/KNNListener.java @@ -30,6 +30,7 @@ import java.util.EventListener; * objects have been changed due to insertion or removals of objects. * * @author Elke Achtert + * @since 0.4.0 * * @apiviz.uses KNNChangeEvent oneway - - */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNAndRKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNAndRKNNPreprocessor.java index c2577bf8..71098362 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNAndRKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNAndRKNNPreprocessor.java @@ -67,6 +67,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title; * of the nearest neighbors! * * @author Elke Achtert + * @since 0.4.0 * * @param <O> the type of database objects the preprocessor can be applied to * @param the type of distance the used distance function will return diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java index 5f21a165..24d4e677 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; import de.lmu.ifi.dbs.elki.database.ids.DBIDs; +import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter; import de.lmu.ifi.dbs.elki.database.ids.KNNHeap; import de.lmu.ifi.dbs.elki.database.ids.KNNList; import de.lmu.ifi.dbs.elki.database.ids.SetDBIDs; @@ -46,6 +47,7 @@ import de.lmu.ifi.dbs.elki.logging.progress.FiniteProgress; import de.lmu.ifi.dbs.elki.logging.progress.StepProgress; import de.lmu.ifi.dbs.elki.logging.statistics.Duration; import de.lmu.ifi.dbs.elki.logging.statistics.LongStatistic; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.documentation.Description; import de.lmu.ifi.dbs.elki.utilities.documentation.Title; @@ -56,6 +58,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title; * Used for example by {@link de.lmu.ifi.dbs.elki.algorithm.outlier.lof.LOF}. * * @author Erich Schubert + * @since 0.2 * * @apiviz.has DistanceFunction * @apiviz.has KNNQuery @@ -65,6 +68,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title; */ @Title("Materialize kNN Neighborhood preprocessor") @Description("Materializes the k nearest neighbors of objects of a database.") +@Alias("de.lmu.ifi.dbs.elki.preprocessing.MaterializeKNNPreprocessor") public class MaterializeKNNPreprocessor<O> extends AbstractMaterializeKNNPreprocessor<O> implements DynamicIndex { /** * Logger to use. @@ -105,14 +109,15 @@ public class MaterializeKNNPreprocessor<O> extends AbstractMaterializeKNNPreproc */ @Override protected void preprocess() { + final Logging log = getLogger(); // Could be subclass createStorage(); ArrayDBIDs ids = DBIDUtil.ensureArray(relation.getDBIDs()); - if(LOG.isStatistics()) { - LOG.statistics(new LongStatistic(this.getClass().getName() + ".k", k)); + if(log.isStatistics()) { + log.statistics(new LongStatistic(this.getClass().getName() + ".k", k)); } - Duration duration = LOG.isStatistics() ? LOG.newDuration(this.getClass().getName() + ".precomputation-time").begin() : null; + Duration duration = log.isStatistics() ? log.newDuration(this.getClass().getName() + ".precomputation-time").begin() : null; FiniteProgress progress = getLogger().isVerbose() ? new FiniteProgress("Materializing k nearest neighbors (k=" + k + ")", ids.size(), getLogger()) : null; // Try bulk List<? extends KNNList> kNNList = null; @@ -122,20 +127,30 @@ public class MaterializeKNNPreprocessor<O> extends AbstractMaterializeKNNPreproc int i = 0; for(DBIDIter id = ids.iter(); id.valid(); id.advance(), i++) { storage.put(id, kNNList.get(i)); - getLogger().incrementProcessed(progress); + log.incrementProcessed(progress); } } } else { + final boolean ismetric = getDistanceQuery().getDistanceFunction().isMetric(); for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { + if(ismetric && storage.get(iter) != null) { + log.incrementProcessed(progress); + continue; // Previously computed (duplicate point?) + } KNNList knn = knnQuery.getKNNForDBID(iter, k); storage.put(iter, knn); - getLogger().incrementProcessed(progress); + if(ismetric) { + for(DoubleDBIDListIter it = knn.iter(); it.valid() && it.doubleValue() == 0.; it.advance()) { + storage.put(it, knn); // Reuse + } + } + log.incrementProcessed(progress); } } - getLogger().ensureCompleted(progress); + log.ensureCompleted(progress); if(duration != null) { - LOG.statistics(duration.end()); + log.statistics(duration.end()); } } @@ -172,11 +187,12 @@ public class MaterializeKNNPreprocessor<O> extends AbstractMaterializeKNNPreproc * @param ids the ids of the newly inserted objects */ protected void objectsInserted(DBIDs ids) { - StepProgress stepprog = getLogger().isVerbose() ? new StepProgress(3) : null; + final Logging log = getLogger(); // Could be subclass + StepProgress stepprog = log.isVerbose() ? new StepProgress(3) : null; ArrayDBIDs aids = DBIDUtil.ensureArray(ids); // materialize the new kNNs - getLogger().beginStep(stepprog, 1, "New insertions ocurred, materialize their new kNNs."); + log.beginStep(stepprog, 1, "New insertions ocurred, materialize their new kNNs."); // Bulk-query kNNs List<? extends KNNList> kNNList = knnQuery.getKNNForBulkDBIDs(aids, k); // Store in storage @@ -186,14 +202,14 @@ public class MaterializeKNNPreprocessor<O> extends AbstractMaterializeKNNPreproc } // update the affected kNNs - getLogger().beginStep(stepprog, 2, "New insertions ocurred, update the affected kNNs."); + log.beginStep(stepprog, 2, "New insertions ocurred, update the affected kNNs."); ArrayDBIDs rkNN_ids = updateKNNsAfterInsertion(ids); // inform listener - getLogger().beginStep(stepprog, 3, "New insertions ocurred, inform listeners."); + log.beginStep(stepprog, 3, "New insertions ocurred, inform listeners."); fireKNNsInserted(ids, rkNN_ids); - getLogger().setCompleted(stepprog); + log.setCompleted(stepprog); } /** @@ -267,23 +283,24 @@ public class MaterializeKNNPreprocessor<O> extends AbstractMaterializeKNNPreproc * @param ids the ids of the removed objects */ protected void objectsRemoved(DBIDs ids) { - StepProgress stepprog = getLogger().isVerbose() ? new StepProgress(3) : null; + final Logging log = getLogger(); + StepProgress stepprog = log.isVerbose() ? new StepProgress(3) : null; // delete the materialized (old) kNNs - getLogger().beginStep(stepprog, 1, "New deletions ocurred, remove their materialized kNNs."); + log.beginStep(stepprog, 1, "New deletions ocurred, remove their materialized kNNs."); for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { storage.delete(iter); } // update the affected kNNs - getLogger().beginStep(stepprog, 2, "New deletions ocurred, update the affected kNNs."); + log.beginStep(stepprog, 2, "New deletions ocurred, update the affected kNNs."); ArrayDBIDs rkNN_ids = updateKNNsAfterDeletion(ids); // inform listener - getLogger().beginStep(stepprog, 3, "New deletions ocurred, inform listeners."); + log.beginStep(stepprog, 3, "New deletions ocurred, inform listeners."); fireKNNsRemoved(ids, rkNN_ids); - getLogger().ensureCompleted(stepprog); + log.ensureCompleted(stepprog); } /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MetricalIndexApproximationMaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MetricalIndexApproximationMaterializeKNNPreprocessor.java index a78b06e0..7823d872 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MetricalIndexApproximationMaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MetricalIndexApproximationMaterializeKNNPreprocessor.java @@ -59,6 +59,7 @@ import gnu.trove.map.hash.TObjectDoubleHashMap; * TODO correct handling of datastore events * * @author Erich Schubert + * @since 0.2 * * @apiviz.uses MetricalIndexTree * @@ -99,7 +100,7 @@ public class MetricalIndexApproximationMaterializeKNNPreprocessor<O extends Numb } List<E> leaves = index.getLeaves(); - FiniteProgress progress = getLogger().isVerbose() ? new FiniteProgress("Processing leaf nodes.", leaves.size(), getLogger()) : null; + FiniteProgress progress = getLogger().isVerbose() ? new FiniteProgress("Processing leaf nodes", leaves.size(), getLogger()) : null; for(E leaf : leaves) { N node = index.getNode(leaf); int size = node.getNumEntries(); diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/NaiveProjectedKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/NaiveProjectedKNNPreprocessor.java index 6b946474..f4911aef 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/NaiveProjectedKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/NaiveProjectedKNNPreprocessor.java @@ -79,6 +79,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter; * </p> * * @author Erich Schubert + * @since 0.7.0 * @apiviz.has NaiveProjectedKNNQuery */ @Reference(authors = "E. Schubert, A. Zimek, H.-P. Kriegel", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/PartitionApproximationMaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/PartitionApproximationMaterializeKNNPreprocessor.java index cdb314dc..b8a9f6fe 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/PartitionApproximationMaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/PartitionApproximationMaterializeKNNPreprocessor.java @@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter; * Used for example by {@link de.lmu.ifi.dbs.elki.algorithm.outlier.lof.LOF}. * * @author Erich Schubert + * @since 0.2 * * @param <O> the type of database objects the preprocessor can be applied to */ @@ -103,7 +104,7 @@ public class PartitionApproximationMaterializeKNNPreprocessor<O> extends Abstrac // Produce a random shuffling of the IDs: ArrayDBIDs[] parts = DBIDUtil.randomSplit(relation.getDBIDs(), partitions, rnd); - FiniteProgress progress = LOG.isVerbose() ? new FiniteProgress("Processing partitions.", partitions, LOG) : null; + FiniteProgress progress = LOG.isVerbose() ? new FiniteProgress("Processing partitions", partitions, LOG) : null; for(int part = 0; part < partitions; part++) { final ArrayDBIDs ids = parts[part]; final int size = ids.size(); diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/RandomSampleKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/RandomSampleKNNPreprocessor.java index 39eb23f3..33a0c070 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/RandomSampleKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/RandomSampleKNNPreprocessor.java @@ -59,6 +59,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter; * </p> * * @author Erich Schubert + * @since 0.5.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingKNNPreprocessor.java index 8aa1368c..22b378ae 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingKNNPreprocessor.java @@ -88,6 +88,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter; * </p> * * @author Erich Schubert + * @since 0.7.0 * * @apiviz.has SpaceFillingKNNQuery */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingMaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingMaterializeKNNPreprocessor.java index 4b3864eb..257bda32 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingMaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpacefillingMaterializeKNNPreprocessor.java @@ -77,6 +77,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter; * </p> * * @author Erich Schubert + * @since 0.7.0 */ @Reference(authors = "E. Schubert, A. Zimek, H.-P. Kriegel", // title = "Fast and Scalable Outlier Detection with Approximate Nearest Neighbor Ensembles", // diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpatialApproximationMaterializeKNNPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpatialApproximationMaterializeKNNPreprocessor.java index 3706035c..49cdf239 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpatialApproximationMaterializeKNNPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/knn/SpatialApproximationMaterializeKNNPreprocessor.java @@ -23,8 +23,6 @@ package de.lmu.ifi.dbs.elki.index.preprocessed.knn; along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import gnu.trove.impl.Constants; -import gnu.trove.map.hash.TObjectDoubleHashMap; import java.util.Collection; import java.util.List; @@ -49,9 +47,12 @@ import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.logging.progress.FiniteProgress; import de.lmu.ifi.dbs.elki.math.MeanVariance; import de.lmu.ifi.dbs.elki.result.ResultUtil; +import de.lmu.ifi.dbs.elki.utilities.Alias; 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 gnu.trove.impl.Constants; +import gnu.trove.map.hash.TObjectDoubleHashMap; /** * A preprocessor for annotation of the k nearest neighbors (and their @@ -62,6 +63,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * TODO correct handling of datastore events * * @author Erich Schubert + * @since 0.2 * * @apiviz.uses SpatialIndexTree * @@ -70,6 +72,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; */ @Title("Spatial Approximation Materialize kNN Preprocessor") @Description("Caterializes the (approximate) k nearest neighbors of objects of a database using a spatial approximation.") +@Alias("de.lmu.ifi.dbs.elki.preprocessing.SpatialApproximationMaterializeKNNPreprocessor") public class SpatialApproximationMaterializeKNNPreprocessor<O extends NumberVector, N extends SpatialNode<N, E>, E extends SpatialEntry> extends AbstractMaterializeKNNPreprocessor<O> { /** * Logger to use @@ -105,7 +108,7 @@ public class SpatialApproximationMaterializeKNNPreprocessor<O extends NumberVect } List<E> leaves = index.getLeaves(); - FiniteProgress progress = getLogger().isVerbose() ? new FiniteProgress("Processing leaf nodes.", leaves.size(), getLogger()) : null; + FiniteProgress progress = getLogger().isVerbose() ? new FiniteProgress("Processing leaf nodes", leaves.size(), getLogger()) : null; for(E leaf : leaves) { N node = index.getNode(leaf); int size = node.getNumEntries(); @@ -217,4 +220,4 @@ public class SpatialApproximationMaterializeKNNPreprocessor<O extends NumberVect } } } -}
\ No newline at end of file +} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/AbstractFilteredPCAIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/AbstractFilteredPCAIndex.java index f1da979e..3f7f6d93 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/AbstractFilteredPCAIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/AbstractFilteredPCAIndex.java @@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * * @author Elke Achtert * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has PCAFilteredRunner * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/FilteredLocalPCAIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/FilteredLocalPCAIndex.java index c6504f54..9adef2e8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/FilteredLocalPCAIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/FilteredLocalPCAIndex.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PCAFilteredResult; * Interface for an index providing local PCA results. * * @author Erich Schubert + * @since 0.4.0 * * @param <NV> Vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/KNNQueryFilteredPCAIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/KNNQueryFilteredPCAIndex.java index 8e81d368..8dc06940 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/KNNQueryFilteredPCAIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/localpca/KNNQueryFilteredPCAIndex.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * * @author Elke Achtert * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses KNNQuery diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java index af1359d5..401a872f 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.index.preprocessed.AbstractPreprocessorIndex; * Abstract base class for preference vector based algorithms. * * @author Erich Schubert + * @since 0.4.0 * * @param <NV> Number vector */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java index 0653e1bb..5e0a954e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java @@ -70,6 +70,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * database. * * @author Elke Achtert + * @since 0.4.0 * * @param <V> Vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java index a196e5d4..54b01a0b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java @@ -56,6 +56,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * database. * * @author Elke Achtert + * @since 0.4.0 * * @see HiSC * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java index 3a4ed850..896783c3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.index.IndexFactory; * Interface for an index providing preference vectors. * * @author Erich Schubert + * @since 0.4.0 * * @param <NV> Vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborIndex.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborIndex.java index 2b689d8d..22ebacc1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborIndex.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborIndex.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.index.IndexFactory; * Interface for an index providing nearest neighbor sets. * * @author Erich Schubert + * @since 0.4.0 */ public interface SharedNearestNeighborIndex<O> extends Index { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborPreprocessor.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborPreprocessor.java index 81ce777d..7e65ff80 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborPreprocessor.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/index/preprocessed/snn/SharedNearestNeighborPreprocessor.java @@ -63,6 +63,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * * @author Arthur Zimek * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has DistanceFunction * |