diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/referencepoints')
5 files changed, 47 insertions, 44 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java index 24829d98..d8544cd4 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java @@ -32,7 +32,7 @@ import de.lmu.ifi.dbs.elki.database.relation.RelationUtil; 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.OptionID; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; import de.lmu.ifi.dbs.elki.utilities.pairs.Pair; @@ -83,7 +83,7 @@ public class AxisBasedReferencePoints<V extends NumberVector<?>> implements Refe // Compute mean and extend from minmax. double[] mean = new double[dim]; double[] delta = new double[dim]; - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { mean[d] = (minmax.first.doubleValue(d) + minmax.second.doubleValue(d)) * .5; delta[d] = spacescale * (minmax.second.doubleValue(d) - mean[d]); } @@ -92,21 +92,22 @@ public class AxisBasedReferencePoints<V extends NumberVector<?>> implements Refe double[] vec = new double[dim]; // Use min and max - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { vec[d] = mean[d] - delta[d]; } result.add(factory.newNumberVector(vec)); - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { vec[d] = mean[d] + delta[d]; } result.add(factory.newNumberVector(vec)); // Plus axis end points: - for (int i = 0; i < dim; i++) { - for (int d = 0; d < dim; d++) { - if (d != i) { + for(int i = 0; i < dim; i++) { + for(int d = 0; d < dim; d++) { + if(d != i) { vec[d] = mean[d] - delta[d]; - } else { + } + else { vec[d] = mean[d] + delta[d]; } } @@ -133,8 +134,8 @@ public class AxisBasedReferencePoints<V extends NumberVector<?>> implements Refe protected void makeOptions(Parameterization config) { super.makeOptions(config); DoubleParameter spacescaleP = new DoubleParameter(SPACE_SCALE_ID, 1.0); - spacescaleP.addConstraint(new GreaterEqualConstraint(0.0)); - if (config.grab(spacescaleP)) { + spacescaleP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE); + if(config.grab(spacescaleP)) { spacescale = spacescaleP.getValue(); } } diff --git a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java index b94564cf..007efe6f 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java @@ -29,10 +29,11 @@ import java.util.Collection; import de.lmu.ifi.dbs.elki.data.NumberVector; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.database.relation.RelationUtil; +import de.lmu.ifi.dbs.elki.math.MathUtil; 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.OptionID; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; @@ -97,23 +98,23 @@ public class GridBasedReferencePoints<V extends NumberVector<?>> implements Refe // Compute mean from minmax. double[] mean = new double[dim]; - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { mean[d] = (minmax.first.doubleValue(d) + minmax.second.doubleValue(d)) * .5; } - int gridpoints = Math.max(1, (int) Math.pow(gridres + 1, dim)); + int gridpoints = Math.max(1, MathUtil.ipowi(gridres + 1, dim)); ArrayList<V> result = new ArrayList<>(gridpoints); double[] delta = new double[dim]; - if (gridres > 0) { + if(gridres > 0) { double halfgrid = gridres / 2.0; - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { delta[d] = (minmax.second.doubleValue(d) - minmax.first.doubleValue(d)) / gridres; } double[] vec = new double[dim]; - for (int i = 0; i < gridpoints; i++) { + for(int i = 0; i < gridpoints; i++) { int acc = i; - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { int coord = acc % (gridres + 1); acc = acc / (gridres + 1); vec[d] = mean[d] + (coord - halfgrid) * delta[d] * gridscale; @@ -122,7 +123,8 @@ public class GridBasedReferencePoints<V extends NumberVector<?>> implements Refe // logger.debug("New reference point: " + FormatUtil.format(vec)); result.add(newp); } - } else { + } + else { result.add(factory.newNumberVector(mean)); // logger.debug("New reference point: " + FormatUtil.format(mean)); } @@ -152,14 +154,14 @@ public class GridBasedReferencePoints<V extends NumberVector<?>> implements Refe protected void makeOptions(Parameterization config) { super.makeOptions(config); IntParameter gridP = new IntParameter(GRID_ID, 1); - gridP.addConstraint(new GreaterEqualConstraint(0)); - if (config.grab(gridP)) { + gridP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_INT); + if(config.grab(gridP)) { gridres = gridP.getValue(); } DoubleParameter gridscaleP = new DoubleParameter(GRID_SCALE_ID, 1.0); - gridscaleP.addConstraint(new GreaterEqualConstraint(0.0)); - if (config.grab(gridscaleP)) { + gridscaleP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE); + if(config.grab(gridscaleP)) { gridscale = gridscaleP.getValue(); } } diff --git a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java index 0a59d410..9d866ecc 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java @@ -32,7 +32,7 @@ import de.lmu.ifi.dbs.elki.database.relation.RelationUtil; 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.OptionID; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterConstraint; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; @@ -97,15 +97,15 @@ public class RandomGeneratedReferencePoints<V extends NumberVector<?>> implement // Compute mean from minmax. double[] mean = new double[dim]; double[] delta = new double[dim]; - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { mean[d] = (minmax.first.doubleValue(d + 1) + minmax.second.doubleValue(d + 1)) * .5; delta[d] = (minmax.second.doubleValue(d + 1) - minmax.first.doubleValue(d + 1)); } ArrayList<V> result = new ArrayList<>(samplesize); double[] vec = new double[dim]; - for (int i = 0; i < samplesize; i++) { - for (int d = 0; d < dim; d++) { + for(int i = 0; i < samplesize; i++) { + for(int d = 0; d < dim; d++) { vec[d] = mean[d] + (Math.random() - 0.5) * scale * delta[d]; } V newp = factory.newNumberVector(vec); @@ -139,14 +139,14 @@ public class RandomGeneratedReferencePoints<V extends NumberVector<?>> implement super.makeOptions(config); IntParameter samplesizeP = new IntParameter(N_ID); - samplesizeP.addConstraint(new GreaterConstraint(0)); - if (config.grab(samplesizeP)) { + samplesizeP.addConstraint(CommonConstraints.GREATER_EQUAL_ONE_INT); + if(config.grab(samplesizeP)) { samplesize = samplesizeP.getValue(); } DoubleParameter scaleP = new DoubleParameter(SCALE_ID, 1.0); - scaleP.addConstraint(new GreaterConstraint(0.0)); - if (config.grab(scaleP)) { + scaleP.addConstraint(CommonConstraints.GREATER_THAN_ZERO_DOUBLE); + if(config.grab(scaleP)) { scale = scaleP.getValue(); } } diff --git a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java index a2a48b30..ea80d9d9 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java @@ -36,7 +36,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.logging.LoggingUtil; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterConstraint; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; @@ -151,7 +151,7 @@ public class RandomSampleReferencePoints<V extends NumberVector<?>> implements R protected void makeOptions(Parameterization config) { super.makeOptions(config); IntParameter samplesizeP = new IntParameter(N_ID); - samplesizeP.addConstraint(new GreaterConstraint(0)); + samplesizeP.addConstraint(CommonConstraints.GREATER_EQUAL_ONE_INT); if(config.grab(samplesizeP)) { samplesize = samplesizeP.intValue(); } diff --git a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java index 611100b4..74cdf92b 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java @@ -33,7 +33,7 @@ import de.lmu.ifi.dbs.elki.database.relation.RelationUtil; 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.OptionID; -import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag; @@ -96,14 +96,14 @@ public class StarBasedReferencePoints<V extends NumberVector<?>> implements Refe double[] centroid = new double[dim]; double[] min = new double[dim]; double[] max = new double[dim]; - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { centroid[d] = 0; min[d] = Double.MAX_VALUE; max[d] = -Double.MAX_VALUE; } - for (DBIDIter iditer = database.iterDBIDs(); iditer.valid(); iditer.advance()) { + for(DBIDIter iditer = database.iterDBIDs(); iditer.valid(); iditer.advance()) { V obj = database.get(iditer); - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { double val = obj.doubleValue(d + 1); centroid[d] += val; min[d] = Math.min(min[d], val); @@ -111,21 +111,21 @@ public class StarBasedReferencePoints<V extends NumberVector<?>> implements Refe } } // finish centroid, scale min, max - for (int d = 0; d < dim; d++) { + for(int d = 0; d < dim; d++) { centroid[d] = centroid[d] / database.size(); min[d] = (min[d] - centroid[d]) * scale + centroid[d]; max[d] = (max[d] - centroid[d]) * scale + centroid[d]; } ArrayList<V> result = new ArrayList<>(2 * dim + 1); - if (!nocenter) { + if(!nocenter) { result.add(factory.newNumberVector(centroid)); } // Plus axis end points through centroid double[] vec = new double[dim]; - for (int i = 0; i < dim; i++) { - for (int d = 0; d < dim; d++) { - if (d != i) { + for(int i = 0; i < dim; i++) { + for(int d = 0; d < dim; d++) { + if(d != i) { vec[d] = centroid[d]; } } @@ -160,13 +160,13 @@ public class StarBasedReferencePoints<V extends NumberVector<?>> implements Refe protected void makeOptions(Parameterization config) { super.makeOptions(config); Flag nocenterF = new Flag(NOCENTER_ID); - if (config.grab(nocenterF)) { + if(config.grab(nocenterF)) { nocenter = nocenterF.getValue(); } DoubleParameter scaleP = new DoubleParameter(SCALE_ID, 1.0); - scaleP.addConstraint(new GreaterEqualConstraint(0.0)); - if (config.grab(scaleP)) { + scaleP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE); + if(config.grab(scaleP)) { scale = scaleP.getValue(); } } |