diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/distance/distancefunction/timeseries')
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(); } |