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

FixA: Calculate the standard deviation of the Q sector delta Ws, too. flys-artifacts/trunk@4753 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 22 Jun 2012 09:59:12 +0000
parents 9c147bbffc36
children 368d1837ce5d
comparison
equal deleted inserted replaced
3144:05a7298c4f20 3145:be612065993e
12 12
13 import de.intevation.flys.artifacts.model.FixingsOverview.AndFilter; 13 import de.intevation.flys.artifacts.model.FixingsOverview.AndFilter;
14 import de.intevation.flys.artifacts.model.FixingsOverview.DateRangeFilter; 14 import de.intevation.flys.artifacts.model.FixingsOverview.DateRangeFilter;
15 15
16 import de.intevation.flys.artifacts.model.FixingsOverview.Fixing.Filter; 16 import de.intevation.flys.artifacts.model.FixingsOverview.Fixing.Filter;
17
18 import de.intevation.flys.artifacts.model.Range;
19 17
20 import de.intevation.flys.artifacts.model.FixingsOverview.Fixing; 18 import de.intevation.flys.artifacts.model.FixingsOverview.Fixing;
21 import de.intevation.flys.artifacts.model.FixingsOverview.IdsFilter; 19 import de.intevation.flys.artifacts.model.FixingsOverview.IdsFilter;
22 import de.intevation.flys.artifacts.model.FixingsOverview.KmFilter; 20 import de.intevation.flys.artifacts.model.FixingsOverview.KmFilter;
23 import de.intevation.flys.artifacts.model.FixingsOverview.SectorFilter; 21 import de.intevation.flys.artifacts.model.FixingsOverview.SectorFilter;
24 import de.intevation.flys.artifacts.model.FixingsOverview.SectorRangeFilter; 22 import de.intevation.flys.artifacts.model.FixingsOverview.SectorRangeFilter;
25 23
26 import de.intevation.flys.artifacts.model.FixingsOverview; 24 import de.intevation.flys.artifacts.model.FixingsOverview;
27 import de.intevation.flys.artifacts.model.FixingsOverviewFactory; 25 import de.intevation.flys.artifacts.model.FixingsOverviewFactory;
28 import de.intevation.flys.artifacts.model.Parameters; 26 import de.intevation.flys.artifacts.model.Parameters;
27 import de.intevation.flys.artifacts.model.Range;
29 28
30 import de.intevation.flys.utils.DateAverager; 29 import de.intevation.flys.utils.DateAverager;
31 import de.intevation.flys.utils.DoubleUtil; 30 import de.intevation.flys.utils.DoubleUtil;
32 import de.intevation.flys.utils.KMIndex; 31 import de.intevation.flys.utils.KMIndex;
33 32
34 import java.util.ArrayList; 33 import java.util.ArrayList;
35 import java.util.Date; 34 import java.util.Date;
36 import java.util.HashMap; 35 import java.util.HashMap;
37 import java.util.List; 36 import java.util.List;
38 import java.util.Map; 37 import java.util.Map;
38
39 import org.apache.commons.math.stat.descriptive.moment.StandardDeviation;
39 40
40 import org.apache.log4j.Logger; 41 import org.apache.log4j.Logger;
41 42
42 public class FixCalculation 43 public class FixCalculation
43 extends Calculation 44 extends Calculation
360 for (DateRange analysisPeriod: analysisPeriods) { 361 for (DateRange analysisPeriod: analysisPeriods) {
361 DateRangeFilter drf = new DateRangeFilter( 362 DateRangeFilter drf = new DateRangeFilter(
362 analysisPeriod.getFrom(), 363 analysisPeriod.getFrom(),
363 analysisPeriod.getTo()); 364 analysisPeriod.getTo());
364 365
365 QWD [] qSectorAverages = new QWD[4]; 366 QWD [] qSectorAverages = new QWD[4];
367 double [] qSectorStdDevs = new double[4];
368
366 ArrayList<QWD> allQWDs = new ArrayList<QWD>(); 369 ArrayList<QWD> allQWDs = new ArrayList<QWD>();
367 370
368 // for all Q sectors. 371 // for all Q sectors.
369 for (int qSector = qSectorStart; qSector < qSectorEnd; ++qSector) { 372 for (int qSector = qSectorStart; qSector < qSectorEnd; ++qSector) {
370 373
382 } 385 }
383 386
384 double sumQ = 0.0; 387 double sumQ = 0.0;
385 double sumW = 0.0; 388 double sumW = 0.0;
386 389
390 StandardDeviation stdDev = new StandardDeviation();
391
387 List<QWD> qwds = new ArrayList<QWD>(metas.size()); 392 List<QWD> qwds = new ArrayList<QWD>(metas.size());
388 393
389 dateAverager.clear(); 394 dateAverager.clear();
390 395
391 for (Fixing.Column meta: metas) { 396 for (Fixing.Column meta: metas) {
403 if (Double.isNaN(fw)) { 408 if (Double.isNaN(fw)) {
404 continue; 409 continue;
405 } 410 }
406 411
407 double dw = (wq[0] - fw)*100.0; 412 double dw = (wq[0] - fw)*100.0;
413
414 stdDev.increment(dw);
408 415
409 Date date = column.getDate(); 416 Date date = column.getDate();
410 String description = column.getDescription(); 417 String description = column.getDescription();
411 418
412 QWD qwd = new QWD( 419 QWD qwd = new QWD(
437 QWD avgQWD = new QWD( 444 QWD avgQWD = new QWD(
438 avgQ, avgW, avgDescription, avgDate, true, avgDw); 445 avgQ, avgW, avgDescription, avgDate, true, avgDw);
439 446
440 qSectorAverages[qSector] = avgQWD; 447 qSectorAverages[qSector] = avgQWD;
441 } 448 }
449 qSectorStdDevs[qSector] = stdDev.getResult();
450 }
451 else {
452 qSectorStdDevs[qSector] = Double.NaN;
442 } 453 }
443 } // for all Q sectors 454 } // for all Q sectors
444 455
445 QWD [] aqwds = allQWDs.toArray(new QWD[allQWDs.size()]); 456 QWD [] aqwds = allQWDs.toArray(new QWD[allQWDs.size()]);
446 457
447 AnalysisPeriod periodResult = new AnalysisPeriod( 458 AnalysisPeriod periodResult = new AnalysisPeriod(
448 analysisPeriod, aqwds, qSectorAverages); 459 analysisPeriod,
460 aqwds,
461 qSectorAverages,
462 qSectorStdDevs);
449 periodResults.add(periodResult); 463 periodResults.add(periodResult);
450 } 464 }
451 465
452 double maxQ = -Double.MAX_VALUE; 466 double maxQ = -Double.MAX_VALUE;
453 for (AnalysisPeriod ap: periodResults) { 467 for (AnalysisPeriod ap: periodResults) {

http://dive4elements.wald.intevation.org