summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java4
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java7
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java11
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java5
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java69
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java6
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java16
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java33
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java17
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/package-info.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java9
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java3
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java65
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/package-info.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java8
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java4
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/package-info.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java92
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java5
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java3
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/package-info.java2
26 files changed, 181 insertions, 194 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java
index 1f2d89d7..13c6c669 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
@@ -56,7 +56,7 @@ public abstract class AbstractScatterplotVisualization extends AbstractVisualiza
/**
* The representation we visualize
*/
- final protected Relation<? extends NumberVector<?>> rel;
+ final protected Relation<? extends NumberVector> rel;
/**
* The DBID sample
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java
index 61bff7d4..4bfe80d2 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java
index dd3f2218..e88ba006 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java
index 8a3d0849..9c899238 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
@@ -64,8 +64,7 @@ public class MarkerVisualization extends AbstractVisFactory {
private static final String NAME = "Markers";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public MarkerVisualization() {
super();
@@ -145,7 +144,7 @@ public class MarkerVisualization extends AbstractVisFactory {
continue; // TODO: can we test more efficiently than this?
}
try {
- final NumberVector<?> vec = rel.get(iter);
+ final NumberVector vec = rel.get(iter);
double[] v = proj.fastProjectDataToRenderSpace(vec);
if(v[0] != v[0] || v[1] != v[1]) {
continue; // NaN!
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java
index 8037eae6..2c7c90b4 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java
index b3a66582..8ea851de 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
@@ -59,8 +59,7 @@ public class ReferencePointsVisualization extends AbstractVisFactory {
private static final String NAME = "Reference Points";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public ReferencePointsVisualization() {
super();
@@ -104,7 +103,7 @@ public class ReferencePointsVisualization extends AbstractVisFactory {
/**
* Serves reference points.
*/
- protected ReferencePointsResult<? extends NumberVector<?>> result;
+ protected ReferencePointsResult<? extends NumberVector> result;
/**
* Constructor.
@@ -121,11 +120,11 @@ public class ReferencePointsVisualization extends AbstractVisFactory {
public void redraw() {
final StyleLibrary style = context.getStyleResult().getStyleLibrary();
setupCSS(svgp);
- Iterator<? extends NumberVector<?>> iter = result.iterator();
+ Iterator<? extends NumberVector> iter = result.iterator();
final double dotsize = style.getSize(StyleLibrary.REFERENCE_POINTS);
while(iter.hasNext()) {
- NumberVector<?> v = iter.next();
+ NumberVector v = iter.next();
double[] projected = proj.fastProjectDataToRenderSpace(v);
Element dot = svgp.svgCircle(projected[0], projected[1], dotsize);
SVGUtil.addCSSClass(dot, REFPOINT);
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java
index 45351aec..eb011a26 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java
index 42da21d9..b3745504 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot;
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
@@ -78,8 +78,7 @@ public class TooltipStringVisualization extends AbstractVisFactory {
public static final String NAME_EID = "External ID Tooltips";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public TooltipStringVisualization() {
super();
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java
index 9436b25c..54e715d6 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java
@@ -86,7 +86,7 @@ public class ClusterHullVisualization extends AbstractVisFactory {
/**
* A short name characterizing this Visualizer.
*/
- private static final String NAME = "Cluster Hull Visualization";
+ private static final String NAME = "Cluster Hull (Scatterplot)";
/**
* Settings
@@ -114,13 +114,13 @@ public class ClusterHullVisualization extends AbstractVisFactory {
// We attach ourselves to the style library, not the clustering, so there is
// only one hull.
Collection<StyleResult> styleres = ResultUtil.filterResults(result, StyleResult.class);
- for (StyleResult c : styleres) {
+ for(StyleResult s : styleres) {
Collection<ScatterPlotProjector<?>> ps = ResultUtil.filterResults(baseResult, ScatterPlotProjector.class);
- for (ScatterPlotProjector<?> p : ps) {
- final VisualizationTask task = new VisualizationTask(NAME, c, p.getRelation(), this);
+ for(ScatterPlotProjector<?> p : ps) {
+ final VisualizationTask task = new VisualizationTask(NAME, s, p.getRelation(), this);
task.level = VisualizationTask.LEVEL_DATA - 1;
task.initDefaultVisibility(false);
- baseResult.getHierarchy().add(c, task);
+ baseResult.getHierarchy().add(s, task);
baseResult.getHierarchy().add(p, task);
}
}
@@ -162,7 +162,7 @@ public class ClusterHullVisualization extends AbstractVisFactory {
@Override
protected void redraw() {
final StylingPolicy spol = style.getStylingPolicy();
- if (!(spol instanceof ClusterStylingPolicy)) {
+ if(!(spol instanceof ClusterStylingPolicy)) {
return;
}
final ClusterStylingPolicy cpol = (ClusterStylingPolicy) spol;
@@ -181,20 +181,19 @@ public class ClusterHullVisualization extends AbstractVisFactory {
double baseopacity = flat ? 0.5 : 0.5;
// Convex hull mode:
- if (settings.alpha >= Double.POSITIVE_INFINITY) {
+ if(settings.alpha >= Double.POSITIVE_INFINITY) {
// Build the convex hulls (reusing the hulls of nested clusters!)
Map<Object, DoubleObjPair<Polygon>> hullmap = new HashMap<>(clusters.size());
- for (Cluster<Model> clu : topc) {
+ for(Cluster<Model> clu : topc) {
buildHullsRecursively(clu, hier, hullmap);
}
// This way, we draw each cluster only once.
// Unfortunately, not depth ordered (TODO!)
- for (Cluster<Model> clu : clusters) {
+ for(Cluster<Model> clu : clusters) {
DoubleObjPair<Polygon> pair = hullmap.get(clu), mpair = hullmap.get(clu.getModel());
- ;
// Plot the convex hull:
- if (pair != null && pair.second != null && pair.second.size() > 1) {
+ if(pair != null && pair.second != null && pair.second.size() > 1) {
SVGPath path = new SVGPath(pair.second);
// Approximate area (using bounding box)
double hullarea = SpatialUtil.volume(pair.second);
@@ -209,7 +208,7 @@ public class ClusterHullVisualization extends AbstractVisFactory {
layer.appendChild(hulls);
}
// For core density models, over-plot the core:
- if (mpair != null && mpair.second != null && mpair.second.size() > 1) {
+ if(mpair != null && mpair.second != null && mpair.second.size() > 1) {
SVGPath path = new SVGPath(mpair.second);
// Approximate area (using bounding box)
double hullarea = SpatialUtil.volume(mpair.second);
@@ -223,25 +222,27 @@ public class ClusterHullVisualization extends AbstractVisFactory {
layer.appendChild(hulls);
}
}
- } else {
+ }
+ else {
// Alpha shape mode.
// For alpha shapes we can't use the shortcut of convex hulls,
// but have to revisit all child clusters.
- for (Cluster<Model> clu : clusters) {
+ for(Cluster<Model> clu : clusters) {
ArrayList<Vector> ps = new ArrayList<>();
double weight = addRecursively(ps, hier, clu);
List<Polygon> polys;
- if (ps.size() < 1) {
+ if(ps.size() < 1) {
continue;
}
- if (ps.size() > 2) {
+ if(ps.size() > 2) {
polys = (new AlphaShape(ps, settings.alpha * Projection.SCALE)).compute();
- } else {
+ }
+ else {
// Trivial polygon. Might still degenerate to a single point though.
polys = new ArrayList<>(1);
polys.add(new Polygon(ps));
}
- for (Polygon p : polys) {
+ for(Polygon p : polys) {
SVGPath path = new SVGPath(p);
Element hulls = path.makeElement(svgp);
addCSSClasses(svgp, cpol.getStyleForCluster(clu), baseopacity * weight / rel.size());
@@ -264,43 +265,43 @@ public class ClusterHullVisualization extends AbstractVisFactory {
final DBIDs ids = clu.getIDs();
boolean coremodel = false;
DBIDs cids = null;
- if (model instanceof CoreObjectsModel) {
+ if(model instanceof CoreObjectsModel) {
cids = ((CoreObjectsModel) model).getCoreObjects();
coremodel = cids.size() > 0;
}
GrahamScanConvexHull2D hull = new GrahamScanConvexHull2D();
GrahamScanConvexHull2D hull2 = coremodel ? new GrahamScanConvexHull2D() : null;
- for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
+ for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
final double[] projv = proj.fastProjectDataToRenderSpace(rel.get(iter));
if(projv[0] != projv[0] || projv[1] != projv[1]) {
continue; // NaN!
}
Vector projP = new Vector(projv);
hull.add(projP);
- if (coremodel && cids.contains(iter)) {
+ if(coremodel && cids.contains(iter)) {
hull2.add(projP);
}
}
double weight = ids.size(), cweight = coremodel ? cids.size() : 0.0;
- if (hier != null && hulls != null) {
+ if(hier != null && hulls != null) {
final int numc = hier.numChildren(clu);
- if (numc > 0) {
- for (Iter<Cluster<Model>> iter = hier.iterChildren(clu); iter.valid(); iter.advance()) {
+ if(numc > 0) {
+ for(Iter<Cluster<Model>> iter = hier.iterChildren(clu); iter.valid(); iter.advance()) {
final Cluster<Model> iclu = iter.get();
DoubleObjPair<Polygon> poly = hulls.get(iclu);
- if (poly == null) {
+ if(poly == null) {
poly = buildHullsRecursively(iclu, hier, hulls);
}
// Add inner convex hull to outer convex hull.
- for (ArrayListIter<Vector> vi = poly.second.iter(); vi.valid(); vi.advance()) {
+ for(ArrayListIter<Vector> vi = poly.second.iter(); vi.valid(); vi.advance()) {
hull.add(vi.get());
}
// For a core model, include the inner core, too.
- if (coremodel) {
+ if(coremodel) {
DoubleObjPair<Polygon> ipoly = hulls.get(iclu.getModel());
- if (ipoly != null) {
- for (ArrayListIter<Vector> vi = ipoly.second.iter(); vi.valid(); vi.advance()) {
+ if(ipoly != null) {
+ for(ArrayListIter<Vector> vi = ipoly.second.iter(); vi.valid(); vi.advance()) {
hull2.add(vi.get());
}
cweight += ipoly.first / numc;
@@ -312,7 +313,7 @@ public class ClusterHullVisualization extends AbstractVisFactory {
}
DoubleObjPair<Polygon> pair = new DoubleObjPair<>(weight, hull.getHull());
hulls.put(clu, pair);
- if (coremodel) {
+ if(coremodel) {
hulls.put(model, new DoubleObjPair<>(cweight, hull2.getHull()));
}
return pair;
@@ -329,14 +330,14 @@ public class ClusterHullVisualization extends AbstractVisFactory {
private double addRecursively(ArrayList<Vector> hull, Hierarchy<Cluster<Model>> hier, Cluster<Model> clus) {
final DBIDs ids = clus.getIDs();
double weight = ids.size();
- for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
+ for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
double[] projP = proj.fastProjectDataToRenderSpace(rel.get(iter));
if(projP[0] != projP[0] || projP[1] != projP[1]) {
continue; // NaN!
}
hull.add(new Vector(projP));
}
- for (Iter<Cluster<Model>> iter = hier.iterChildren(clus); iter.valid(); iter.advance()) {
+ for(Iter<Cluster<Model>> iter = hier.iterChildren(clus); iter.valid(); iter.advance()) {
weight += .5 * addRecursively(hull, hier, iter.get());
}
return weight;
@@ -352,7 +353,7 @@ public class ClusterHullVisualization extends AbstractVisFactory {
ColorLibrary colors = style.getColorSet(StyleLibrary.PLOT);
CSSClass cls = new CSSClass(this, CLUSTERHULL + clusterID);
- cls.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, style.getLineWidth(StyleLibrary.PLOT));
+ cls.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, .5 * style.getLineWidth(StyleLibrary.PLOT));
final String color = colors.getColor(clusterID);
cls.setStatement(SVGConstants.CSS_STROKE_PROPERTY, color);
@@ -389,7 +390,7 @@ public class ClusterHullVisualization extends AbstractVisFactory {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter alphaP = new DoubleParameter(ALPHA_ID, Double.POSITIVE_INFINITY);
- if (config.grab(alphaP)) {
+ if(config.grab(alphaP)) {
alpha = alphaP.doubleValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java
index c07e5dca..5a7d8702 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java
@@ -31,7 +31,6 @@ import org.w3c.dom.Element;
import de.lmu.ifi.dbs.elki.data.Cluster;
import de.lmu.ifi.dbs.elki.data.Clustering;
-import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.data.model.MeanModel;
import de.lmu.ifi.dbs.elki.data.model.MedoidModel;
import de.lmu.ifi.dbs.elki.data.model.Model;
@@ -164,8 +163,7 @@ public class ClusterMeanVisualization extends AbstractVisFactory {
Model model = clus.getModel();
double[] mean;
if(model instanceof MeanModel) {
- @SuppressWarnings("unchecked")
- MeanModel<? extends NumberVector<?>> mmodel = (MeanModel<? extends NumberVector<?>>) model;
+ MeanModel mmodel = (MeanModel) model;
mean = proj.fastProjectDataToRenderSpace(mmodel.getMean());
}
else if(model instanceof MedoidModel) {
@@ -247,7 +245,7 @@ public class ClusterMeanVisualization extends AbstractVisFactory {
*/
private static boolean testMeanModel(Clustering<?> c) {
Model firstmodel = c.getAllClusters().get(0).getModel();
- if(firstmodel instanceof MeanModel<?>) {
+ if(firstmodel instanceof MeanModel) {
return true;
}
if(firstmodel instanceof MedoidModel) {
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java
index 339b7c41..b277824e 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.cluster;
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
@@ -27,14 +27,13 @@ import java.util.Collection;
import org.w3c.dom.Element;
+import de.lmu.ifi.dbs.elki.algorithm.clustering.optics.ClusterOrderEntry;
+import de.lmu.ifi.dbs.elki.algorithm.clustering.optics.ClusterOrderResult;
import de.lmu.ifi.dbs.elki.database.datastore.DataStoreListener;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
import de.lmu.ifi.dbs.elki.result.HierarchicalResult;
import de.lmu.ifi.dbs.elki.result.Result;
import de.lmu.ifi.dbs.elki.result.ResultUtil;
-import de.lmu.ifi.dbs.elki.result.optics.ClusterOrderEntry;
-import de.lmu.ifi.dbs.elki.result.optics.ClusterOrderResult;
import de.lmu.ifi.dbs.elki.visualization.VisualizationTask;
import de.lmu.ifi.dbs.elki.visualization.css.CSSClass;
import de.lmu.ifi.dbs.elki.visualization.projector.ScatterPlotProjector;
@@ -60,8 +59,7 @@ public class ClusterOrderVisualization extends AbstractVisFactory {
private static final String NAME = "Predecessor Graph";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public ClusterOrderVisualization() {
super();
@@ -74,8 +72,8 @@ public class ClusterOrderVisualization extends AbstractVisFactory {
@Override
public void processNewResult(HierarchicalResult baseResult, Result result) {
- Collection<ClusterOrderResult<DoubleDistance>> cos = ResultUtil.filterResults(result, ClusterOrderResult.class);
- for(ClusterOrderResult<DoubleDistance> co : cos) {
+ Collection<ClusterOrderResult<?>> cos = ResultUtil.filterResults(result, ClusterOrderResult.class);
+ for(ClusterOrderResult<?> co : cos) {
Collection<ScatterPlotProjector<?>> ps = ResultUtil.filterResults(baseResult, ScatterPlotProjector.class);
for(ScatterPlotProjector<?> p : ps) {
final VisualizationTask task = new VisualizationTask(NAME, co, p.getRelation(), this);
@@ -104,7 +102,7 @@ public class ClusterOrderVisualization extends AbstractVisFactory {
/**
* The result we visualize
*/
- protected ClusterOrderResult<?> result;
+ protected ClusterOrderResult<? extends ClusterOrderEntry<?>> result;
public Instance(VisualizationTask task) {
super(task);
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java
index 9a5df4e4..98dc004f 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.cluster;
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
@@ -32,8 +32,6 @@ import org.w3c.dom.Element;
import de.lmu.ifi.dbs.elki.data.Cluster;
import de.lmu.ifi.dbs.elki.data.Clustering;
-import de.lmu.ifi.dbs.elki.data.DoubleVector;
-import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.data.model.EMModel;
import de.lmu.ifi.dbs.elki.data.model.MeanModel;
import de.lmu.ifi.dbs.elki.data.model.Model;
@@ -71,7 +69,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter
* @author Robert Rödler
*
* @apiviz.stereotype factory
- * @apiviz.uses EMClusterVisualization oneway - - «create»
+ * @apiviz.uses Instance oneway - - «create»
*/
public class EMClusterVisualization extends AbstractVisFactory {
/**
@@ -92,8 +90,8 @@ public class EMClusterVisualization extends AbstractVisFactory {
}
@Override
- public Instance<DoubleVector> makeVisualization(VisualizationTask task) {
- return new Instance<>(task);
+ public Instance makeVisualization(VisualizationTask task) {
+ return new Instance(task);
}
@Override
@@ -103,7 +101,7 @@ public class EMClusterVisualization extends AbstractVisFactory {
for(Clustering<?> c : clusterings) {
if(c.getAllClusters().size() > 0) {
// Does the cluster have a model with cluster means?
- Clustering<MeanModel<DoubleVector>> mcls = findMeanModel(c);
+ Clustering<MeanModel> mcls = findMeanModel(c);
if(mcls != null) {
Collection<ScatterPlotProjector<?>> ps = ResultUtil.filterResults(baseResult, ScatterPlotProjector.class);
for(ScatterPlotProjector<?> p : ps) {
@@ -120,15 +118,14 @@ public class EMClusterVisualization extends AbstractVisFactory {
/**
* Test if the given clustering has a mean model.
*
- * @param <NV> Vector type
* @param c Clustering to inspect
* @return the clustering cast to return a mean model, null otherwise.
*/
@SuppressWarnings("unchecked")
- private static <NV extends NumberVector<?>> Clustering<MeanModel<NV>> findMeanModel(Clustering<?> c) {
+ private static Clustering<MeanModel> findMeanModel(Clustering<?> c) {
final Model firstModel = c.getAllClusters().get(0).getModel();
- if(c.getAllClusters().get(0).getModel() instanceof MeanModel<?> && firstModel instanceof EMModel<?>) {
- return (Clustering<MeanModel<NV>>) c;
+ if(c.getAllClusters().get(0).getModel() instanceof MeanModel && firstModel instanceof EMModel) {
+ return (Clustering<MeanModel>) c;
}
return null;
}
@@ -140,12 +137,10 @@ public class EMClusterVisualization extends AbstractVisFactory {
*
* @apiviz.has EMModel oneway - - visualizes
* @apiviz.uses GrahamScanConvexHull2D
- *
- * @param <NV> Type of the NumberVector being visualized.
*/
// TODO: nicer stacking of n-fold hulls
// TODO: can we find a proper sphere for 3+ dimensions?
- public class Instance<NV extends NumberVector<?>> extends AbstractScatterplotVisualization {
+ public class Instance extends AbstractScatterplotVisualization {
/**
* Generic tags to indicate the type of element. Used in IDs, CSS-Classes
* etc.
@@ -155,7 +150,7 @@ public class EMClusterVisualization extends AbstractVisFactory {
/**
* The result we work on
*/
- Clustering<EMModel<NV>> clustering;
+ Clustering<EMModel> clustering;
private static final double KAPPA = SVGHyperSphere.EUCLIDEAN_KAPPA;
@@ -187,16 +182,16 @@ public class EMClusterVisualization extends AbstractVisFactory {
addCSSClasses(svgp);
// PCARunner
- PCARunner<NV> pcarun = ClassGenericsUtil.parameterizeOrAbort(PCARunner.class, new EmptyParameterization());
+ PCARunner pcarun = ClassGenericsUtil.parameterizeOrAbort(PCARunner.class, new EmptyParameterization());
- Iterator<Cluster<EMModel<NV>>> ci = clustering.getAllClusters().iterator();
+ Iterator<Cluster<EMModel>> ci = clustering.getAllClusters().iterator();
for(int cnum = 0; cnum < clustering.getAllClusters().size(); cnum++) {
- Cluster<EMModel<NV>> clus = ci.next();
+ Cluster<EMModel> clus = ci.next();
DBIDs ids = clus.getIDs();
if(ids.size() > 0) {
Matrix covmat = clus.getModel().getCovarianceMatrix();
- NV centroid = clus.getModel().getMean();
+ Vector centroid = clus.getModel().getMean();
Vector cent = new Vector(proj.fastProjectDataToRenderSpace(centroid));
// Compute the eigenvectors
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java
index 7c4b57f2..4c41759d 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java
@@ -32,8 +32,6 @@ import org.w3c.dom.Element;
import de.lmu.ifi.dbs.elki.data.Cluster;
import de.lmu.ifi.dbs.elki.data.Clustering;
-import de.lmu.ifi.dbs.elki.data.NumberVector;
-import de.lmu.ifi.dbs.elki.data.model.KMeansModel;
import de.lmu.ifi.dbs.elki.data.model.MeanModel;
import de.lmu.ifi.dbs.elki.data.model.MedoidModel;
import de.lmu.ifi.dbs.elki.data.model.Model;
@@ -152,7 +150,7 @@ public class VoronoiVisualization extends AbstractVisFactory {
*/
private static boolean testMeanModel(Clustering<?> c) {
Model firstmodel = c.getAllClusters().get(0).getModel();
- if (firstmodel instanceof KMeansModel<?>) {
+ if (firstmodel instanceof MeanModel) {
return true;
}
if (firstmodel instanceof MedoidModel) {
@@ -209,12 +207,11 @@ public class VoronoiVisualization extends AbstractVisFactory {
Model model = clus.getModel();
double[] mean;
if (model instanceof MeanModel) {
- @SuppressWarnings("unchecked")
- MeanModel<? extends NumberVector<?>> mmodel = (MeanModel<? extends NumberVector<?>>) model;
- mean = proj.fastProjectDataToRenderSpace(mmodel.getMean());
+ MeanModel mmodel = (MeanModel) model;
+ mean = mmodel.getMean().getArrayRef();
} else if (model instanceof MedoidModel) {
MedoidModel mmodel = (MedoidModel) model;
- mean = proj.fastProjectDataToRenderSpace(rel.get(mmodel.getMedoid()));
+ mean = rel.get(mmodel.getMedoid()).getColumnVector().getArrayRef();
} else {
continue;
}
@@ -227,7 +224,8 @@ public class VoronoiVisualization extends AbstractVisFactory {
layer.appendChild(path);
}
if (settings.mode == Mode.DELAUNAY || settings.mode == Mode.V_AND_D) {
- Element path = new SVGPath(means.get(0)).drawTo(means.get(1)).makeElement(svgp);
+ Element path = new SVGPath(proj.fastProjectDataToRenderSpace(means.get(0)))//
+ .drawTo(proj.fastProjectDataToRenderSpace(means.get(1))).makeElement(svgp);
SVGUtil.addCSSClass(path, KMEANSBORDER);
layer.appendChild(path);
}
@@ -239,8 +237,7 @@ public class VoronoiVisualization extends AbstractVisFactory {
Model model = clus.getModel();
Vector mean;
if (model instanceof MeanModel) {
- @SuppressWarnings("unchecked")
- MeanModel<? extends NumberVector<?>> mmodel = (MeanModel<? extends NumberVector<?>>) model;
+ MeanModel mmodel = (MeanModel) model;
mean = mmodel.getMean().getColumnVector();
} else if (model instanceof MedoidModel) {
MedoidModel mmodel = (MedoidModel) model;
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/package-info.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/package-info.java
index 076b6563..3b0049dd 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/package-info.java
@@ -5,7 +5,7 @@
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java
index a2b34e0e..e1e1872c 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.density;
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
@@ -63,8 +63,7 @@ public class DensityEstimationOverlay extends AbstractVisFactory {
private static final String NAME = "Density estimation overlay";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public DensityEstimationOverlay() {
super();
@@ -134,7 +133,9 @@ public class DensityEstimationOverlay extends AbstractVisFactory {
layer.appendChild(itag);
}
- @Reference(authors = "D. W. Scott", title = "Multivariate density estimation", booktitle = "Multivariate Density Estimation: Theory, Practice, and Visualization", url = "http://dx.doi.org/10.1002/9780470316849.fmatter")
+ @Reference(authors = "D. W. Scott", title = "Multivariate density estimation: Theory, Practice, and Visualization", //
+ booktitle = "Multivariate Density Estimation: Theory, Practice, and Visualization", //
+ url = "http://dx.doi.org/10.1002/9780470316849")
private double[] initializeBandwidth(double[][] data) {
MeanVariance mv0 = new MeanVariance();
MeanVariance mv1 = new MeanVariance();
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java
index 438eddb8..6b926525 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.index;
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
@@ -103,6 +103,7 @@ public class TreeMBRVisualization extends AbstractVisFactory {
for(ScatterPlotProjector<?> p : ps) {
final VisualizationTask task = new VisualizationTask(NAME, (Result) tree, p.getRelation(), this);
task.level = VisualizationTask.LEVEL_BACKGROUND + 1;
+ task.initDefaultVisibility(false);
baseResult.getHierarchy().add((Result) tree, task);
baseResult.getHierarchy().add(p, task);
}
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java
index 4ced6de1..4b4e77a0 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.index;
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
@@ -35,8 +35,6 @@ 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.distancefunction.minkowski.LPNormDistanceFunction;
import de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski.ManhattanDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance;
import de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.AbstractMTree;
import de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.AbstractMTreeNode;
import de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.MTreeEntry;
@@ -66,7 +64,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter
* @author Erich Schubert
*
* @apiviz.stereotype factory
- * @apiviz.uses TreeSphereVisualization oneway - - «create»
+ * @apiviz.uses Instance oneway - - «create»
*/
public class TreeSphereVisualization extends AbstractVisFactory {
/**
@@ -106,12 +104,13 @@ public class TreeSphereVisualization extends AbstractVisFactory {
@Override
public void processNewResult(HierarchicalResult baseResult, Result result) {
Collection<ScatterPlotProjector<?>> ps = ResultUtil.filterResults(baseResult, ScatterPlotProjector.class);
- for (ScatterPlotProjector<?> p : ps) {
- Collection<AbstractMTree<?, DoubleDistance, ?, ?, ?>> trees = ResultUtil.filterResults(result, AbstractMTree.class);
- for (AbstractMTree<?, DoubleDistance, ?, ?, ?> tree : trees) {
- if (canVisualize(tree) && tree instanceof Result) {
+ for(ScatterPlotProjector<?> p : ps) {
+ Collection<AbstractMTree<?, ?, ?, ?>> trees = ResultUtil.filterResults(result, AbstractMTree.class);
+ for(AbstractMTree<?, ?, ?, ?> tree : trees) {
+ if(canVisualize(tree) && tree instanceof Result) {
final VisualizationTask task = new VisualizationTask(NAME, (Result) tree, p.getRelation(), this);
task.level = VisualizationTask.LEVEL_BACKGROUND + 1;
+ task.initDefaultVisibility(false);
baseResult.getHierarchy().add((Result) tree, task);
baseResult.getHierarchy().add(p, task);
}
@@ -121,7 +120,7 @@ public class TreeSphereVisualization extends AbstractVisFactory {
@Override
public Visualization makeVisualization(VisualizationTask task) {
- return new Instance<DoubleDistance, MTreeNode<Object, DoubleDistance>, MTreeEntry>(task);
+ return new Instance<MTreeNode<Object>, MTreeEntry>(task);
}
/**
@@ -130,11 +129,11 @@ public class TreeSphereVisualization extends AbstractVisFactory {
* @param tree Tree to visualize
* @return p value
*/
- public static double getLPNormP(AbstractMTree<?, ?, ?, ?, ?> tree) {
+ public static double getLPNormP(AbstractMTree<?, ?, ?, ?> tree) {
// Note: we deliberately lose generics here, so the compilers complain
// less on the next typecheck and cast!
- DistanceFunction<?, ?> distanceFunction = tree.getDistanceFunction();
- if (LPNormDistanceFunction.class.isInstance(distanceFunction)) {
+ DistanceFunction<?> distanceFunction = tree.getDistanceFunction();
+ if(LPNormDistanceFunction.class.isInstance(distanceFunction)) {
return ((LPNormDistanceFunction) distanceFunction).getP();
}
return 0;
@@ -146,7 +145,7 @@ public class TreeSphereVisualization extends AbstractVisFactory {
* @param tree Tree to visualize
* @return whether the tree is visualizable
*/
- public static boolean canVisualize(AbstractMTree<?, ?, ?, ?, ?> tree) {
+ public static boolean canVisualize(AbstractMTree<?, ?, ?, ?> tree) {
return getLPNormP(tree) > 0;
}
@@ -162,7 +161,7 @@ public class TreeSphereVisualization extends AbstractVisFactory {
* @param <E> Tree entry type
*/
// TODO: listen for tree changes!
- public class Instance<D extends NumberDistance<D, ?>, N extends AbstractMTreeNode<?, D, N, E>, E extends MTreeEntry> extends AbstractScatterplotVisualization implements DataStoreListener {
+ public class Instance<N extends AbstractMTreeNode<?, N, E>, E extends MTreeEntry> extends AbstractScatterplotVisualization implements DataStoreListener {
protected double p;
/**
@@ -173,7 +172,7 @@ public class TreeSphereVisualization extends AbstractVisFactory {
/**
* The tree we visualize
*/
- protected AbstractMTree<?, D, N, E, ?> tree;
+ protected AbstractMTree<?, N, E, ?> tree;
/**
* Constructor
@@ -196,28 +195,31 @@ public class TreeSphereVisualization extends AbstractVisFactory {
ColorLibrary colors = style.getColorSet(StyleLibrary.PLOT);
p = getLPNormP(tree);
- if (tree != null) {
- if (ManhattanDistanceFunction.class.isInstance(tree.getDistanceFunction())) {
+ if(tree != null) {
+ if(ManhattanDistanceFunction.class.isInstance(tree.getDistanceFunction())) {
dist = Modus.MANHATTAN;
- } else if (EuclideanDistanceFunction.class.isInstance(tree.getDistanceFunction())) {
+ }
+ else if(EuclideanDistanceFunction.class.isInstance(tree.getDistanceFunction())) {
dist = Modus.EUCLIDEAN;
- } else {
+ }
+ else {
dist = Modus.LPCROSS;
}
E root = tree.getRootEntry();
final int mtheight = tree.getHeight();
- for (int i = 0; i < mtheight; i++) {
+ for(int i = 0; i < mtheight; i++) {
CSSClass cls = new CSSClass(this, INDEX + i);
// Relative depth of this level. 1.0 = toplevel
final double relDepth = 1. - (((double) i) / mtheight);
- if (settings.fill) {
+ if(settings.fill) {
cls.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colors.getColor(i));
cls.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, relDepth * style.getLineWidth(StyleLibrary.PLOT));
cls.setStatement(SVGConstants.CSS_FILL_PROPERTY, colors.getColor(i));
cls.setStatement(SVGConstants.CSS_FILL_OPACITY_PROPERTY, 0.1 / (projdim - 1));
cls.setStatement(SVGConstants.CSS_STROKE_LINECAP_PROPERTY, SVGConstants.CSS_ROUND_VALUE);
cls.setStatement(SVGConstants.CSS_STROKE_LINEJOIN_PROPERTY, SVGConstants.CSS_ROUND_VALUE);
- } else {
+ }
+ else {
cls.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colors.getColor(i));
cls.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, relDepth * style.getLineWidth(StyleLibrary.PLOT));
cls.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE);
@@ -240,16 +242,17 @@ public class TreeSphereVisualization extends AbstractVisFactory {
* @param entry Current entry
* @param depth Current depth
*/
- private void visualizeMTreeEntry(SVGPlot svgp, Element layer, Projection2D proj, AbstractMTree<?, D, N, E, ?> mtree, E entry, int depth) {
+ private void visualizeMTreeEntry(SVGPlot svgp, Element layer, Projection2D proj, AbstractMTree<?, N, E, ?> mtree, E entry, int depth) {
DBID roid = entry.getRoutingObjectID();
- if (roid != null) {
- NumberVector<?> ro = rel.get(roid);
+ if(roid != null) {
+ NumberVector ro = rel.get(roid);
double rad = entry.getCoveringRadius();
final Element r;
- if (dist == Modus.MANHATTAN) {
+ if(dist == Modus.MANHATTAN) {
r = SVGHyperSphere.drawManhattan(svgp, proj, ro, rad);
- } else if (dist == Modus.EUCLIDEAN) {
+ }
+ else if(dist == Modus.EUCLIDEAN) {
r = SVGHyperSphere.drawEuclidean(svgp, proj, ro, rad);
}
// TODO: add visualizer for infinity norm?
@@ -261,11 +264,11 @@ public class TreeSphereVisualization extends AbstractVisFactory {
layer.appendChild(r);
}
- if (!entry.isLeafEntry()) {
+ if(!entry.isLeafEntry()) {
N node = mtree.getNode(entry);
- for (int i = 0; i < node.getNumEntries(); i++) {
+ for(int i = 0; i < node.getNumEntries(); i++) {
E child = node.getEntry(i);
- if (!child.isLeafEntry()) {
+ if(!child.isLeafEntry()) {
visualizeMTreeEntry(svgp, layer, proj, mtree, child, depth + 1);
}
}
@@ -293,7 +296,7 @@ public class TreeSphereVisualization extends AbstractVisFactory {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
Flag fillF = new Flag(TreeMBRVisualization.Parameterizer.FILL_ID);
- if (config.grab(fillF)) {
+ if(config.grab(fillF)) {
fill = fillF.isTrue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/package-info.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/package-info.java
index b82e9359..c47c6fbd 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/package-info.java
@@ -5,7 +5,7 @@
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java
index 752cf333..bca3f634 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.outlier;
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
@@ -180,7 +180,7 @@ public class BubbleVisualization extends AbstractVisFactory {
for(DBIDIter objId = sample.getSample().iter(); objId.valid(); objId.advance()) {
final double radius = getScaledForId(objId);
if(radius > 0.01 && !Double.isInfinite(radius)) {
- final NumberVector<?> vec = rel.get(objId);
+ final NumberVector vec = rel.get(objId);
if(vec != null) {
double[] v = proj.fastProjectDataToRenderSpace(vec);
if(v[0] != v[0] || v[1] != v[1]) {
@@ -198,7 +198,7 @@ public class BubbleVisualization extends AbstractVisFactory {
for(DBIDIter objId = sample.getSample().iter(); objId.valid(); objId.advance()) {
final double radius = getScaledForId(objId);
if(radius > 0.01 && !Double.isInfinite(radius)) {
- final NumberVector<?> vec = rel.get(objId);
+ final NumberVector vec = rel.get(objId);
if(vec != null) {
double[] v = proj.fastProjectDataToRenderSpace(vec);
if(v[0] != v[0] || v[1] != v[1]) {
@@ -270,7 +270,7 @@ public class BubbleVisualization extends AbstractVisFactory {
* by the given scales.
*/
protected double getScaledForId(DBIDRef id) {
- double d = result.getScores().get(id).doubleValue();
+ double d = result.getScores().doubleValue(id);
if(Double.isNaN(d) || Double.isInfinite(d)) {
return 0.0;
}
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java
index e62f0c3d..f169b0a8 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.outlier;
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
@@ -152,7 +152,7 @@ public class COPVectorVisualization extends AbstractVisFactory {
if (VMath.euclideanLength(ev) < 0.01) {
continue;
}
- final NumberVector<?> vec = rel.get(objId);
+ final NumberVector vec = rel.get(objId);
if (vec == null) {
continue;
}
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/package-info.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/package-info.java
index f8da2afd..d0f5fa0f 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/package-info.java
@@ -5,7 +5,7 @@
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
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java
index 38dc973f..40fd96f9 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java
@@ -1,26 +1,27 @@
package de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.selection;
-/*
- This file is part of ELKI:
+
+/*
+ This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
-
- Copyright (C) 2013
- Ludwig-Maximilians-Universität München
- Lehr- und Forschungseinheit für Datenbanksysteme
+
+ Copyright (C) 2013
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
import java.util.Collection;
@@ -32,15 +33,13 @@ import de.lmu.ifi.dbs.elki.data.VectorUtil;
import de.lmu.ifi.dbs.elki.database.datastore.DataStoreListener;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
-import de.lmu.ifi.dbs.elki.database.ids.distance.DistanceDBIDPair;
-import de.lmu.ifi.dbs.elki.database.ids.distance.DistanceDBIDListIter;
-import de.lmu.ifi.dbs.elki.database.ids.distance.KNNList;
+import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter;
+import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair;
+import de.lmu.ifi.dbs.elki.database.ids.KNNList;
import de.lmu.ifi.dbs.elki.distance.distancefunction.ArcCosineDistanceFunction;
import de.lmu.ifi.dbs.elki.distance.distancefunction.CosineDistanceFunction;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction;
import de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski.LPNormDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance;
import de.lmu.ifi.dbs.elki.index.preprocessed.knn.AbstractMaterializeKNNPreprocessor;
import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
import de.lmu.ifi.dbs.elki.math.MathUtil;
@@ -95,13 +94,13 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
@Override
public Visualization makeVisualization(VisualizationTask task) {
- return new Instance<DoubleDistance>(task);
+ return new Instance(task);
}
@Override
public void processNewResult(HierarchicalResult baseResult, Result result) {
- Collection<AbstractMaterializeKNNPreprocessor<?, ?, ?>> kNNIndex = ResultUtil.filterResults(result, AbstractMaterializeKNNPreprocessor.class);
- for(AbstractMaterializeKNNPreprocessor<?, ?, ?> kNN : kNNIndex) {
+ Collection<AbstractMaterializeKNNPreprocessor<?>> kNNIndex = ResultUtil.filterResults(result, AbstractMaterializeKNNPreprocessor.class);
+ for(AbstractMaterializeKNNPreprocessor<?> kNN : kNNIndex) {
Collection<ScatterPlotProjector<?>> ps = ResultUtil.filterResults(baseResult, ScatterPlotProjector.class);
for(ScatterPlotProjector<?> p : ps) {
final VisualizationTask task = new VisualizationTask(NAME, kNN, p.getRelation(), this);
@@ -118,8 +117,8 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
* @param kNN kNN preprocessor
* @return p of LP norm, or NaN
*/
- public static double getLPNormP(AbstractMaterializeKNNPreprocessor<?, ?, ?> kNN) {
- DistanceFunction<?, ?> distanceFunction = kNN.getDistanceQuery().getDistanceFunction();
+ public static double getLPNormP(AbstractMaterializeKNNPreprocessor<?> kNN) {
+ DistanceFunction<?> distanceFunction = kNN.getDistanceQuery().getDistanceFunction();
if(LPNormDistanceFunction.class.isInstance(distanceFunction)) {
return ((LPNormDistanceFunction) distanceFunction).getP();
}
@@ -132,8 +131,8 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
* @param kNN kNN preprocessor
* @return true when angular
*/
- public static boolean isAngularDistance(AbstractMaterializeKNNPreprocessor<?, ?, ?> kNN) {
- DistanceFunction<?, ?> distanceFunction = kNN.getDistanceQuery().getDistanceFunction();
+ public static boolean isAngularDistance(AbstractMaterializeKNNPreprocessor<?> kNN) {
+ DistanceFunction<?> distanceFunction = kNN.getDistanceQuery().getDistanceFunction();
if(CosineDistanceFunction.class.isInstance(distanceFunction)) {
return true;
}
@@ -152,13 +151,13 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
* @param angle Opening angle in radians
* @return path element
*/
- public static Element drawCosine(SVGPlot svgp, Projection2D proj, NumberVector<?> mid, double angle) {
+ public static Element drawCosine(SVGPlot svgp, Projection2D proj, NumberVector mid, double angle) {
// Project origin
double[] pointOfOrigin = proj.fastProjectDataToRenderSpace(new double[proj.getInputDimensionality()]);
-
+
// direction of the selected Point
double[] selPoint = proj.fastProjectDataToRenderSpace(mid);
-
+
double[] range1, range2;
{
// Rotation plane:
@@ -195,7 +194,7 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
range1 = proj.fastProjectDataToRenderSpace(r1);
range2 = proj.fastProjectDataToRenderSpace(r2);
}
-
+
// Continue lines to viewport.
{
CanvasSize viewport = proj.estimateViewport();
@@ -213,7 +212,7 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
VMath.timesEquals(start2, viewport.continueToMargin(range2, start2));
VMath.plusEquals(start1, range1);
VMath.plusEquals(start2, range2);
-
+
// TODO: add filled variant?
SVGPath path = new SVGPath();
path.moveTo(start1);
@@ -233,9 +232,8 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
* @apiviz.has SelectionResult oneway - - visualizes
* @apiviz.has DBIDSelection oneway - - visualizes
*
- * @param <D> Distance type
*/
- public class Instance<D extends NumberDistance<D, ?>> extends AbstractScatterplotVisualization implements DataStoreListener {
+ public class Instance extends AbstractScatterplotVisualization implements DataStoreListener {
/**
* Generic tags to indicate the type of element. Used in IDs, CSS-Classes
* etc.
@@ -249,7 +247,7 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
/**
* The selection result we work on
*/
- private AbstractMaterializeKNNPreprocessor<? extends NumberVector<?>, D, ?> result;
+ private AbstractMaterializeKNNPreprocessor<? extends NumberVector> result;
/**
* Constructor
@@ -277,18 +275,18 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
DBIDs selection = selContext.getSelectedIds();
for(DBIDIter i = selection.iter(); i.valid(); i.advance()) {
- final KNNList<D> knn = result.get(i);
- for(DistanceDBIDListIter<D> iter = knn.iter(); iter.valid(); iter.advance()) {
+ final KNNList knn = result.get(i);
+ for(DoubleDBIDListIter iter = knn.iter(); iter.valid(); iter.advance()) {
try {
double[] v = proj.fastProjectDataToRenderSpace(rel.get(iter));
- if (v[0] != v[0] || v[1] != v[1]) {
+ if(v[0] != v[0] || v[1] != v[1]) {
continue; // NaN!
}
Element dot = svgp.svgCircle(v[0], v[1], size);
SVGUtil.addCSSClass(dot, KNNMARKER);
layer.appendChild(dot);
- Element lbl = svgp.svgText(v[0] + size, v[1] + size, iter.getDistance().toString());
+ Element lbl = svgp.svgText(v[0] + size, v[1] + size, Double.toString(iter.doubleValue()));
SVGUtil.addCSSClass(lbl, KNNDIST);
layer.appendChild(lbl);
}
@@ -297,21 +295,21 @@ public class DistanceFunctionVisualization extends AbstractVisFactory {
}
}
// Last element
- DistanceDBIDPair<D> last = knn.get(knn.size() - 1);
+ DoubleDBIDPair last = knn.get(knn.size() - 1);
// Draw hypersphere if possible
{
final Element dist;
if(p == 1.0) {
- dist = SVGHyperSphere.drawManhattan(svgp, proj, rel.get(i), last.getDistance().doubleValue());
+ dist = SVGHyperSphere.drawManhattan(svgp, proj, rel.get(i), last.doubleValue());
}
else if(p == 2.0) {
- dist = SVGHyperSphere.drawEuclidean(svgp, proj, rel.get(i), last.getDistance().doubleValue());
+ dist = SVGHyperSphere.drawEuclidean(svgp, proj, rel.get(i), last.doubleValue());
}
else if(!Double.isNaN(p)) {
- dist = SVGHyperSphere.drawLp(svgp, proj, rel.get(i), last.getDistance().doubleValue(), p);
+ dist = SVGHyperSphere.drawLp(svgp, proj, rel.get(i), last.doubleValue(), p);
}
else if(angular) {
- final NumberVector<?> refvec = rel.get(i);
+ final NumberVector refvec = rel.get(i);
// Recompute the angle - it could be cosine or arccosine distance
double maxangle = Math.acos(VectorUtil.cosAngle(refvec, rel.get(last)));
dist = drawCosine(svgp, proj, refvec, maxangle);
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java
index 0f9f99a4..7c49395c 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java
@@ -160,7 +160,7 @@ public class MoveObjectsToolVisualization extends AbstractVisFactory {
private void updateDB(DBIDs dbids, Vector movingVector) {
throw new AbortException("FIXME: INCOMPLETE TRANSITION");
/*
- * NumberVector<?> nv = null; database.accumulateDataStoreEvents();
+ * NumberVector nv = null; database.accumulateDataStoreEvents();
* Representation<DatabaseObjectMetadata> mrep =
* database.getMetadataQuery(); for(DBID dbid : dbids) { NV obj =
* database.get(dbid); // Copy metadata to keep DatabaseObjectMetadata
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java
index f088d219..9289c350 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java
@@ -76,8 +76,7 @@ public class SelectionToolCubeVisualization extends AbstractVisFactory {
private static final String NAME = "Range Selection";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}.
+ * Constructor.
*/
public SelectionToolCubeVisualization() {
super();
@@ -261,7 +260,7 @@ public class SelectionToolCubeVisualization extends AbstractVisFactory {
selection.clear();
candidates: for (DBIDIter iditer = rel.iterDBIDs(); iditer.valid(); iditer.advance()) {
- NumberVector<?> dbTupel = rel.get(iditer);
+ NumberVector dbTupel = rel.get(iditer);
for (int i = 0; i < dim; i++) {
if (ranges != null && ranges[i] != null) {
if (dbTupel.doubleValue(i) < ranges[i].first || dbTupel.doubleValue(i) > ranges[i].second) {
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java
index 6fa8200c..06b0e2ec 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java
@@ -75,8 +75,7 @@ public class SelectionToolDotVisualization extends AbstractVisFactory {
}
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public SelectionToolDotVisualization() {
super();
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/package-info.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/package-info.java
index 86214f53..00422c31 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/package-info.java
@@ -5,7 +5,7 @@
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