annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/Parameters.java @ 7300:83bb52fa0c32

(issue1529) Be more tolerant in the fitting. The invalid value warning is removed because invalid data is expected there when datapoints are not valid for this KM
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 11 Oct 2013 18:40:33 +0200
parents cde863b2dae3
children 5e38e2924c07
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4821
diff changeset
9 package org.dive4elements.river.artifacts.model;
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4821
diff changeset
11 import org.dive4elements.river.artifacts.math.Linear;
3059
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4821
diff changeset
13 import org.dive4elements.river.utils.DoubleUtil;
4821
bcf25d8c183e Moved NaN removal code from W to DoubleUtil. Create QKms when calculating the 'Umhuellende'.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3552
diff changeset
14
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import gnu.trove.TDoubleArrayList;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 import java.io.Serializable;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18
2785
f87fcedbfa82 FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2744
diff changeset
19 import org.apache.log4j.Logger;
f87fcedbfa82 FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2744
diff changeset
20
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 public class Parameters
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 implements Serializable
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 {
2785
f87fcedbfa82 FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2744
diff changeset
24 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
25
3217
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
26 public interface Visitor {
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
27
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
28 void visit(double [] row);
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
29
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
30 } // interface Visitor
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
31
3059
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
32 public static final double EPSILON = 1e-4;
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
33
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 protected String [] columnNames;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 protected TDoubleArrayList [] columns;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 public Parameters() {
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 public Parameters(String [] columnNames) {
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 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
42 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
43 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 this.columnNames = columnNames;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 columns = new TDoubleArrayList[columnNames.length];
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 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
47 columns[i] = new TDoubleArrayList();
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 public int columnIndex(String name) {
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 for (int i = 0; i < columnNames.length; ++i) {
2792
fe987587ebc9 Merged revisions 4539-4540,4543,4545-4546 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2785
diff changeset
53 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
54 return i;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 }
3057
febc39e77672 Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3056
diff changeset
57 if (log.isDebugEnabled()) {
febc39e77672 Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3056
diff changeset
58 log.debug("columnIndex: " + name + " not found in columnNames");
febc39e77672 Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3056
diff changeset
59 }
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 return -1;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62
2729
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
63 public int newRow() {
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 int N = columns[0].size();
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 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
68 columns[i].add(Double.NaN);
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70
2729
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
71 return N;
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73
3010
05a3fe8800b3 FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2792
diff changeset
74 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: 2792
diff changeset
75 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
76 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 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
79 int index = columnIndex(columnName);
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 return index >= 0
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 ? columns[index].getQuick(i)
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 : Double.NaN;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84
3010
05a3fe8800b3 FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2792
diff changeset
85 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: 2792
diff changeset
86 columns[index].setQuick(row, value);
05a3fe8800b3 FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2792
diff changeset
87 }
05a3fe8800b3 FixA: Store Chi^2 of fitting into result, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2792
diff changeset
88
2729
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
89 public void set(int i, String columnName, double value) {
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
90 int idx = columnIndex(columnName);
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
91 if (idx >= 0) {
2785
f87fcedbfa82 FixA: Fixed stupid index bug.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2744
diff changeset
92 columns[idx].setQuick(i, value);
2729
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
93 }
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
94 }
a441be7f1589 Added Fix calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2695
diff changeset
95
3011
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
96 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
97 boolean invalid = false;
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
98 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
99 double v = values[i];
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
100 if (Double.isNaN(v)) {
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
101 invalid = true;
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
102 }
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
103 else {
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
104 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
105 }
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
106 }
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
107 return invalid;
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
108 }
ab81ffd1343e FixA: Reactivated rewrite of the outlier checks.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3010
diff changeset
109
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
110 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
111 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
112 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
113 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
114 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
115 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
116 }
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
117 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
118 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
119 }
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
120 }
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
121 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
122 }
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
123
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124 public int size() {
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125 return columns[0].size();
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
128 public int getNumberColumns() {
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
129 return columnNames.length;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
130 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
131
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132 public String [] getColumnNames() {
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 return columnNames;
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 public void removeNaNs() {
4821
bcf25d8c183e Moved NaN removal code from W to DoubleUtil. Create QKms when calculating the 'Umhuellende'.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3552
diff changeset
137 DoubleUtil.removeNaNs(columns);
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 }
2744
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
139
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
140 public int [] columnIndices(String [] columns) {
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
141 int [] indices = new int[columns.length];
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
142 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
143 indices[i] = columnIndex(columns[i]);
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
144 }
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
145 return indices;
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
146 }
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
147
3392
56f62b5209f5 S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
148 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
149 int idx = columnIndex(column);
56f62b5209f5 S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
150 return idx >= 0
56f62b5209f5 S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
151 ? columns[idx].getQuick(row)
56f62b5209f5 S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
152 : Double.NaN;
56f62b5209f5 S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
153 }
56f62b5209f5 S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
154
3105
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3082
diff changeset
155 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
156 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
157 }
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 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
160 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
161 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
162 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
163 ? 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
164 : 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
165 }
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3082
diff changeset
166
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3082
diff changeset
167 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
168 }
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3082
diff changeset
169
2744
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
170 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
171 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
172 int index = columnIndices[i];
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
173 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
174 ? columns[index].getQuick(row)
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
175 : Double.NaN;
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
176 }
c1f2e792704a FixA: Calculate Delta W/t, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2729
diff changeset
177 }
3027
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
178
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
179 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
180 return binarySearch(columnIndex(columnName), 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
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3027
diff changeset
183 /**
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3027
diff changeset
184 * 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
185 * index.
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3027
diff changeset
186 * @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
187 */
3027
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
188 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
189 TDoubleArrayList column = columns[columnIndex];
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
190 return column.binarySearch(value);
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
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
193 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
194 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
195 }
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
196
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
197 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
198 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
199 double vl = value - epsilon;
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
200 double vh = value + epsilon;
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
201
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
202 TDoubleArrayList column = columns[columnIndex];
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
203 int lo = 0, hi = column.size()-1;
3126
fe9be7ccc5e8 Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3125
diff changeset
204 while (hi >= lo) {
fe9be7ccc5e8 Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3125
diff changeset
205 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
206 double v = column.getQuick(mid);
3126
fe9be7ccc5e8 Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3125
diff changeset
207 if (v < vl) lo = mid + 1;
fe9be7ccc5e8 Fixed binary search in Parameters.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3125
diff changeset
208 else if (v > vh) hi = mid - 1;
3057
febc39e77672 Make it compilable again
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3056
diff changeset
209 else return mid;
3027
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
210 }
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
211
3059
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
212 return -(lo + 1);
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
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
215 public double [] interpolate(int columnIndex, double key) {
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
216 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
217 }
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 public double [] interpolate(String columnName, double key) {
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
220 return interpolate(
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
221 columnIndex(columnName), key, new double[columns.length]);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
222 }
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
223
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
224 public double [] interpolate(
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
225 String columnName,
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3061
diff changeset
226 double key,
3059
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
227 double [] values
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
228 ) {
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
229 return interpolate(columnIndex(columnName), key, values);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
230 }
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
231
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
232 public double [] interpolate(
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3061
diff changeset
233 int columnIndex,
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3061
diff changeset
234 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
235 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
236 ) {
3059
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
237 int row = binarySearch(columnIndex, key, EPSILON);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
238
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
239 if (row >= 0) { // direct hit
3059
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
240 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
241 values[i] = columns[i].getQuick(row);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
242 }
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
243 }
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
244 else {
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
245 row = -row - 1;
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
246 if (row < 1 || row >= size()) {
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
247 return null;
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 double v1 = columns[columnIndex].getQuick(row-1);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
250 double v2 = columns[columnIndex].getQuick(row);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
251 double factor = Linear.factor(key, v1, v2);
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
252 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
253 values[i] = Linear.weight(
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
254 factor,
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
255 columns[i].getQuick(row-1),
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
256 columns[i].getQuick(row));
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
257 }
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
258 }
4f7171ac6153 Parameters: Linear interpolation of parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3057
diff changeset
259 return values;
3027
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
260 }
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
261
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
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 public double [] interpolate(
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3061
diff changeset
264 String keyName,
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3061
diff changeset
265 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
266 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
267 ) {
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 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
269 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
270 ? 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
271 : 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
272 }
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
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 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
275 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
276 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
277 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
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 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
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 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
282 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
283 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
284 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
285 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
286 ? 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
287 : 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
288 }
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 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
290 }
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 row = -row - 1;
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
293 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
294 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
295 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
296 }
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
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 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
299 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
300 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
301
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 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
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 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
305 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
306 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
307 ? 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
308 : 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
309 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
310 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
311 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
312 }
49baebb39305 FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3059
diff changeset
313
49baebb39305 FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3059
diff changeset
314 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
315 }
49baebb39305 FixA: Add interpolation of parameters that better suits the instantiation real functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3059
diff changeset
316
7299
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
317 public double [] interpolateWithLimit(
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
318 String keyName,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
319 double key,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
320 String [] columnNames,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
321 double limit
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
322 ) {
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
323 int keyIndex = columnIndex(keyName);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
324 return keyIndex < 0
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
325 ? null
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
326 : interpolateWithLimit(keyIndex, key, columnNames, limit);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
327 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
328
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
329 /* Only interpolate if the difference between the two key's
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
330 * is less then limit */
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
331 public double [] interpolateWithLimit(
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
332 int keyIndex,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
333 double key,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
334 String [] columnNames,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
335 double limit
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
336 ) {
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
337 int row = binarySearch(keyIndex, key, EPSILON);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
338
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
339 if (row >= 0) { // direct match
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
340 double [] values = new double[columnNames.length];
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
341 for (int i = 0; i < values.length; ++i) {
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
342 int ci = columnIndex(columnNames[i]);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
343 values[i] = ci < 0
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
344 ? Double.NaN
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
345 : columns[ci].getQuick(row);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
346 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
347 return values;
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
348 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
349
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
350 row = -row - 1;
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
351 if (row < 1 || row >= size()) {
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
352 log.debug("interpolate: row is out of bounds");
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
353 return null;
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
354 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
355
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
356 double v1 = columns[keyIndex].getQuick(row-1);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
357 double v2 = columns[keyIndex].getQuick(row);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
358 if (Math.abs(v1-v2) > limit) {
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
359 return null;
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
360 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
361 double factor = Linear.factor(key, v1, v2);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
362
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
363 double [] values = new double[columnNames.length];
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
364
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
365 for (int i = 0; i < values.length; ++i) {
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
366 int ci = columnIndex(columnNames[i]);
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
367 values[i] = ci < 0
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
368 ? Double.NaN
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
369 : Linear.weight(
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
370 factor,
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
371 columns[ci].getQuick(row-1),
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
372 columns[ci].getQuick(row));
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
373 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
374
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
375 return values;
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
376 }
cde863b2dae3 (issue1529) Only interpolate within a step limit in WQ diagram
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
377
3027
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
378 public boolean isSorted(String columnName) {
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
379 return isSorted(columnIndex(columnName));
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
380 }
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
381
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
382 public boolean isSorted(int columnIndex) {
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
383 TDoubleArrayList column = columns[columnIndex];
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
384 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
385 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
386 return false;
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
387 }
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
388 }
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
389 return true;
52aac4941d2a FixA: Added binary search methods for parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3011
diff changeset
390 }
3217
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
391
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
392 public void visit(Visitor visitor) {
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
393 visit(visitor, new double[columns.length]);
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
394 }
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
395
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
396 public void visit(Visitor visitor, double [] data) {
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
397 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
398 for (int j = 0; j < data.length; ++j) {
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
399 data[j] = columns[j].getQuick(i);
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
400 }
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
401 visitor.visit(data);
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
402 }
79dd823733e2 FixA: Added parameter exporter.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3126
diff changeset
403 }
2695
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
404 }
ae0742f92cd5 Added model to store fitting results into cache.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
405 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org