comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java @ 3014:e341606faeb4

FixA: Use KMIndex for outliers. flys-artifacts/trunk@4579 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 05 Jun 2012 09:11:24 +0000
parents ab81ffd1343e
children ce796f1db30e
comparison
equal deleted inserted replaced
3013:ba62c1751f07 3014:e341606faeb4
23 import de.intevation.flys.artifacts.model.FixingsOverviewFactory; 23 import de.intevation.flys.artifacts.model.FixingsOverviewFactory;
24 import de.intevation.flys.artifacts.model.Parameters; 24 import de.intevation.flys.artifacts.model.Parameters;
25 25
26 import de.intevation.flys.utils.DateAverager; 26 import de.intevation.flys.utils.DateAverager;
27 import de.intevation.flys.utils.DoubleUtil; 27 import de.intevation.flys.utils.DoubleUtil;
28 import de.intevation.flys.utils.EpsilonComparator; 28 import de.intevation.flys.utils.KMIndex;
29 29
30 import java.util.ArrayList; 30 import java.util.ArrayList;
31 import java.util.Date; 31 import java.util.Date;
32 import java.util.HashMap; 32 import java.util.HashMap;
33 import java.util.List; 33 import java.util.List;
34 import java.util.Map; 34 import java.util.Map;
35 import java.util.TreeMap;
36 35
37 import org.apache.log4j.Logger; 36 import org.apache.log4j.Logger;
38 37
39 public class FixCalculation 38 public class FixCalculation
40 extends Calculation 39 extends Calculation
204 203
205 if (debug) { 204 if (debug) {
206 log.debug("number of kms: " + kms.length); 205 log.debug("number of kms: " + kms.length);
207 } 206 }
208 207
209 TreeMap<Double, QW []> outliers = 208 KMIndex<QW []> outliers = new KMIndex<QW []>();
210 new TreeMap<Double, QW []>(EpsilonComparator.INSTANCE);
211 209
212 int kmIndex = results.columnIndex("km"); 210 int kmIndex = results.columnIndex("km");
213 int chiSqrIndex = results.columnIndex("chi_sqr"); 211 int chiSqrIndex = results.columnIndex("chi_sqr");
214 int [] parameterIndices = results.columnIndices(parameterNames); 212 int [] parameterIndices = results.columnIndices(parameterNames);
215 213
233 addProblem(km, "fix.fitting.failed"); 231 addProblem(km, "fix.fitting.failed");
234 continue; 232 continue;
235 } 233 }
236 234
237 if (fitting.hasOutliers()) { 235 if (fitting.hasOutliers()) {
238 outliers.put(Double.valueOf(km), fitting.outliersToArray()); 236 outliers.add(km, fitting.outliersToArray());
239 } 237 }
240 238
241 int row = results.newRow(); 239 int row = results.newRow();
242 240
243 results.set(row, kmIndex, km); 241 results.set(row, kmIndex, km);
260 // Calculate Delta W/t 258 // Calculate Delta W/t
261 DeltaWTsKM deltaWTsKM = calculateDeltaWTs( 259 DeltaWTsKM deltaWTsKM = calculateDeltaWTs(
262 func, 260 func,
263 overview, 261 overview,
264 results); 262 results);
263
264 outliers.sort();
265 265
266 FixResult fr = new FixResult(results, deltaWTsKM, outliers); 266 FixResult fr = new FixResult(results, deltaWTsKM, outliers);
267 267
268 return new CalculationResult(fr, this); 268 return new CalculationResult(fr, this);
269 } 269 }

http://dive4elements.wald.intevation.org