summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/utilities/referencepoints
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/referencepoints')
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/referencepoints/AxisBasedReferencePoints.java21
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/referencepoints/GridBasedReferencePoints.java26
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomGeneratedReferencePoints.java16
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/referencepoints/RandomSampleReferencePoints.java4
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/referencepoints/StarBasedReferencePoints.java24
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();
}
}