summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java
diff options
context:
space:
mode:
authorErich Schubert <erich@debian.org>2011-09-10 23:13:04 +0200
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:30 +0000
commit31b594b746419717396c9daa8bf1863890739d82 (patch)
tree995a0a53ba8f00ce98f653a4f79f986b10b2b402 /src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java
parentf229d1a7ad8b055647160621068188381be54521 (diff)
parent6160961591bfbfeab2ea5f7c249f58c78e893347 (diff)
Import Debian changes 0.4.0~beta2-1
elki (0.4.0~beta2-1) unstable; urgency=low * New upstream release. * Build with OpenJDK 7, which just entered unstable. * Move to main, since we can now build with free software only. * Drop Vcs-Browser used incorrectly (pointing to upstream VCS, not Debian packaging) (Closes: #638516)
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java b/src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java
new file mode 100644
index 00000000..06e94891
--- /dev/null
+++ b/src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java
@@ -0,0 +1,103 @@
+package de.lmu.ifi.dbs.elki.visualization.projector;
+
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2011
+ 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
+ (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
+ 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/>.
+ */
+
+import de.lmu.ifi.dbs.elki.data.NumberVector;
+import de.lmu.ifi.dbs.elki.data.type.TypeUtil;
+import de.lmu.ifi.dbs.elki.database.Database;
+import de.lmu.ifi.dbs.elki.database.relation.Relation;
+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.utilities.DatabaseUtil;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
+
+/**
+ * Produce one-dimensional projections.
+ *
+ * @author Erich Schubert
+ */
+// TODO: re-add maxdim option
+public class HistogramFactory implements ProjectorFactory {
+ /**
+ * Maximum dimensionality
+ */
+ private int maxdim = ScatterPlotFactory.MAX_DIMENSIONS_DEFAULT;
+
+ /**
+ * Constructor.
+ * @param maxdim Maximum dimensionality
+ */
+ public HistogramFactory(int maxdim) {
+ super();
+ this.maxdim = maxdim;
+ }
+
+ @Override
+ public void processNewResult(HierarchicalResult baseResult, Result newResult) {
+ Database db = ResultUtil.findDatabase(newResult);
+ if(db != null) {
+ for(Relation<?> rel : db.getRelations()) {
+ if(TypeUtil.NUMBER_VECTOR_FIELD.isAssignableFromType(rel.getDataTypeInformation())) {
+ @SuppressWarnings("unchecked")
+ Relation<NumberVector<?, ?>> vrel = (Relation<NumberVector<?, ?>>) rel;
+ final int dim = DatabaseUtil.dimensionality(vrel);
+ HistogramProjector<NumberVector<?, ?>> proj = new HistogramProjector<NumberVector<?, ?>>(vrel, Math.min(dim, maxdim));
+ baseResult.getHierarchy().add(vrel, proj);
+ }
+ }
+ }
+ }
+
+ /**
+ * Parameterization class.
+ *
+ * @author Erich Schubert
+ *
+ * @apiviz.exclude
+ */
+ public static class Parameterizer extends AbstractParameterizer {
+ /**
+ * Stores the maximum number of dimensions to show.
+ */
+ private int maxdim = ScatterPlotFactory.MAX_DIMENSIONS_DEFAULT;
+
+ @Override
+ protected void makeOptions(Parameterization config) {
+ super.makeOptions(config);
+ IntParameter maxdimP = new IntParameter(ScatterPlotFactory.Parameterizer.MAXDIM_ID, new GreaterEqualConstraint(1), ScatterPlotFactory.MAX_DIMENSIONS_DEFAULT);
+ if(config.grab(maxdimP)) {
+ maxdim = maxdimP.getValue();
+ }
+ }
+
+ @Override
+ protected HistogramFactory makeInstance() {
+ return new HistogramFactory(maxdim);
+ }
+ }
+} \ No newline at end of file