diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Fitting.java @ 3566:8d0f06b76e09

S/Q relation: Fixed flys/issue748 flys-artifacts/trunk@5164 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 01 Aug 2012 10:19:45 +0000
parents 1df6984628c3
children b8b1280606c2
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Fitting.java	Tue Jul 31 16:46:36 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Fitting.java	Wed Aug 01 10:19:45 2012 +0000
@@ -35,18 +35,12 @@
 
     protected de.intevation.flys.artifacts.math.Function instance;
 
-    protected List<SQ> remainings;
-    protected List<SQ> outliers;
-
-    protected double standardDeviation;
     protected double stdDevFactor;
     protected double chiSqr;
 
     protected Callback callback;
 
     public Fitting() {
-        remainings = new ArrayList<SQ>();
-        outliers   = new ArrayList<SQ>();
     }
 
     public Fitting(Function function, double stdDevFactor) {
@@ -72,14 +66,13 @@
     }
 
     @Override
-    public void initialize(Iterator<SQ> good) throws MathException {
+    public void initialize(List<SQ> sqs) throws MathException {
 
         LevenbergMarquardtOptimizer lmo =
             new LevenbergMarquardtOptimizer();
 
         CurveFitter cf = new CurveFitter(lmo);
-        while (good.hasNext()) {
-            SQ sq = good.next();
+        for (SQ sq: sqs) {
             cf.addObservedPoint(sq.getQ(), sq.getS());
         }
 
@@ -89,7 +82,6 @@
         instance = function.instantiate(coeffs);
 
         chiSqr = lmo.getChiSquare();
-
     }
 
     @Override
@@ -99,26 +91,15 @@
     }
 
     @Override
-    public void outlier(SQ sq) {
-        outliers.add(sq);
-    }
-
-    @Override
-    public void remaining(SQ sq) {
-        remainings.add(sq);
-    }
-
-    @Override
-    public void standardDeviation(double standardDeviation) {
-        this.standardDeviation = standardDeviation;
-    }
-
-    @Override
-    public void iterationFinished() {
+    public void iterationFinished(
+        double   standardDeviation,
+        SQ       outlier,
+        List<SQ> remainings
+    ) {
         if (log.isDebugEnabled()) {
             log.debug("iterationFinished ----");
             log.debug(" num remainings: " + remainings.size());
-            log.debug(" num outliers: " + outliers.size());
+            log.debug(" has outlier: " + outlier != null);
             log.debug(" standardDeviation: " + standardDeviation);
             log.debug(" Chi^2: " + chiSqr);
             log.debug("---- iterationFinished");
@@ -126,11 +107,9 @@
         callback.afterIteration(
             coeffs,
             remainings.toArray(new SQ[remainings.size()]),
-            outliers.toArray(new SQ[outliers.size()]),
+            outlier != null ? new SQ [] { outlier} : new SQ [] {},
             standardDeviation,
             chiSqr);
-        remainings.clear();
-        outliers.clear();
     }
 
     protected static final List<SQ> onlyValid(List<SQ> sqs) {

http://dive4elements.wald.intevation.org