diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java | 110 |
1 files changed, 53 insertions, 57 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java b/src/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java index 36bbb823..1d1a7569 100644 --- a/src/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java +++ b/src/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java @@ -27,7 +27,6 @@ import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Random; import java.util.regex.Pattern; import de.lmu.ifi.dbs.elki.algorithm.AbstractDistanceBasedAlgorithm; @@ -43,6 +42,7 @@ import de.lmu.ifi.dbs.elki.result.SamplingResult; import de.lmu.ifi.dbs.elki.result.SettingsResult; import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil; import de.lmu.ifi.dbs.elki.utilities.InspectionUtil; +import de.lmu.ifi.dbs.elki.utilities.RandomFactory; import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; @@ -75,7 +75,7 @@ public class VisualizerParameterizer implements Parameterizable { /** * Get a logger for this class. */ - protected final static Logging logger = Logging.getLogger(VisualizerParameterizer.class); + private static final Logging LOG = Logging.getLogger(VisualizerParameterizer.class); /** * Parameter to get the style properties file. @@ -86,12 +86,12 @@ public class VisualizerParameterizer implements Parameterizable { * Default: default properties file * </p> */ - public final static OptionID STYLELIB_ID = OptionID.getOrCreateOptionID("visualizer.stylesheet", "Style properties file to use"); + public static final OptionID STYLELIB_ID = new OptionID("visualizer.stylesheet", "Style properties file to use"); /** * Default pattern for visualizer enabling. */ - public final static String DEFAULT_ENABLEVIS = "^" + Pattern.quote(VisualizerParameterizer.class.getPackage().getName()) + "\\..*"; + public static final String DEFAULT_ENABLEVIS = "^" + Pattern.quote(VisualizerParameterizer.class.getPackage().getName()) + "\\..*"; /** * Parameter to enable visualizers @@ -102,7 +102,7 @@ public class VisualizerParameterizer implements Parameterizable { * Default: ELKI core * </p> */ - public final static OptionID ENABLEVIS_ID = OptionID.getOrCreateOptionID("vis.enable", "Visualizers to enable by default."); + public static final OptionID ENABLEVIS_ID = new OptionID("vis.enable", "Visualizers to enable by default."); /** * Parameter to set the sampling level @@ -111,7 +111,7 @@ public class VisualizerParameterizer implements Parameterizable { * Key: -vis.sampling * </p> */ - public final static OptionID SAMPLING_ID = OptionID.getOrCreateOptionID("vis.sampling", "Maximum number of objects to visualize by default (for performance reasons)."); + public static final OptionID SAMPLING_ID = new OptionID("vis.sampling", "Maximum number of objects to visualize by default (for performance reasons)."); /** * Style library to use. @@ -138,7 +138,7 @@ public class VisualizerParameterizer implements Parameterizable { * * FIXME: make parameterizable. */ - private long seed = new Random().nextLong(); + private RandomFactory rnd = RandomFactory.DEFAULT; /** * Constructor. @@ -164,16 +164,16 @@ public class VisualizerParameterizer implements Parameterizable { * @return New context */ public VisualizerContext newContext(HierarchicalResult result) { - if(samplesize > 0) { + if (samplesize > 0) { Collection<Relation<?>> rels = ResultUtil.filterResults(result, Relation.class); - for(Relation<?> rel : rels) { - if(!ResultUtil.filterResults(rel, SamplingResult.class).isEmpty()) { + for (Relation<?> rel : rels) { + if (!ResultUtil.filterResults(rel, SamplingResult.class).isEmpty()) { continue; } int size = rel.size(); - if(size > samplesize) { + if (size > samplesize) { SamplingResult sample = new SamplingResult(rel); - sample.setSample(DBIDUtil.randomSample(sample.getSample(), samplesize, seed)); + sample.setSample(DBIDUtil.randomSample(sample.getSample(), samplesize, rnd)); ResultUtil.addChildResult(rel, sample); } } @@ -190,54 +190,54 @@ public class VisualizerParameterizer implements Parameterizable { * @return generated title */ public static String getTitle(Database db, Result result) { - List<Pair<Object, Parameter<?, ?>>> settings = new ArrayList<Pair<Object, Parameter<?, ?>>>(); - for(SettingsResult sr : ResultUtil.getSettingsResults(result)) { + List<Pair<Object, Parameter<?>>> settings = new ArrayList<Pair<Object, Parameter<?>>>(); + for (SettingsResult sr : ResultUtil.getSettingsResults(result)) { settings.addAll(sr.getSettings()); } String algorithm = null; String distance = null; String dataset = null; - for(Pair<Object, Parameter<?, ?>> setting : settings) { - if(setting.second.equals(OptionID.ALGORITHM)) { + for (Pair<Object, Parameter<?>> setting : settings) { + if (setting.second.equals(OptionID.ALGORITHM)) { algorithm = setting.second.getValue().toString(); } - if(setting.second.equals(AbstractDistanceBasedAlgorithm.DISTANCE_FUNCTION_ID)) { + if (setting.second.equals(AbstractDistanceBasedAlgorithm.DISTANCE_FUNCTION_ID)) { distance = setting.second.getValue().toString(); } - if(setting.second.equals(FileBasedDatabaseConnection.INPUT_ID)) { + if (setting.second.equals(FileBasedDatabaseConnection.INPUT_ID)) { dataset = setting.second.getValue().toString(); } } StringBuilder buf = new StringBuilder(); - if(algorithm != null) { + if (algorithm != null) { // shorten the algorithm - if(algorithm.contains(".")) { - algorithm = algorithm.substring(algorithm.lastIndexOf(".") + 1); + if (algorithm.contains(".")) { + algorithm = algorithm.substring(algorithm.lastIndexOf('.') + 1); } buf.append(algorithm); } - if(distance != null) { + if (distance != null) { // shorten the distance - if(distance.contains(".")) { - distance = distance.substring(distance.lastIndexOf(".") + 1); + if (distance.contains(".")) { + distance = distance.substring(distance.lastIndexOf('.') + 1); } - if(buf.length() > 0) { + if (buf.length() > 0) { buf.append(" using "); } buf.append(distance); } - if(dataset != null) { + if (dataset != null) { // shorten the data set filename - if(dataset.contains(File.separator)) { + if (dataset.contains(File.separator)) { dataset = dataset.substring(dataset.lastIndexOf(File.separator) + 1); } - if(buf.length() > 0) { + if (buf.length() > 0) { buf.append(" on "); } buf.append(dataset); } - if(buf.length() > 0) { + if (buf.length() > 0) { return buf.toString(); } return null; @@ -260,27 +260,27 @@ public class VisualizerParameterizer implements Parameterizable { protected Collection<ProjectorFactory> projectors = null; protected int samplesize = -1; - + @Override protected void makeOptions(Parameterization config) { super.makeOptions(config); - IntParameter samplingP = new IntParameter(SAMPLING_ID, new GreaterEqualConstraint(-1), 10000); - if(config.grab(samplingP)) { - samplesize = samplingP.getValue(); + IntParameter samplingP = new IntParameter(SAMPLING_ID, 10000); + samplingP.addConstraint(new GreaterEqualConstraint(-1)); + if (config.grab(samplingP)) { + samplesize = samplingP.intValue(); } StringParameter stylelibP = new StringParameter(STYLELIB_ID, PropertiesBasedStyleLibrary.DEFAULT_SCHEME_FILENAME); - if(config.grab(stylelibP)) { + if (config.grab(stylelibP)) { String filename = stylelibP.getValue(); try { stylelib = new PropertiesBasedStyleLibrary(filename, "Command line style"); - } - catch(AbortException e) { + } catch (AbortException e) { config.reportError(new WrongParameterValueException(stylelibP, filename, e)); } } PatternParameter enablevisP = new PatternParameter(ENABLEVIS_ID, DEFAULT_ENABLEVIS); - if(config.grab(enablevisP)) { - if(!"all".equals(enablevisP.getValueAsString())) { + if (config.grab(enablevisP)) { + if (!"all".equals(enablevisP.getValueAsString())) { enableVisualizers = enablevisP.getValue(); } } @@ -298,21 +298,19 @@ public class VisualizerParameterizer implements Parameterizable { */ private static <O> Collection<ProjectorFactory> collectProjectorFactorys(MergedParameterization config, Pattern filter) { ArrayList<ProjectorFactory> factories = new ArrayList<ProjectorFactory>(); - for(Class<?> c : InspectionUtil.cachedFindAllImplementations(ProjectorFactory.class)) { - if(filter != null && !filter.matcher(c.getCanonicalName()).find()) { + for (Class<?> c : InspectionUtil.cachedFindAllImplementations(ProjectorFactory.class)) { + if (filter != null && !filter.matcher(c.getCanonicalName()).find()) { continue; } try { config.rewind(); ProjectorFactory a = ClassGenericsUtil.tryInstantiate(ProjectorFactory.class, c, config); factories.add(a); - } - catch(Throwable e) { - if(logger.isDebugging()) { - logger.exception("Error instantiating visualization factory " + c.getName(), e.getCause()); - } - else { - logger.warning("Error instantiating visualization factory " + c.getName() + ": " + e.getMessage()); + } catch (Throwable e) { + if (LOG.isDebugging()) { + LOG.exception("Error instantiating visualization factory " + c.getName(), e.getCause()); + } else { + LOG.warning("Error instantiating visualization factory " + c.getName() + ": " + e.getMessage()); } } } @@ -328,21 +326,19 @@ public class VisualizerParameterizer implements Parameterizable { */ private static <O> Collection<VisFactory> collectVisFactorys(MergedParameterization config, Pattern filter) { ArrayList<VisFactory> factories = new ArrayList<VisFactory>(); - for(Class<?> c : InspectionUtil.cachedFindAllImplementations(VisFactory.class)) { - if(filter != null && !filter.matcher(c.getCanonicalName()).find()) { + for (Class<?> c : InspectionUtil.cachedFindAllImplementations(VisFactory.class)) { + if (filter != null && !filter.matcher(c.getCanonicalName()).find()) { continue; } try { config.rewind(); VisFactory a = ClassGenericsUtil.tryInstantiate(VisFactory.class, c, config); factories.add(a); - } - catch(Throwable e) { - if(logger.isDebugging()) { - logger.exception("Error instantiating visualization factory " + c.getName(), e.getCause()); - } - else { - logger.warning("Error instantiating visualization factory " + c.getName() + ": " + e.getMessage()); + } catch (Throwable e) { + if (LOG.isDebugging()) { + LOG.exception("Error instantiating visualization factory " + c.getName(), e.getCause()); + } else { + LOG.warning("Error instantiating visualization factory " + c.getName() + ": " + e.getMessage()); } } } @@ -354,4 +350,4 @@ public class VisualizerParameterizer implements Parameterizable { return new VisualizerParameterizer(samplesize, stylelib, projectors, factories, enableVisualizers); } } -}
\ No newline at end of file +} |