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

FixA: Figure out max Q during fitting. flys-artifacts/trunk@4649 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 13 Jun 2012 10:19:44 +0000
parents fa5d5b48028a
children 5642a83420f2
comparison
equal deleted inserted replaced
3064:478e8d9d88ba 3065:ee653971fa84
205 KMIndex<QW []> outliers = new KMIndex<QW []>(); 205 KMIndex<QW []> outliers = new KMIndex<QW []>();
206 KMIndex<QW []> referenced = new KMIndex<QW []>(kms.length); 206 KMIndex<QW []> referenced = new KMIndex<QW []>(kms.length);
207 207
208 int kmIndex = results.columnIndex("km"); 208 int kmIndex = results.columnIndex("km");
209 int chiSqrIndex = results.columnIndex("chi_sqr"); 209 int chiSqrIndex = results.columnIndex("chi_sqr");
210 int maxQIndex = results.columnIndex("max_q");
210 int [] parameterIndices = results.columnIndices(parameterNames); 211 int [] parameterIndices = results.columnIndices(parameterNames);
211 212
212 int numFailed = 0; 213 int numFailed = 0;
213 214
214 for (int i = 0; i < kms.length; ++i) { 215 for (int i = 0; i < kms.length; ++i) {
238 239
239 int row = results.newRow(); 240 int row = results.newRow();
240 241
241 results.set(row, kmIndex, km); 242 results.set(row, kmIndex, km);
242 results.set(row, chiSqrIndex, fitting.getChiSquare()); 243 results.set(row, chiSqrIndex, fitting.getChiSquare());
244 results.set(row, maxQIndex, fitting.getMaxQ());
243 invalid |= results.set( 245 invalid |= results.set(
244 row, parameterIndices, fitting.getParameters()); 246 row, parameterIndices, fitting.getParameters());
245 } 247 }
246 248
247 if (debug) { 249 if (debug) {
307 FixingsOverview overview 309 FixingsOverview overview
308 ) { 310 ) {
309 Range range = new Range(from, to); 311 Range range = new Range(from, to);
310 312
311 int kmIndex = parameters.columnIndex("km"); 313 int kmIndex = parameters.columnIndex("km");
314 int maxQIndex = parameters.columnIndex("max_q");
312 315
313 ColumnCache cc = new ColumnCache(); 316 ColumnCache cc = new ColumnCache();
314 317
315 double [] wq = new double[2]; 318 double [] wq = new double[2];
316 319
423 QWD [] aqwds = allQWDs.toArray(new QWD[allQWDs.size()]); 426 QWD [] aqwds = allQWDs.toArray(new QWD[allQWDs.size()]);
424 427
425 AnalysisPeriod periodResult = new AnalysisPeriod( 428 AnalysisPeriod periodResult = new AnalysisPeriod(
426 analysisPeriod, aqwds, qSectorAverages); 429 analysisPeriod, aqwds, qSectorAverages);
427 periodResults.add(periodResult); 430 periodResults.add(periodResult);
431 }
432
433 double maxQ = -Double.MAX_VALUE;
434 for (AnalysisPeriod ap: periodResults) {
435 double q = ap.getMaxQ();
436 if (q > maxQ) {
437 maxQ = q;
438 }
439 }
440
441 double oldMaxQ = parameters.get(row, maxQIndex);
442 if (oldMaxQ < maxQ) {
443 parameters.set(row, maxQIndex, maxQ);
428 } 444 }
429 445
430 results.add(km, periodResults.toArray( 446 results.add(km, periodResults.toArray(
431 new AnalysisPeriod[periodResults.size()])); 447 new AnalysisPeriod[periodResults.size()]));
432 } 448 }
557 573
558 return columns; 574 return columns;
559 } 575 }
560 576
561 protected static String [] createColumnNames(String [] parameters) { 577 protected static String [] createColumnNames(String [] parameters) {
562 String [] result = new String[parameters.length + 2]; 578 String [] result = new String[parameters.length + 3];
563 result[0] = "km"; 579 result[0] = "km";
564 result[1] = "chi_sqr"; 580 result[1] = "chi_sqr";
565 System.arraycopy(parameters, 0, result, 2, parameters.length); 581 result[2] = "max_q";
582 System.arraycopy(parameters, 0, result, 3, parameters.length);
566 return result; 583 return result;
567 } 584 }
568 } 585 }
569 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 586 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org