Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQFractionResult.java @ 3552:1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
store the curve coefficients for each iteration step
of the outlier elimination.
flys-artifacts/trunk@5146 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 27 Jul 2012 12:36:09 +0000 |
parents | 56f62b5209f5 |
children |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQFractionResult.java Fri Jul 27 08:36:24 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQFractionResult.java Fri Jul 27 12:36:09 2012 +0000 @@ -6,110 +6,161 @@ import java.util.List; -public class SQFractionResult implements Serializable { +public class SQFractionResult +implements Serializable +{ + public static class Iteration + implements Serializable + { + protected Parameters parameters; + protected SQ [] measurements; + protected SQ [] outliers; - protected Parameters parameters; - protected SQ[] measurements; - protected List<SQ[]> outliers; + public Iteration() { + } + + public Iteration( + Parameters parameters, + SQ [] measurements, + SQ [] outliers + ) { + this.parameters = parameters; + this.measurements = measurements; + this.outliers = outliers; + } + + public Parameters getParameters() { + return parameters; + } + + public void setParameters(Parameters parameters) { + this.parameters = parameters; + } + + public SQ [] getMeasurements() { + return measurements; + } + + public void setMeasurements(SQ [] measurements) { + this.measurements = measurements; + } + + public SQ [] getOutliers() { + return outliers; + } + + public void setOutliers(SQ [] outliers) { + this.outliers = outliers; + } + + public boolean isValid() { + return parameters != null + && measurements != null + && outliers != null; + } + + public int numOutliers() { + return outliers != null + ? outliers.length + : 0; + } + + public int numMeasurements() { + return measurements != null + ? measurements.length + : 0; + } + } // class Iteration + + protected SQ [] measurements; + protected List<Iteration> iterations; public SQFractionResult() { } public SQFractionResult( - Parameters parameters, - SQ[] measurements, - List<SQ[]> outliers + SQ [] measurements, + List<Iteration> iterations ) { - this.parameters = parameters; this.measurements = measurements; - this.outliers = outliers; + this.iterations = iterations; } - public boolean isValid() { - return parameters != null - && measurements != null - && outliers != null; - } - - public Parameters getParameters() { - return parameters; - } - - public void setParameters(Parameters parameters) { - this.parameters = parameters; - } - - - public SQ[] getMeasurements() { + public SQ [] getMeasurements() { return measurements; } - public void setMeasurements(SQ[] measurements) { + public void setMeasurements(SQ [] measurements) { this.measurements = measurements; } - - public List<SQ[]> getOutliers() { - return outliers; - } - - public void setOutliers(List<SQ[]> outliers) { - this.outliers = outliers; + public List<Iteration> getIterations() { + return iterations; } - - public int getOutliersCount() { - return outliers != null - ? outliers.size() - : 0; + public void setIterations(List<Iteration> iterations) { + this.iterations = iterations; } + public double [] getQExtent() { + return getQExtent(new double[2]); + } - public SQ[] getOutliers(int idx) { - if (outliers != null && idx >= 0 && idx < outliers.size()) { - return outliers.get(idx); + public double [] getQExtent(double extent[]) { + extent[0] = Double.MAX_VALUE; + extent[1] = -Double.MIN_VALUE; + + for (SQ sq: measurements) { + double q = sq.getQ(); + if (q < extent[0]) extent[0] = q; + if (q > extent[1]) extent[1] = q; } - return null; + return extent; } - public void addOutliers(SQ[] outliers) { - this.outliers.add(outliers); + public int numIterations() { + return iterations != null ? iterations.size() : 0; } - public int getTotalCount() { + public Parameters getParameters() { + return iterations != null && !iterations.isEmpty() + ? iterations.get(iterations.size()-1).getParameters() + : null; + } + + public SQ [] getOutliers(int index) { + return index >= 0 && index < iterations.size() + ? iterations.get(index).getOutliers() + : null; + } + + public Parameters getParameters(int index) { + return index >= 0 && index < iterations.size() + ? iterations.get(index).getParameters() + : null; + } + + public SQ [] getMeasurements(int index) { + return index >= 0 && index < iterations.size() + ? iterations.get(index).getMeasurements() + : null; + } + + public int totalNumOutliers() { + int sum = 0; + if (iterations != null) { + for (Iteration iteration: iterations) { + sum += iteration.numOutliers(); + } + } + return sum; + } + + public int numMeasurements() { return measurements != null ? measurements.length : 0; } - - public double getMinQ() { - double min = Double.MAX_VALUE; - - for (SQ sq: measurements) { - double q = sq.getQ(); - - if (q < min) { - min = q; - } - } - - return min; - } - - - public double getMaxQ() { - double max = -Double.MAX_VALUE; - - for (SQ sq: measurements) { - double q = sq.getQ(); - - if (q > max) { - max = q; - } - } - - return max; - } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :