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 :

http://dive4elements.wald.intevation.org