summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java
index dd4462c9..bd0adfda 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.optics;
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
@@ -30,11 +30,10 @@ import java.util.Map;
import org.apache.batik.util.SVGConstants;
import org.w3c.dom.Element;
+import de.lmu.ifi.dbs.elki.algorithm.clustering.optics.ClusterOrderEntry;
import de.lmu.ifi.dbs.elki.data.Cluster;
import de.lmu.ifi.dbs.elki.data.Clustering;
import de.lmu.ifi.dbs.elki.data.model.OPTICSModel;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
import de.lmu.ifi.dbs.elki.logging.Logging;
import de.lmu.ifi.dbs.elki.result.HierarchicalResult;
import de.lmu.ifi.dbs.elki.result.Result;
@@ -70,8 +69,7 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
private static final String NAME = "OPTICS Cluster Ranges";
/**
- * Constructor, adhering to
- * {@link de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable}
+ * Constructor.
*/
public OPTICSClusterVisualization() {
super();
@@ -80,9 +78,9 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
@Override
public void processNewResult(HierarchicalResult baseResult, Result result) {
Collection<OPTICSProjector<?>> ops = ResultUtil.filterResults(result, OPTICSProjector.class);
- for (OPTICSProjector<?> p : ops) {
+ for(OPTICSProjector<?> p : ops) {
final Clustering<OPTICSModel> ocl = findOPTICSClustering(baseResult);
- if (ocl != null) {
+ if(ocl != null) {
final VisualizationTask task = new VisualizationTask(NAME, ocl, null, this);
task.level = VisualizationTask.LEVEL_DATA;
baseResult.getHierarchy().add(p, task);
@@ -94,7 +92,7 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
@Override
public Visualization makeVisualization(VisualizationTask task) {
- return new Instance<DoubleDistance>(task);
+ return new Instance(task);
}
@Override
@@ -112,16 +110,17 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
@SuppressWarnings("unchecked")
protected static Clustering<OPTICSModel> findOPTICSClustering(Result result) {
Collection<Clustering<?>> cs = ResultUtil.filterResults(result, Clustering.class);
- for (Clustering<?> clus : cs) {
- if (clus.getToplevelClusters().size() == 0) {
+ for(Clustering<?> clus : cs) {
+ if(clus.getToplevelClusters().size() == 0) {
continue;
}
try {
Cluster<?> firstcluster = clus.getToplevelClusters().iterator().next();
- if (firstcluster.getModel() instanceof OPTICSModel) {
+ if(firstcluster.getModel() instanceof OPTICSModel) {
return (Clustering<OPTICSModel>) clus;
}
- } catch (Exception e) {
+ }
+ catch(Exception e) {
// Empty clustering? Shouldn't happen.
LOG.warning("Clustering with no cluster detected.", e);
}
@@ -135,10 +134,8 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
* @author Erich Schubert
*
* @apiviz.uses Clustering oneway - - «visualizes»
- *
- * @param <D> Distance type (actually unused)
*/
- public class Instance<D extends Distance<D>> extends AbstractOPTICSVisualization<D> {
+ public class Instance extends AbstractOPTICSVisualization<ClusterOrderEntry<?>> {
/**
* CSS class for markers
*/
@@ -169,7 +166,7 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
ColorLibrary colors = context.getStyleResult().getStyleLibrary().getColorSet(StyleLibrary.PLOT);
HashMap<Cluster<?>, String> colormap = new HashMap<>();
int cnum = 0;
- for (Cluster<?> c : clus.getAllClusters()) {
+ for(Cluster<?> c : clus.getAllClusters()) {
colormap.put(c, colors.getColor(cnum));
cnum++;
}
@@ -186,7 +183,7 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
private void drawClusters(Clustering<OPTICSModel> clustering, Hierarchy.Iter<Cluster<OPTICSModel>> clusters, int depth, Map<Cluster<?>, String> colormap) {
final double scale = StyleLibrary.SCALE;
- for (; clusters.valid(); clusters.advance()) {
+ for(; clusters.valid(); clusters.advance()) {
Cluster<OPTICSModel> cluster = clusters.get();
try {
OPTICSModel model = cluster.getModel();
@@ -196,16 +193,17 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
Element e = svgp.svgLine(x1, y, x2, y);
SVGUtil.addCSSClass(e, CSS_BRACKET);
String color = colormap.get(cluster);
- if (color != null) {
+ if(color != null) {
SVGUtil.setAtt(e, SVGConstants.SVG_STYLE_ATTRIBUTE, SVGConstants.CSS_STROKE_PROPERTY + ":" + color);
}
layer.appendChild(e);
- } catch (ClassCastException e) {
+ }
+ catch(ClassCastException e) {
LOG.warning("Expected OPTICSModel, got: " + cluster.getModel().getClass().getSimpleName());
}
// Descend
final Hierarchy.Iter<Cluster<OPTICSModel>> children = clustering.getClusterHierarchy().iterChildren(cluster);
- if (children != null) {
+ if(children != null) {
drawClusters(clustering, children, depth + 1, colormap);
}
}
@@ -216,7 +214,7 @@ public class OPTICSClusterVisualization extends AbstractVisFactory {
*/
private void addCSSClasses() {
// Class for the markers
- if (!svgp.getCSSClassManager().contains(CSS_BRACKET)) {
+ if(!svgp.getCSSClassManager().contains(CSS_BRACKET)) {
final CSSClass cls = new CSSClass(this, CSS_BRACKET);
final StyleLibrary style = context.getStyleResult().getStyleLibrary();
cls.setStatement(SVGConstants.CSS_STROKE_PROPERTY, style.getColor(StyleLibrary.PLOT));