diff options
author | Erich Schubert <erich@debian.org> | 2011-09-10 23:13:04 +0200 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:30 +0000 |
commit | 31b594b746419717396c9daa8bf1863890739d82 (patch) | |
tree | 995a0a53ba8f00ce98f653a4f79f986b10b2b402 /src/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java | |
parent | f229d1a7ad8b055647160621068188381be54521 (diff) | |
parent | 6160961591bfbfeab2ea5f7c249f58c78e893347 (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.java | 103 |
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 |