Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java @ 3408:50d61a2494cb
FixA: Renamed FixationArtifactAccess to FixAnalysisAccess
flys-artifacts/trunk@5061 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 19 Jul 2012 12:55:45 +0000 |
parents | ae14f412ba10 |
children |
rev | line source |
---|---|
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.model.fixings; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
3408
50d61a2494cb
FixA: Renamed FixationArtifactAccess to FixAnalysisAccess
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3210
diff
changeset
|
3 import de.intevation.flys.artifacts.access.FixAnalysisAccess; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 import de.intevation.flys.artifacts.math.fitting.Function; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 import de.intevation.flys.artifacts.math.fitting.FunctionFactory; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 import de.intevation.flys.artifacts.model.Calculation; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 import de.intevation.flys.artifacts.model.CalculationResult; |
3210
ae14f412ba10
SQ: finished the access stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3203
diff
changeset
|
10 import de.intevation.flys.artifacts.model.DateRange; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 import de.intevation.flys.artifacts.model.FixingsColumn; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 import de.intevation.flys.artifacts.model.FixingsColumnFactory; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
13 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
14 import de.intevation.flys.artifacts.model.FixingsOverview.AndFilter; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
15 import de.intevation.flys.artifacts.model.FixingsOverview.DateRangeFilter; |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
16 |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
17 import de.intevation.flys.artifacts.model.FixingsOverview.Fixing.Filter; |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
18 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
19 import de.intevation.flys.artifacts.model.FixingsOverview.Fixing; |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
20 import de.intevation.flys.artifacts.model.FixingsOverview.IdsFilter; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
21 import de.intevation.flys.artifacts.model.FixingsOverview.KmFilter; |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
22 import de.intevation.flys.artifacts.model.FixingsOverview.SectorFilter; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
23 import de.intevation.flys.artifacts.model.FixingsOverview.SectorRangeFilter; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
24 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 import de.intevation.flys.artifacts.model.FixingsOverview; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 import de.intevation.flys.artifacts.model.FixingsOverviewFactory; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 import de.intevation.flys.artifacts.model.Parameters; |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
28 import de.intevation.flys.artifacts.model.Range; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
30 import de.intevation.flys.utils.DateAverager; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 import de.intevation.flys.utils.DoubleUtil; |
3014
e341606faeb4
FixA: Use KMIndex for outliers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
32 import de.intevation.flys.utils.KMIndex; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 import java.util.ArrayList; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
35 import java.util.Date; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
36 import java.util.HashMap; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 import java.util.List; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
38 import java.util.Map; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
40 import org.apache.commons.math.stat.descriptive.moment.StandardDeviation; |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
41 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 import org.apache.log4j.Logger; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 public class FixCalculation |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 extends Calculation |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 { |
2786
f9e62e76ee1f
FixA: Return correct data structure from calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2783
diff
changeset
|
47 private static Logger log = Logger.getLogger(FixCalculation.class); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
49 public static final double EPSILON = 1e-4; |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
50 |
3003
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
51 protected String river; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
52 protected double from; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
53 protected double to; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
54 protected double step; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
55 protected boolean preprocessing; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
56 protected String function; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
57 protected int [] events; |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
58 protected DateRange referencePeriod; |
3003
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
59 protected DateRange [] analysisPeriods; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
60 protected int qSectorStart; |
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
61 protected int qSectorEnd; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
62 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 public FixCalculation() { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
65 |
3408
50d61a2494cb
FixA: Renamed FixationArtifactAccess to FixAnalysisAccess
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3210
diff
changeset
|
66 public FixCalculation(FixAnalysisAccess access) { |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
68 String river = access.getRiver(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
69 Double from = access.getFrom(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
70 Double to = access.getTo(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
71 Double step = access.getStep(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
72 String function = access.getFunction(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
73 int [] events = access.getEvents(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
74 DateRange referencePeriod = access.getReferencePeriod(); |
3003
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
75 DateRange [] analysisPeriods = access.getAnalysisPeriods(); |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
76 Integer qSectorStart = access.getQSectorStart(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
77 Integer qSectorEnd = access.getQSectorEnd(); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
78 Boolean preprocessing = access.getPreprocessing(); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 if (river == null) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
81 addProblem("fix.missing.river"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
82 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
83 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
84 if (from == null) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 addProblem("fix.missing.from"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
86 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 if (to == null) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 addProblem("fix.missing.to"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 if (step == null) { |
3161
cd8d81b2824d
FixA: Re-added accidentially removed code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3159
diff
changeset
|
93 addProblem("fix.missing.step"); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 if (function == null) { |
3161
cd8d81b2824d
FixA: Re-added accidentially removed code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3159
diff
changeset
|
97 addProblem("fix.missing.function"); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 if (events == null || events.length < 1) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 addProblem("fix.missing.events"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
104 if (referencePeriod == null) { |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
105 addProblem("fix.missing.reference.period"); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
106 } |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
107 |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
108 if (analysisPeriods == null || analysisPeriods.length < 1) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
109 addProblem("fix.missing.analysis.periods"); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
110 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
111 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
112 if (qSectorStart == null) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
113 addProblem("fix.missing.qstart.sector"); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
114 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
115 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
116 if (qSectorEnd == null) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
117 addProblem("fix.missing.qend.sector"); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
118 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
119 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
120 if (preprocessing == null) { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
121 addProblem("fix.missing.preprocessing"); |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
122 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
123 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 if (!hasProblems()) { |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
125 this.river = river; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
126 this.from = from; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
127 this.to = to; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
128 this.step = step; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
129 this.function = function; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
130 this.events = events; |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
131 this.referencePeriod = referencePeriod; |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
132 this.analysisPeriods = analysisPeriods; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
133 this.qSectorStart = qSectorStart; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
134 this.qSectorEnd = qSectorEnd; |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
135 this.preprocessing = preprocessing; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 public CalculationResult calculate() { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 |
2992
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
141 boolean debug = log.isDebugEnabled(); |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
142 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 FixingsOverview overview = |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 FixingsOverviewFactory.getOverview(river); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 if (overview == null) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 addProblem("fix.no.overview.available"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 Function func = FunctionFactory.getInstance() |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 .getFunction(function); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 if (func == null) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 addProblem("fix.invalid.function.name"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 if (hasProblems()) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
158 return new CalculationResult(this); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
159 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
160 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
161 final List<Column> eventColumns = getEventColumns(overview); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
162 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
163 if (eventColumns.size() < 2) { |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
164 addProblem("fix.too.less.data.columns"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
165 return new CalculationResult(this); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
166 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
167 |
2992
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
168 double [] kms = DoubleUtil.explode(from, to, step / 1000.0); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
169 |
3106
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
170 final double [] qs = new double[eventColumns.size()]; |
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
171 final double [] ws = new double[qs.length]; |
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
172 final boolean [] interpolated = new boolean[ws.length]; |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
173 |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
174 Fitting.QWDFactory qwdFactory = new Fitting.QWDFactory() { |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
175 @Override |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
176 public QWD create(double q, double w) { |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
177 // Check all the event columns for close match |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
178 // and take the description and the date from meta. |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
179 for (int i = 0; i < qs.length; ++i) { |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
180 if (Math.abs(qs[i]-q) < EPSILON |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
181 && Math.abs(ws[i]-w) < EPSILON) { |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
182 Column column = eventColumns.get(i); |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
183 return new QWD( |
3137
3b6ab6fac843
FixA: Fixed problem with select the wrong meta data (date, descriptions, etc.) for a data column.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3121
diff
changeset
|
184 qs[i], ws[i], |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
185 column.getDescription(), |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
186 column.getDate(), |
3106
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
187 interpolated[i], |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
188 0d); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
189 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
190 } |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
191 log.warn("cannot find column for (" + q + ", " + w + ")"); |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
192 return new QWD(q, w); |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
193 } |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
194 }; |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
195 |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
196 Fitting fitting = new Fitting(func, qwdFactory, preprocessing); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
197 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
198 String [] parameterNames = func.getParameterNames(); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
199 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
200 Parameters results = |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
201 new Parameters(createColumnNames(parameterNames)); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
202 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
203 boolean invalid = false; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
204 |
2992
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
205 if (debug) { |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
206 log.debug("number of kms: " + kms.length); |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
207 } |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
208 |
3096
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
209 KMIndex<QW []> outliers = new KMIndex<QW []>(); |
d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3076
diff
changeset
|
210 KMIndex<QWD []> referenced = new KMIndex<QWD []>(kms.length); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
211 |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
212 int kmIndex = results.columnIndex("km"); |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
213 int chiSqrIndex = results.columnIndex("chi_sqr"); |
3065
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
214 int maxQIndex = results.columnIndex("max_q"); |
3107
cbf308f5c41b
FixA: Store the standard deviation of delta Ws of reference points into parameters, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3106
diff
changeset
|
215 int stdDevIndex = results.columnIndex("std-dev"); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
216 int [] parameterIndices = results.columnIndices(parameterNames); |
3010
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3008
diff
changeset
|
217 |
2992
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
218 int numFailed = 0; |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
219 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
220 for (int i = 0; i < kms.length; ++i) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
221 double km = kms[i]; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
222 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
223 // Fill Qs and Ws from event columns. |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
224 for (int j = 0; j < ws.length; ++j) { |
3163
dad513d5ce37
FixA: Interpolated and measured values where switched.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3161
diff
changeset
|
225 interpolated[j] = !eventColumns.get(j).getQW(km, qs, ws, j); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
226 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
227 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
228 fitting.reset(); |
3010
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3008
diff
changeset
|
229 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
230 if (!fitting.fit(qs, ws)) { |
2992
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
231 ++numFailed; |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
232 addProblem(km, "fix.fitting.failed"); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
233 continue; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
234 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
235 |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
236 referenced.add(km, fitting.referencedToArray()); |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
237 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
238 if (fitting.hasOutliers()) { |
3014
e341606faeb4
FixA: Use KMIndex for outliers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
239 outliers.add(km, fitting.outliersToArray()); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
240 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
241 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
242 int row = results.newRow(); |
3165
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
243 double [] values = fitting.getParameters(); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
244 |
3010
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3008
diff
changeset
|
245 results.set(row, kmIndex, km); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
246 results.set(row, chiSqrIndex, fitting.getChiSquare()); |
3107
cbf308f5c41b
FixA: Store the standard deviation of delta Ws of reference points into parameters, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3106
diff
changeset
|
247 results.set(row, stdDevIndex, fitting.getStandardDeviation()); |
cbf308f5c41b
FixA: Store the standard deviation of delta Ws of reference points into parameters, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3106
diff
changeset
|
248 results.set(row, maxQIndex, fitting.getMaxQ()); |
3165
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
249 invalid |= results.set(row, parameterIndices, values); |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
250 |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
251 if (debug) { |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
252 log.debug("km: "+km+" " + toString(parameterNames, values)); |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
253 } |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
254 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
255 |
2992
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
256 if (debug) { |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
257 log.debug("success: " + (kms.length - numFailed)); |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
258 log.debug("failed: " + numFailed); |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
259 } |
0abdede5a0b8
FixA: Added facet to return delta w/t as CSV
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2788
diff
changeset
|
260 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
261 if (invalid) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
262 addProblem("fix.invalid.values"); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
263 results.removeNaNs(); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
264 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
265 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
266 KMIndex<AnalysisPeriod []> analysisPeriods = |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
267 calculateAnalysisPeriods(func, results, overview); |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
268 |
3014
e341606faeb4
FixA: Use KMIndex for outliers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
269 outliers.sort(); |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
270 referenced.sort(); |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
271 analysisPeriods.sort(); |
3014
e341606faeb4
FixA: Use KMIndex for outliers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
272 |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
273 FixResult fr = new FixResult( |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3065
diff
changeset
|
274 results, |
3022
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
275 referenced, outliers, |
705d2058b682
FixA: Store the referenced QW for each km, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3020
diff
changeset
|
276 analysisPeriods); |
2786
f9e62e76ee1f
FixA: Return correct data structure from calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2783
diff
changeset
|
277 |
f9e62e76ee1f
FixA: Return correct data structure from calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2783
diff
changeset
|
278 return new CalculationResult(fr, this); |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
279 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
280 |
3165
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
281 protected String toString(String [] parameterNames, double [] values) { |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
282 StringBuilder sb = new StringBuilder(); |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
283 for (int i = 0; i < parameterNames.length; ++i) { |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
284 if (i > 0) sb.append(", "); |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
285 sb.append(parameterNames[i]).append(": ").append(values[i]); |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
286 } |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
287 return sb.toString(); |
6b13d7e7b403
FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3163
diff
changeset
|
288 } |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
289 |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
290 protected List<Column> getEventColumns(FixingsOverview overview) { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
291 |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
292 FixingsColumnFactory fcf = FixingsColumnFactory.getInstance(); |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
293 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
294 IdsFilter ids = new IdsFilter(events); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
295 DateRangeFilter rdf = new DateRangeFilter( |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
296 referencePeriod.getFrom(), |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
297 referencePeriod.getTo()); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
298 Filter filter = new AndFilter().add(rdf).add(ids); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
299 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
300 List<Fixing.Column> metas = overview.filter(null, filter); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
301 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
302 List<Column> columns = new ArrayList<Column>(metas.size()); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
303 |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
304 for (Fixing.Column meta: metas) { |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
305 |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
306 FixingsColumn data = fcf.getColumnData(meta); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
307 if (data == null) { |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
308 addProblem("fix.cannot.load.data"); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
309 } |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
310 else { |
3137
3b6ab6fac843
FixA: Fixed problem with select the wrong meta data (date, descriptions, etc.) for a data column.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3121
diff
changeset
|
311 columns.add(new Column(meta, data)); |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
312 } |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
313 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
314 |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
315 return columns; |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
316 } |
3152
368d1837ce5d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3145
diff
changeset
|
317 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
318 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
319 protected KMIndex<AnalysisPeriod []> calculateAnalysisPeriods( |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
320 Function function, |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
321 Parameters parameters, |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
322 FixingsOverview overview |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
323 ) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
324 Range range = new Range(from, to); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
325 |
3159
a6a3f9894fe0
FixA: I18N
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3152
diff
changeset
|
326 int kmIndex = parameters.columnIndex("km"); |
3065
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
327 int maxQIndex = parameters.columnIndex("max_q"); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
328 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
329 ColumnCache cc = new ColumnCache(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
330 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
331 double [] wq = new double[2]; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
332 |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3065
diff
changeset
|
333 int [] parameterIndices = |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
334 parameters.columnIndices(function.getParameterNames()); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
335 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
336 double [] parameterValues = new double[parameterIndices.length]; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
337 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
338 DateAverager dateAverager = new DateAverager(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
339 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
340 KMIndex<AnalysisPeriod []> results = |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
341 new KMIndex<AnalysisPeriod []>(parameters.size()); |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
342 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
343 IdsFilter idsFilter = new IdsFilter(events); |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
344 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
345 for (int row = 0, R = parameters.size(); row < R; ++row) { |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
346 double km = parameters.get(row, kmIndex); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
347 parameters.get(row, parameterIndices, parameterValues); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
348 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
349 // This is the paraterized function for a given km. |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
350 de.intevation.flys.artifacts.math.Function instance = |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
351 function.instantiate(parameterValues); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
352 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
353 KmFilter kmFilter = new KmFilter(km); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
354 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
355 ArrayList<AnalysisPeriod> periodResults = |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
356 new ArrayList<AnalysisPeriod>(analysisPeriods.length); |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
357 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
358 for (DateRange analysisPeriod: analysisPeriods) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
359 DateRangeFilter drf = new DateRangeFilter( |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
360 analysisPeriod.getFrom(), |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
361 analysisPeriod.getTo()); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
362 |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
363 QWD [] qSectorAverages = new QWD[4]; |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
364 double [] qSectorStdDevs = new double[4]; |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
365 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
366 ArrayList<QWD> allQWDs = new ArrayList<QWD>(); |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
367 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
368 // for all Q sectors. |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
369 for (int qSector = qSectorStart; qSector < qSectorEnd; ++qSector) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
370 |
3121
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
371 Filter filter = new AndFilter() |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
372 .add(kmFilter) |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
373 .add(new SectorFilter(qSector)) |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
374 .add(drf) |
0b86b005bb9a
FixA: Respect the selected events and reference period correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3107
diff
changeset
|
375 .add(idsFilter); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
376 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
377 List<Fixing.Column> metas = overview.filter(range, filter); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
378 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
379 if (metas.isEmpty()) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
380 // No fixings for km and analysis period |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
381 continue; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
382 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
383 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
384 double sumQ = 0.0; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
385 double sumW = 0.0; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
386 |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
387 StandardDeviation stdDev = new StandardDeviation(); |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
388 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
389 List<QWD> qwds = new ArrayList<QWD>(metas.size()); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
390 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
391 dateAverager.clear(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
392 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
393 for (Fixing.Column meta: metas) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
394 if (meta.findQSector(km) != qSector) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
395 // Ignore not matching sectors. |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
396 continue; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
397 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
398 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
399 Column column = cc.getColumn(meta); |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
400 if (column == null || !column.getQW(km, wq)) { |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
401 continue; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
402 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
403 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
404 double fw = instance.value(wq[1]); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
405 if (Double.isNaN(fw)) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
406 continue; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
407 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
408 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
409 double dw = (wq[0] - fw)*100.0; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
410 |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
411 stdDev.increment(dw); |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
412 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
413 Date date = column.getDate(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
414 String description = column.getDescription(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
415 |
3106
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
416 QWD qwd = new QWD( |
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
417 wq[1], wq[0], description, date, true, dw); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
418 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
419 qwds.add(qwd); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
420 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
421 sumW += wq[0]; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
422 sumQ += wq[1]; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
423 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
424 dateAverager.add(date); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
425 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
426 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
427 // Calulate average per Q sector. |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
428 int N = qwds.size(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
429 if (N > 0) { |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
430 allQWDs.addAll(qwds); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
431 double avgW = sumW / N; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
432 double avgQ = sumQ / N; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
433 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
434 double avgFw = instance.value(avgQ); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
435 if (!Double.isNaN(avgFw)) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
436 double avgDw = (avgW - avgFw)*100.0; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
437 Date avgDate = dateAverager.getAverage(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
438 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
439 String avgDescription = "avg.deltawt." + qSector; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
440 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
441 QWD avgQWD = new QWD( |
3106
23de6d678fba
FixA: Store into QWs if they are interpolated.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3096
diff
changeset
|
442 avgQ, avgW, avgDescription, avgDate, true, avgDw); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
443 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
444 qSectorAverages[qSector] = avgQWD; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
445 } |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
446 qSectorStdDevs[qSector] = stdDev.getResult(); |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
447 } |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
448 else { |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
449 qSectorStdDevs[qSector] = Double.NaN; |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
450 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
451 } // for all Q sectors |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
452 |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
453 QWD [] aqwds = allQWDs.toArray(new QWD[allQWDs.size()]); |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
454 |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
455 AnalysisPeriod periodResult = new AnalysisPeriod( |
3145
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
456 analysisPeriod, |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
457 aqwds, |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
458 qSectorAverages, |
be612065993e
FixA: Calculate the standard deviation of the Q sector delta Ws, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3138
diff
changeset
|
459 qSectorStdDevs); |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
460 periodResults.add(periodResult); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
461 } |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
462 |
3065
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
463 double maxQ = -Double.MAX_VALUE; |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
464 for (AnalysisPeriod ap: periodResults) { |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
465 double q = ap.getMaxQ(); |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
466 if (q > maxQ) { |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
467 maxQ = q; |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
468 } |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
469 } |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
470 |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
471 double oldMaxQ = parameters.get(row, maxQIndex); |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
472 if (oldMaxQ < maxQ) { |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
473 parameters.set(row, maxQIndex, maxQ); |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
474 } |
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
475 |
3020
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
476 results.add(km, periodResults.toArray( |
ce796f1db30e
FixA: Store AnalysisPeriods into FixResult now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3014
diff
changeset
|
477 new AnalysisPeriod[periodResults.size()])); |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
478 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
479 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
480 return results; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
481 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
482 |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3065
diff
changeset
|
483 /** Helper class to bundle the meta information of a column |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
484 * and the real data. |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
485 */ |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
486 protected static class Column { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
487 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
488 protected Fixing.Column meta; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
489 protected FixingsColumn data; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
490 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
491 public Column() { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
492 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
493 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
494 public Column(Fixing.Column meta, FixingsColumn data) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
495 this.meta = meta; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
496 this.data = data; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
497 } |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
498 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
499 public Date getDate() { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
500 return meta.getStartTime(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
501 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
502 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
503 public String getDescription() { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
504 return meta.getDescription(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
505 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
506 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
507 public boolean getQW( |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3065
diff
changeset
|
508 double km, |
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3065
diff
changeset
|
509 double [] qs, |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
510 double [] ws, |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
511 int index |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
512 ) { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
513 qs[index] = data.getQ(km); |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
514 return data.getW(km, ws, index); |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
515 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
516 |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
517 public boolean getQW(double km, double [] wq) { |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
518 data.getW(km, wq, 0); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
519 if (Double.isNaN(wq[0])) return false; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
520 wq[1] = data.getQ(km); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
521 return !Double.isNaN(wq[1]); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
522 } |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
523 } // class Column |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
524 |
3008
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
525 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
526 /** |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
527 * Helper class to find the data belonging to meta info more quickly. |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
528 */ |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
529 public static class ColumnCache { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
530 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
531 protected Map<Integer, Column> columns; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
532 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
533 public ColumnCache() { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
534 columns = new HashMap<Integer, Column>(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
535 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
536 |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
537 public Column getColumn(Fixing.Column meta) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
538 Integer key = meta.getId(); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
539 Column column = columns.get(key); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
540 if (column == null) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
541 FixingsColumn data = FixingsColumnFactory |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
542 .getInstance() |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
543 .getColumnData(meta); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
544 if (data != null) { |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
545 column = new Column(meta, data); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
546 columns.put(key, column); |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
547 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
548 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
549 return column; |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
550 } |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
551 } // class ColumnCache |
9e0500d64524
FixA: Calculate the Delta W/ts + the average Delta W/ts per Q sector per analysis period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3003
diff
changeset
|
552 |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
553 /** Fetch meta and data columns for analysis periods. */ |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
554 protected Column [][] getAnalysisColumns(FixingsOverview overview) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
555 |
2993
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
556 boolean debug = log.isDebugEnabled(); |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
557 if (debug) { |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
558 log.debug("number analysis periods: " + analysisPeriods.length); |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
559 } |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
560 |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
561 Column columns [][] = new Column[analysisPeriods.length][]; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
562 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
563 Range range = new Range(from, to); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
564 SectorRangeFilter sectorRangeFilter = |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
565 new SectorRangeFilter(qSectorStart, qSectorEnd); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
566 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
567 FixingsColumnFactory fcf = FixingsColumnFactory.getInstance(); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
568 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
569 for (int i = 0; i < columns.length; ++i) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
570 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
571 // Construct filter for period. |
3003
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
572 DateRange period = analysisPeriods[i]; |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
573 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
574 AndFilter filter = new AndFilter(); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
575 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
576 DateRangeFilter dateRangeFilter = |
3003
e5e6363e6cba
FixA: Explicit model for date ranges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2994
diff
changeset
|
577 new DateRangeFilter(period.getFrom(), period.getTo()); |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
578 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
579 filter.add(dateRangeFilter); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
580 filter.add(sectorRangeFilter); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
581 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
582 List<Fixing.Column> metaCols = overview.filter(range, filter); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
583 |
2993
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
584 if (debug) { |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
585 log.debug("number of filtered columns: " + metaCols.size()); |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
586 } |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
587 |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
588 ArrayList<Column> cols = new ArrayList<Column>(metaCols.size()); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
589 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
590 // Only use columns which have data. |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
591 for (Fixing.Column meta: metaCols) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
592 FixingsColumn data = fcf.getColumnData(meta); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
593 if (data != null) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
594 cols.add(new Column(meta, data)); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
595 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
596 } |
2993
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
597 |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
598 if (debug) { |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
599 log.debug("failed loading: " + (metaCols.size()-cols.size())); |
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2992
diff
changeset
|
600 } |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
601 columns[i] = cols.toArray(new Column[cols.size()]); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
602 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
603 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
604 return columns; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
605 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
606 |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
607 protected static String [] createColumnNames(String [] parameters) { |
3107
cbf308f5c41b
FixA: Store the standard deviation of delta Ws of reference points into parameters, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3106
diff
changeset
|
608 String [] result = new String[parameters.length + 4]; |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
609 result[0] = "km"; |
3029
fa5d5b48028a
FixA: Fixed index problem with name of chi^2.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3022
diff
changeset
|
610 result[1] = "chi_sqr"; |
3065
ee653971fa84
FixA: Figure out max Q during fitting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3029
diff
changeset
|
611 result[2] = "max_q"; |
3107
cbf308f5c41b
FixA: Store the standard deviation of delta Ws of reference points into parameters, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3106
diff
changeset
|
612 result[3] = "std-dev"; |
cbf308f5c41b
FixA: Store the standard deviation of delta Ws of reference points into parameters, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3106
diff
changeset
|
613 System.arraycopy(parameters, 0, result, 4, parameters.length); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
614 return result; |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
615 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
616 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
617 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |