Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Parameters.java @ 4255:670e98f5a441
Fixed leak while merging facets.
The ThemeList that is used by OutputHelper to sort the
Facets for an Output now uses a list to store the ManagedFacets.
The correct order is made up by sorting the List using
Collections.sort() function of the Java JDK. Therfore, the
ManagedFacet class implements the Comparable interface. The
return value of its compareTo(other) method depends on the
value of the 'position' field.
author | Ingo Weinzierl <weinzierl.ingo@googlemail.com> |
---|---|
date | Thu, 25 Oct 2012 14:01:46 +0200 |
parents | 1df6984628c3 |
children | bcf25d8c183e |
rev | line source |
---|---|
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.model; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
3059
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
3 import de.intevation.flys.artifacts.math.Linear; |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
4 |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 import gnu.trove.TDoubleArrayList; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 import java.io.Serializable; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 |
2785
f87fcedbfa82
FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2744
diff
changeset
|
9 import org.apache.log4j.Logger; |
f87fcedbfa82
FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2744
diff
changeset
|
10 |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 public class Parameters |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 implements Serializable |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 { |
2785
f87fcedbfa82
FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2744
diff
changeset
|
14 private static Logger log = Logger.getLogger(Parameters.class); |
f87fcedbfa82
FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2744
diff
changeset
|
15 |
3217
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
16 public interface Visitor { |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
17 |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
18 void visit(double [] row); |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
19 |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
20 } // interface Visitor |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
21 |
3059
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
22 public static final double EPSILON = 1e-4; |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
23 |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 protected String [] columnNames; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 protected TDoubleArrayList [] columns; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public Parameters() { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 public Parameters(String [] columnNames) { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 if (columnNames == null || columnNames.length < 1) { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 throw new IllegalArgumentException("columnNames too short."); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 this.columnNames = columnNames; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 columns = new TDoubleArrayList[columnNames.length]; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 for (int i = 0; i < columns.length; ++i) { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 columns[i] = new TDoubleArrayList(); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 public int columnIndex(String name) { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 for (int i = 0; i < columnNames.length; ++i) { |
2993
70469e3d34b9
FixA: Made Delta W/t calculation finally work
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2785
diff
changeset
|
43 if (columnNames[i].equals(name)) { |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 return i; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 } |
3057
febc39e77672
Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3056
diff
changeset
|
47 if (log.isDebugEnabled()) { |
febc39e77672
Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3056
diff
changeset
|
48 log.debug("columnIndex: " + name + " not found in columnNames"); |
febc39e77672
Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3056
diff
changeset
|
49 } |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 return -1; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
53 public int newRow() { |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 int N = columns[0].size(); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
57 for (int i = 0; i < columns.length; ++i) { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
58 columns[i].add(Double.NaN); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
60 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
61 return N; |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
62 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 |
3010
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2993
diff
changeset
|
64 public double get(int row, int index) { |
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2993
diff
changeset
|
65 return columns[index].getQuick(row); |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
66 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 public double get(int i, String columnName) { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 int index = columnIndex(columnName); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 return index >= 0 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 ? columns[index].getQuick(i) |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 : Double.NaN; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
73 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
74 |
3010
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2993
diff
changeset
|
75 public void set(int row, int index, double value) { |
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2993
diff
changeset
|
76 columns[index].setQuick(row, value); |
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2993
diff
changeset
|
77 } |
05a3fe8800b3
FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2993
diff
changeset
|
78 |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
79 public void set(int i, String columnName, double value) { |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
80 int idx = columnIndex(columnName); |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
81 if (idx >= 0) { |
2785
f87fcedbfa82
FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2744
diff
changeset
|
82 columns[idx].setQuick(i, value); |
2729
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
83 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
84 } |
a441be7f1589
Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2695
diff
changeset
|
85 |
3011
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
86 public boolean set(int row, int [] indices, double [] values) { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
87 boolean invalid = false; |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
88 for (int i = 0; i < indices.length; ++i) { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
89 double v = values[i]; |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
90 if (Double.isNaN(v)) { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
91 invalid = true; |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
92 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
93 else { |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
94 columns[indices[i]].setQuick(row, v); |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
95 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
96 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
97 return invalid; |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
98 } |
ab81ffd1343e
FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3010
diff
changeset
|
99 |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
100 public boolean set(int row, String [] names, double [] values) { |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
101 boolean success = true; |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
102 for (int i = 0; i < names.length; ++i) { |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
103 int idx = columnIndex(names[i]); |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
104 if (idx >= 0) { |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
105 columns[idx].setQuick(row, values[i]); |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
106 } |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
107 else { |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
108 success = false; |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
109 } |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
110 } |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
111 return success; |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
112 } |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
113 |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 public int size() { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 return columns[0].size(); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 public int getNumberColumns() { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 return columnNames.length; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
120 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
121 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
122 public String [] getColumnNames() { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
123 return columnNames; |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
125 |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
126 public void removeNaNs() { |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 W.removeNaNs(columns); |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
128 } |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
129 |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
130 public int [] columnIndices(String [] columns) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
131 int [] indices = new int[columns.length]; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
132 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
|
133 indices[i] = columnIndex(columns[i]); |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
134 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
135 return indices; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
136 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
137 |
3392
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
138 public double getValue(int row, String column) { |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
139 int idx = columnIndex(column); |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
140 return idx >= 0 |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
141 ? columns[idx].getQuick(row) |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
142 : Double.NaN; |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
143 } |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3217
diff
changeset
|
144 |
3105
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
145 public double [] get(int row, String [] columns) { |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
146 return get(row, columns, new double[columns.length]); |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
147 } |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
148 |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
149 public double [] get(int row, String [] columns, double [] values) { |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
150 for (int i = 0; i < columns.length; ++i) { |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
151 int idx = columnIndex(columns[i]); |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
152 values[i] = idx < 0 |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
153 ? Double.NaN |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
154 : this.columns[idx].getQuick(row); |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
155 } |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
156 |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
157 return values; |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
158 } |
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3082
diff
changeset
|
159 |
2744
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
160 public void get(int row, int [] columnIndices, double [] values) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
161 for (int i = 0; i < columnIndices.length; ++i) { |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
162 int index = columnIndices[i]; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
163 values[i] = index >= 0 && index < columns.length |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
164 ? columns[index].getQuick(row) |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
165 : Double.NaN; |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
166 } |
c1f2e792704a
FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2729
diff
changeset
|
167 } |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
168 |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
169 public int binarySearch(String columnName, double value) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
170 return binarySearch(columnIndex(columnName), value); |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
171 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
172 |
3056
0b5a7a2c3724
Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3027
diff
changeset
|
173 /** |
0b5a7a2c3724
Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3027
diff
changeset
|
174 * Performes a binary search in the column identified by its |
0b5a7a2c3724
Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3027
diff
changeset
|
175 * index. |
0b5a7a2c3724
Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3027
diff
changeset
|
176 * @return Index of found element or negative insertion point (shifted by one) |
0b5a7a2c3724
Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents:
3027
diff
changeset
|
177 */ |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
178 public int binarySearch(int columnIndex, double value) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
179 TDoubleArrayList column = columns[columnIndex]; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
180 return column.binarySearch(value); |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
181 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
182 |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
183 public int binarySearch(String columnName, double value, double epsilon) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
184 return binarySearch(columnIndex(columnName), value, epsilon); |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
185 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
186 |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
187 public int binarySearch(int columnIndex, double value, double epsilon) { |
3057
febc39e77672
Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3056
diff
changeset
|
188 if (epsilon < 0d) epsilon = -epsilon; |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
189 double vl = value - epsilon; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
190 double vh = value + epsilon; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
191 |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
192 TDoubleArrayList column = columns[columnIndex]; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
193 int lo = 0, hi = column.size()-1; |
3126
fe9be7ccc5e8
Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3125
diff
changeset
|
194 while (hi >= lo) { |
fe9be7ccc5e8
Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3125
diff
changeset
|
195 int mid = (lo + hi) >> 1; |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
196 double v = column.getQuick(mid); |
3126
fe9be7ccc5e8
Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3125
diff
changeset
|
197 if (v < vl) lo = mid + 1; |
fe9be7ccc5e8
Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3125
diff
changeset
|
198 else if (v > vh) hi = mid - 1; |
3057
febc39e77672
Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3056
diff
changeset
|
199 else return mid; |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
200 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
201 |
3059
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
202 return -(lo + 1); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
203 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
204 |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
205 public double [] interpolate(int columnIndex, double key) { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
206 return interpolate(columnIndex, key, new double[columns.length]); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
207 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
208 |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
209 public double [] interpolate(String columnName, double key) { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
210 return interpolate( |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
211 columnIndex(columnName), key, new double[columns.length]); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
212 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
213 |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
214 public double [] interpolate( |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
215 String columnName, |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3061
diff
changeset
|
216 double key, |
3059
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
217 double [] values |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
218 ) { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
219 return interpolate(columnIndex(columnName), key, values); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
220 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
221 |
3061
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
222 public double [] interpolate( |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3061
diff
changeset
|
223 int columnIndex, |
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3061
diff
changeset
|
224 double key, |
3061
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
225 double [] values |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
226 ) { |
3059
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
227 int row = binarySearch(columnIndex, key, EPSILON); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
228 |
3081
26119b7b3154
Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents:
3076
diff
changeset
|
229 if (row >= 0) { // direct hit |
3059
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
230 for (int i = 0; i < values.length; ++i) { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
231 values[i] = columns[i].getQuick(row); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
232 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
233 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
234 else { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
235 row = -row - 1; |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
236 if (row < 1 || row >= size()) { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
237 return null; |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
238 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
239 double v1 = columns[columnIndex].getQuick(row-1); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
240 double v2 = columns[columnIndex].getQuick(row); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
241 double factor = Linear.factor(key, v1, v2); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
242 for (int i = 0; i < values.length; ++i) { |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
243 values[i] = Linear.weight( |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
244 factor, |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
245 columns[i].getQuick(row-1), |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
246 columns[i].getQuick(row)); |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
247 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
248 } |
4f7171ac6153
Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3057
diff
changeset
|
249 return values; |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
250 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
251 |
3061
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
252 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
253 public double [] interpolate( |
3076
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3061
diff
changeset
|
254 String keyName, |
5642a83420f2
FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3061
diff
changeset
|
255 double key, |
3061
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
256 String [] columnNames |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
257 ) { |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
258 int keyIndex = columnIndex(keyName); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
259 return keyIndex < 0 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
260 ? null |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
261 : interpolate(keyIndex, key, columnNames); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
262 } |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
263 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
264 public double [] interpolate( |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
265 int keyIndex, |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
266 double key, |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
267 String [] columnNames |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
268 ) { |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
269 int row = binarySearch(keyIndex, key, EPSILON); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
270 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
271 if (row >= 0) { // direct match |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
272 double [] values = new double[columnNames.length]; |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
273 for (int i = 0; i < values.length; ++i) { |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
274 int ci = columnIndex(columnNames[i]); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
275 values[i] = ci < 0 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
276 ? Double.NaN |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
277 : columns[ci].getQuick(row); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
278 } |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
279 return values; |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
280 } |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
281 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
282 row = -row - 1; |
3081
26119b7b3154
Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents:
3076
diff
changeset
|
283 if (row < 1 || row >= size()) { |
3082
9e03960b3ab8
FixA: Lowered log level in parameter interpolation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3081
diff
changeset
|
284 log.debug("interpolate: row is out of bounds"); |
3061
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
285 return null; |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
286 } |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
287 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
288 double v1 = columns[keyIndex].getQuick(row-1); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
289 double v2 = columns[keyIndex].getQuick(row); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
290 double factor = Linear.factor(key, v1, v2); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
291 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
292 double [] values = new double[columnNames.length]; |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
293 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
294 for (int i = 0; i < values.length; ++i) { |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
295 int ci = columnIndex(columnNames[i]); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
296 values[i] = ci < 0 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
297 ? Double.NaN |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
298 : Linear.weight( |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
299 factor, |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
300 columns[ci].getQuick(row-1), |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
301 columns[ci].getQuick(row)); |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
302 } |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
303 |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
304 return values; |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
305 } |
49baebb39305
FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3059
diff
changeset
|
306 |
3027
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
307 public boolean isSorted(String columnName) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
308 return isSorted(columnIndex(columnName)); |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
309 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
310 |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
311 public boolean isSorted(int columnIndex) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
312 TDoubleArrayList column = columns[columnIndex]; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
313 for (int i = 1, N = column.size(); i < N; ++i) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
314 if (column.getQuick(i-1) > column.getQuick(i)) { |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
315 return false; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
316 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
317 } |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
318 return true; |
52aac4941d2a
FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3011
diff
changeset
|
319 } |
3217
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
320 |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
321 public void visit(Visitor visitor) { |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
322 visit(visitor, new double[columns.length]); |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
323 } |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
324 |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
325 public void visit(Visitor visitor, double [] data) { |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
326 for (int i = 0, R = size(); i < R; ++i) { |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
327 for (int j = 0; j < data.length; ++j) { |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
328 data[j] = columns[j].getQuick(i); |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
329 } |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
330 visitor.visit(data); |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
331 } |
79dd823733e2
FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3126
diff
changeset
|
332 } |
2695
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
333 } |
ae0742f92cd5
Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
334 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |