summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries')
-rw-r--r--src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java13
-rw-r--r--src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java34
-rw-r--r--src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java34
-rw-r--r--src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java11
4 files changed, 49 insertions, 43 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java
index 76630586..c6a35985 100644
--- a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java
+++ b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/AbstractEditDistanceFunction.java
@@ -29,8 +29,7 @@ import de.lmu.ifi.dbs.elki.data.type.VectorFieldTypeInformation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractVectorDoubleDistanceFunction;
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.LessEqualConstraint;
+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;
@@ -68,10 +67,10 @@ public abstract class AbstractEditDistanceFunction extends AbstractVectorDoubleD
@Override
public boolean equals(Object obj) {
- if (obj == null) {
+ if(obj == null) {
return false;
}
- if (!this.getClass().equals(obj.getClass())) {
+ if(!this.getClass().equals(obj.getClass())) {
return false;
}
return this.bandSize == ((AbstractEditDistanceFunction) obj).bandSize;
@@ -91,9 +90,9 @@ public abstract class AbstractEditDistanceFunction extends AbstractVectorDoubleD
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
final DoubleParameter bandSizeP = new DoubleParameter(BANDSIZE_ID, 0.1);
- bandSizeP.addConstraint(new GreaterEqualConstraint(0));
- bandSizeP.addConstraint(new LessEqualConstraint(1));
- if (config.grab(bandSizeP)) {
+ bandSizeP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ bandSizeP.addConstraint(CommonConstraints.LESS_EQUAL_ONE_DOUBLE);
+ if(config.grab(bandSizeP)) {
bandSize = bandSizeP.doubleValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java
index 0e38d8bd..d48a21f0 100644
--- a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java
+++ b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/EDRDistanceFunction.java
@@ -28,7 +28,7 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
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;
@@ -82,7 +82,7 @@ public class EDRDistanceFunction extends AbstractEditDistanceFunction {
// features2.length + ", band: " + band);
final double deltaValue = delta;
- for (int i = 0; i < v1.getDimensionality(); i++) {
+ for(int i = 0; i < v1.getDimensionality(); i++) {
// Swap current and prev arrays. We'll just overwrite the new curr.
{
double[] temp = prev;
@@ -90,16 +90,16 @@ public class EDRDistanceFunction extends AbstractEditDistanceFunction {
curr = temp;
}
int l = i - (band + 1);
- if (l < 0) {
+ if(l < 0) {
l = 0;
}
int r = i + (band + 1);
- if (r > (v2.getDimensionality() - 1)) {
+ if(r > (v2.getDimensionality() - 1)) {
r = (v2.getDimensionality() - 1);
}
- for (int j = l; j <= r; j++) {
- if (Math.abs(i - j) <= band) {
+ for(int j = l; j <= r; j++) {
+ if(Math.abs(i - j) <= band) {
// compute squared distance
double val1 = v1.doubleValue(i);
double val2 = v2.doubleValue(j);
@@ -110,23 +110,27 @@ public class EDRDistanceFunction extends AbstractEditDistanceFunction {
final double subcost = (d <= deltaValue) ? 0 : 1;
- if ((i + j) != 0) {
- if ((i == 0) || ((j != 0) && (((prev[j - 1] + subcost) > (curr[j - 1] + 1)) && ((curr[j - 1] + 1) < (prev[j] + 1))))) {
+ if((i + j) != 0) {
+ if((i == 0) || ((j != 0) && (((prev[j - 1] + subcost) > (curr[j - 1] + 1)) && ((curr[j - 1] + 1) < (prev[j] + 1))))) {
// del
cost = curr[j - 1] + 1;
- } else if ((j == 0) || ((i != 0) && (((prev[j - 1] + subcost) > (prev[j] + 1)) && ((prev[j] + 1) < (curr[j - 1] + 1))))) {
+ }
+ else if((j == 0) || ((i != 0) && (((prev[j - 1] + subcost) > (prev[j] + 1)) && ((prev[j] + 1) < (curr[j - 1] + 1))))) {
// ins
cost = prev[j] + 1;
- } else {
+ }
+ else {
// match
cost = prev[j - 1] + subcost;
}
- } else {
+ }
+ else {
cost = 0;
}
curr[j] = cost;
- } else {
+ }
+ else {
curr[j] = Double.POSITIVE_INFINITY; // outside band
}
}
@@ -137,7 +141,7 @@ public class EDRDistanceFunction extends AbstractEditDistanceFunction {
@Override
public boolean equals(Object obj) {
- if (!super.equals(obj)) {
+ if(!super.equals(obj)) {
return false;
}
return this.delta == ((EDRDistanceFunction) obj).delta;
@@ -157,8 +161,8 @@ public class EDRDistanceFunction extends AbstractEditDistanceFunction {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
final DoubleParameter deltaP = new DoubleParameter(DELTA_ID, 1.0);
- deltaP.addConstraint(new GreaterEqualConstraint(0));
- if (config.grab(deltaP)) {
+ deltaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(deltaP)) {
delta = deltaP.doubleValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java
index fd5bb61c..e7d7dd7e 100644
--- a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java
+++ b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/ERPDistanceFunction.java
@@ -28,7 +28,7 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
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;
@@ -78,7 +78,7 @@ public class ERPDistanceFunction extends AbstractEditDistanceFunction {
// bandsize is the maximum allowed distance to the diagonal
final int band = (int) Math.ceil(v2.getDimensionality() * bandSize);
- for (int i = 0; i < v1.getDimensionality(); i++) {
+ for(int i = 0; i < v1.getDimensionality(); i++) {
// Swap current and prev arrays. We'll just overwrite the new curr.
{
double[] temp = prev;
@@ -86,16 +86,16 @@ public class ERPDistanceFunction extends AbstractEditDistanceFunction {
curr = temp;
}
int l = i - (band + 1);
- if (l < 0) {
+ if(l < 0) {
l = 0;
}
int r = i + (band + 1);
- if (r > (v2.getDimensionality() - 1)) {
+ if(r > (v2.getDimensionality() - 1)) {
r = (v2.getDimensionality() - 1);
}
- for (int j = l; j <= r; j++) {
- if (Math.abs(i - j) <= band) {
+ for(int j = l; j <= r; j++) {
+ if(Math.abs(i - j) <= band) {
// compute squared distance of feature vectors
double val1 = v1.doubleValue(i);
double val2 = g;
@@ -118,24 +118,28 @@ public class ERPDistanceFunction extends AbstractEditDistanceFunction {
final double cost;
- if ((i + j) != 0) {
- if ((i == 0) || ((j != 0) && (((prev[j - 1] + dist12) > (curr[j - 1] + dist2)) && ((curr[j - 1] + dist2) < (prev[j] + dist1))))) {
+ if((i + j) != 0) {
+ if((i == 0) || ((j != 0) && (((prev[j - 1] + dist12) > (curr[j - 1] + dist2)) && ((curr[j - 1] + dist2) < (prev[j] + dist1))))) {
// del
cost = curr[j - 1] + dist2;
- } else if ((j == 0) || ((i != 0) && (((prev[j - 1] + dist12) > (prev[j] + dist1)) && ((prev[j] + dist1) < (curr[j - 1] + dist2))))) {
+ }
+ else if((j == 0) || ((i != 0) && (((prev[j - 1] + dist12) > (prev[j] + dist1)) && ((prev[j] + dist1) < (curr[j - 1] + dist2))))) {
// ins
cost = prev[j] + dist1;
- } else {
+ }
+ else {
// match
cost = prev[j - 1] + dist12;
}
- } else {
+ }
+ else {
cost = 0;
}
curr[j] = cost;
// steps[i][j] = step;
- } else {
+ }
+ else {
curr[j] = Double.POSITIVE_INFINITY; // outside band
}
}
@@ -146,7 +150,7 @@ public class ERPDistanceFunction extends AbstractEditDistanceFunction {
@Override
public boolean equals(Object obj) {
- if (!super.equals(obj)) {
+ if(!super.equals(obj)) {
return false;
}
return this.g == ((ERPDistanceFunction) obj).g;
@@ -166,8 +170,8 @@ public class ERPDistanceFunction extends AbstractEditDistanceFunction {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
final DoubleParameter gP = new DoubleParameter(G_ID, 0.0);
- gP.addConstraint(new GreaterEqualConstraint(0));
- if (config.grab(gP)) {
+ gP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(gP)) {
g = gP.doubleValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java
index 2998248d..4f1c0850 100644
--- a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java
+++ b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries/LCSSDistanceFunction.java
@@ -34,8 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
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.LessEqualConstraint;
+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;
@@ -219,15 +218,15 @@ public class LCSSDistanceFunction extends AbstractVectorDoubleDistanceFunction {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
final DoubleParameter pDeltaP = new DoubleParameter(PDELTA_ID, 0.1);
- pDeltaP.addConstraint(new GreaterEqualConstraint(0));
- pDeltaP.addConstraint(new LessEqualConstraint(1));
+ pDeltaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ pDeltaP.addConstraint(CommonConstraints.LESS_EQUAL_ONE_DOUBLE);
if (config.grab(pDeltaP)) {
pDelta = pDeltaP.doubleValue();
}
final DoubleParameter pEpsilonP = new DoubleParameter(PEPSILON_ID, 0.05);
- pEpsilonP.addConstraint(new GreaterEqualConstraint(0));
- pEpsilonP.addConstraint(new LessEqualConstraint(1));
+ pEpsilonP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ pEpsilonP.addConstraint(CommonConstraints.LESS_EQUAL_ONE_DOUBLE);
if (config.grab(pEpsilonP)) {
pEpsilon = pEpsilonP.doubleValue();
}