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 :

http://dive4elements.wald.intevation.org