Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQFractionResult.java @ 3552:1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
store the curve coefficients for each iteration step
of the outlier elimination.
flys-artifacts/trunk@5146 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 27 Jul 2012 12:36:09 +0000 |
parents | 56f62b5209f5 |
children |
comparison
equal
deleted
inserted
replaced
3551:e7f1556192b3 | 3552:1df6984628c3 |
---|---|
4 | 4 |
5 import java.io.Serializable; | 5 import java.io.Serializable; |
6 | 6 |
7 import java.util.List; | 7 import java.util.List; |
8 | 8 |
9 public class SQFractionResult implements Serializable { | 9 public class SQFractionResult |
10 implements Serializable | |
11 { | |
12 public static class Iteration | |
13 implements Serializable | |
14 { | |
15 protected Parameters parameters; | |
16 protected SQ [] measurements; | |
17 protected SQ [] outliers; | |
10 | 18 |
11 protected Parameters parameters; | 19 public Iteration() { |
12 protected SQ[] measurements; | 20 } |
13 protected List<SQ[]> outliers; | 21 |
22 public Iteration( | |
23 Parameters parameters, | |
24 SQ [] measurements, | |
25 SQ [] outliers | |
26 ) { | |
27 this.parameters = parameters; | |
28 this.measurements = measurements; | |
29 this.outliers = outliers; | |
30 } | |
31 | |
32 public Parameters getParameters() { | |
33 return parameters; | |
34 } | |
35 | |
36 public void setParameters(Parameters parameters) { | |
37 this.parameters = parameters; | |
38 } | |
39 | |
40 public SQ [] getMeasurements() { | |
41 return measurements; | |
42 } | |
43 | |
44 public void setMeasurements(SQ [] measurements) { | |
45 this.measurements = measurements; | |
46 } | |
47 | |
48 public SQ [] getOutliers() { | |
49 return outliers; | |
50 } | |
51 | |
52 public void setOutliers(SQ [] outliers) { | |
53 this.outliers = outliers; | |
54 } | |
55 | |
56 public boolean isValid() { | |
57 return parameters != null | |
58 && measurements != null | |
59 && outliers != null; | |
60 } | |
61 | |
62 public int numOutliers() { | |
63 return outliers != null | |
64 ? outliers.length | |
65 : 0; | |
66 } | |
67 | |
68 public int numMeasurements() { | |
69 return measurements != null | |
70 ? measurements.length | |
71 : 0; | |
72 } | |
73 } // class Iteration | |
74 | |
75 protected SQ [] measurements; | |
76 protected List<Iteration> iterations; | |
14 | 77 |
15 public SQFractionResult() { | 78 public SQFractionResult() { |
16 } | 79 } |
17 | 80 |
18 public SQFractionResult( | 81 public SQFractionResult( |
19 Parameters parameters, | 82 SQ [] measurements, |
20 SQ[] measurements, | 83 List<Iteration> iterations |
21 List<SQ[]> outliers | |
22 ) { | 84 ) { |
23 this.parameters = parameters; | |
24 this.measurements = measurements; | 85 this.measurements = measurements; |
25 this.outliers = outliers; | 86 this.iterations = iterations; |
26 } | 87 } |
27 | 88 |
28 public boolean isValid() { | 89 public SQ [] getMeasurements() { |
29 return parameters != null | 90 return measurements; |
30 && measurements != null | 91 } |
31 && outliers != null; | 92 |
93 public void setMeasurements(SQ [] measurements) { | |
94 this.measurements = measurements; | |
95 } | |
96 | |
97 public List<Iteration> getIterations() { | |
98 return iterations; | |
99 } | |
100 | |
101 public void setIterations(List<Iteration> iterations) { | |
102 this.iterations = iterations; | |
103 } | |
104 | |
105 public double [] getQExtent() { | |
106 return getQExtent(new double[2]); | |
107 } | |
108 | |
109 public double [] getQExtent(double extent[]) { | |
110 extent[0] = Double.MAX_VALUE; | |
111 extent[1] = -Double.MIN_VALUE; | |
112 | |
113 for (SQ sq: measurements) { | |
114 double q = sq.getQ(); | |
115 if (q < extent[0]) extent[0] = q; | |
116 if (q > extent[1]) extent[1] = q; | |
117 } | |
118 | |
119 return extent; | |
120 } | |
121 | |
122 public int numIterations() { | |
123 return iterations != null ? iterations.size() : 0; | |
32 } | 124 } |
33 | 125 |
34 public Parameters getParameters() { | 126 public Parameters getParameters() { |
35 return parameters; | 127 return iterations != null && !iterations.isEmpty() |
128 ? iterations.get(iterations.size()-1).getParameters() | |
129 : null; | |
36 } | 130 } |
37 | 131 |
38 public void setParameters(Parameters parameters) { | 132 public SQ [] getOutliers(int index) { |
39 this.parameters = parameters; | 133 return index >= 0 && index < iterations.size() |
134 ? iterations.get(index).getOutliers() | |
135 : null; | |
40 } | 136 } |
41 | 137 |
42 | 138 public Parameters getParameters(int index) { |
43 public SQ[] getMeasurements() { | 139 return index >= 0 && index < iterations.size() |
44 return measurements; | 140 ? iterations.get(index).getParameters() |
141 : null; | |
45 } | 142 } |
46 | 143 |
47 public void setMeasurements(SQ[] measurements) { | 144 public SQ [] getMeasurements(int index) { |
48 this.measurements = measurements; | 145 return index >= 0 && index < iterations.size() |
146 ? iterations.get(index).getMeasurements() | |
147 : null; | |
49 } | 148 } |
50 | 149 |
51 | 150 public int totalNumOutliers() { |
52 public List<SQ[]> getOutliers() { | 151 int sum = 0; |
53 return outliers; | 152 if (iterations != null) { |
153 for (Iteration iteration: iterations) { | |
154 sum += iteration.numOutliers(); | |
155 } | |
156 } | |
157 return sum; | |
54 } | 158 } |
55 | 159 |
56 public void setOutliers(List<SQ[]> outliers) { | 160 public int numMeasurements() { |
57 this.outliers = outliers; | |
58 } | |
59 | |
60 | |
61 public int getOutliersCount() { | |
62 return outliers != null | |
63 ? outliers.size() | |
64 : 0; | |
65 } | |
66 | |
67 | |
68 public SQ[] getOutliers(int idx) { | |
69 if (outliers != null && idx >= 0 && idx < outliers.size()) { | |
70 return outliers.get(idx); | |
71 } | |
72 | |
73 return null; | |
74 } | |
75 | |
76 public void addOutliers(SQ[] outliers) { | |
77 this.outliers.add(outliers); | |
78 } | |
79 | |
80 public int getTotalCount() { | |
81 return measurements != null | 161 return measurements != null |
82 ? measurements.length | 162 ? measurements.length |
83 : 0; | 163 : 0; |
84 } | 164 } |
85 | |
86 public double getMinQ() { | |
87 double min = Double.MAX_VALUE; | |
88 | |
89 for (SQ sq: measurements) { | |
90 double q = sq.getQ(); | |
91 | |
92 if (q < min) { | |
93 min = q; | |
94 } | |
95 } | |
96 | |
97 return min; | |
98 } | |
99 | |
100 | |
101 public double getMaxQ() { | |
102 double max = -Double.MAX_VALUE; | |
103 | |
104 for (SQ sq: measurements) { | |
105 double q = sq.getQ(); | |
106 | |
107 if (q > max) { | |
108 max = q; | |
109 } | |
110 } | |
111 | |
112 return max; | |
113 } | |
114 } | 165 } |
115 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 166 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |