Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQRelationCalculation.java @ 6797:e237a83fd87d
S/Q relation: Spell Ferguson with F.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 09 Aug 2013 18:29:08 +0200 |
parents | 978ab716a15e |
children | 330ea2915168 |
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:
5396
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.sq; |
3072
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
11 import org.dive4elements.artifacts.common.utils.StringUtils; |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
12 import org.dive4elements.river.artifacts.access.SQRelationAccess; |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
13 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
14 import org.dive4elements.river.artifacts.math.fitting.Function; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
15 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory; |
3072
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
17 import org.dive4elements.river.artifacts.model.Calculation; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
18 import org.dive4elements.river.artifacts.model.CalculationResult; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
19 import org.dive4elements.river.artifacts.model.DateRange; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
20 import org.dive4elements.river.artifacts.model.Parameters; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
21 |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5396
diff
changeset
|
22 import org.dive4elements.river.backend.SedDBSessionHolder; |
3289
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
23 |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
24 import java.util.ArrayList; |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
25 import java.util.Arrays; |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
26 import java.util.List; |
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
27 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
28 import org.apache.log4j.Logger; |
3072
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 |
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 public class SQRelationCalculation extends Calculation { |
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
32 private static final Logger log = |
3072
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 Logger.getLogger(SQRelationCalculation.class); |
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
35 public static final boolean NON_LINEAR_FITTING = |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
36 Boolean.getBoolean("minfo.sq.calcution.non.linear.fitting"); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
37 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
38 public static final String SQ_POW_FUNCTION_NAME = "sq-pow"; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
39 public static final String SQ_LIN_FUNCTION_NAME = "linear"; |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
40 |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
41 public static final String [] EXTRA_PARAMETERS = { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
42 "chi_sqr", |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
43 "std_dev", |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
44 "max_q", |
6797
e237a83fd87d
S/Q relation: Spell Ferguson with F.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6796
diff
changeset
|
45 "c_ferguson", |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
46 "c_duan", |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
47 "r2" |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
48 }; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
49 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
50 protected String river; |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
51 protected double location; |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
52 protected DateRange period; |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
53 protected double outliers; |
5396
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
54 private String method; |
3305
b24920235944
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3304
diff
changeset
|
55 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
56 public SQRelationCalculation() { |
3079
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
57 } |
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
58 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
59 public SQRelationCalculation(SQRelationAccess access) { |
3079
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
60 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
61 String river = access.getRiver(); |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
62 Double location = access.getLocation(); |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
63 DateRange period = access.getPeriod(); |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
64 Double outliers = access.getOutliers(); |
5396
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
65 String method = access.getOutlierMethod(); |
3101
b31397addf2f
Create Facets for each SQResult and SQFractionResult.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3079
diff
changeset
|
66 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
67 if (river == null) { |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
68 // TODO: i18n |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
69 addProblem("sq.missing.river"); |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
70 } |
3101
b31397addf2f
Create Facets for each SQResult and SQFractionResult.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3079
diff
changeset
|
71 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
72 if (location == null) { |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
73 // TODO: i18n |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
74 addProblem("sq.missing.location"); |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
75 } |
3101
b31397addf2f
Create Facets for each SQResult and SQFractionResult.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3079
diff
changeset
|
76 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
77 if (period == null) { |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
78 // TODO: i18n |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
79 addProblem("sq.missing.periods"); |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
80 } |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
81 |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
82 if (outliers == null) { |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
83 // TODO: i18n |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
84 addProblem("sq.missing.outliers"); |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
85 } |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
86 |
5396
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
87 if (method == null) { |
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
88 //TODO: i18n |
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
89 addProblem("sq.missing.method"); |
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
90 } |
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
91 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
92 if (!hasProblems()) { |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
93 this.river = river; |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
94 this.location = location; |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
95 this.period = period; |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
96 this.outliers = outliers; |
5396
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
97 this.method = method; |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
98 } |
3079
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
99 } |
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
100 |
3105
9592b7d76633
Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3101
diff
changeset
|
101 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
102 public CalculationResult calculate() { |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
103 log.debug("SQRelationCalculation.calculate"); |
3079
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
104 |
3222
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
105 if (hasProblems()) { |
116b342893e3
SQ: Connect calculation with artifact parameter access.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3118
diff
changeset
|
106 return new CalculationResult(this); |
3118
6fb211753674
The fake calculation for SQ relation now creates only values bigger than 0.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3105
diff
changeset
|
107 } |
3079
8ad8a227d983
Added model classes for SQ calculation; generate fake results and improved the SQRelationGenerator which now draws the outliers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3072
diff
changeset
|
108 |
3289
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
109 SedDBSessionHolder.acquire(); |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
110 try { |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
111 return internalCalculate(); |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
112 } |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
113 finally { |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
114 SedDBSessionHolder.release(); |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
115 } |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
116 } |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
117 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
118 public interface TransformCoeffs { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
119 double [] transform(double [] coeffs); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
120 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
121 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
122 public static final TransformCoeffs IDENTITY_TRANS = |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
123 new TransformCoeffs() { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
124 @Override |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
125 public double [] transform(double [] coeffs) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
126 return coeffs; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
127 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
128 }; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
129 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
130 public static final TransformCoeffs LINEAR_TRANS = |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
131 new TransformCoeffs() { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
132 @Override |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
133 public double [] transform(double [] coeffs) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
134 log.debug("before transform: " + Arrays.toString(coeffs)); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
135 if (coeffs.length == 2) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
136 coeffs = new double [] { Math.exp(coeffs[1]), coeffs[0] }; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
137 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
138 log.debug("after transform: " + Arrays.toString(coeffs)); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
139 return coeffs; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
140 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
141 }; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
142 |
3289
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
143 protected CalculationResult internalCalculate() { |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
144 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
145 Function powFunction = FunctionFactory |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
146 .getInstance() |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
147 .getFunction(SQ_POW_FUNCTION_NAME); |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
148 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
149 if (powFunction == null) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
150 log.error("No '" + SQ_POW_FUNCTION_NAME + "' function found."); |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
151 // TODO: i18n |
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
152 addProblem("sq.missing.sq.function"); |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
153 return new CalculationResult(new SQResult[0], this); |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
154 } |
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
155 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
156 Function function; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
157 SQ.View sqView; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
158 SQ.Factory sqFactory; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
159 ParameterCreator pc; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
160 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
161 if (NON_LINEAR_FITTING) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
162 log.debug("Use non linear fitting."); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
163 sqView = SQ.SQ_VIEW; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
164 sqFactory = SQ.SQ_FACTORY; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
165 function = powFunction; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
166 pc = new ParameterCreator( |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
167 powFunction.getParameterNames(), |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
168 powFunction.getParameterNames(), |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
169 powFunction, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
170 sqView); |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
171 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
172 else { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
173 log.debug("Use linear fitting."); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
174 sqView = LogSQ.LOG_SQ_VIEW; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
175 sqFactory = LogSQ.LOG_SQ_FACTORY; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
176 function = FunctionFactory |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
177 .getInstance() |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
178 .getFunction(SQ_LIN_FUNCTION_NAME); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
179 if (function == null) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
180 log.error("No '" + SQ_LIN_FUNCTION_NAME + "' function found."); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
181 // TODO: i18n |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
182 addProblem("sq.missing.sq.function"); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
183 return new CalculationResult(new SQResult[0], this); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
184 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
185 pc = new LinearParameterCreator( |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
186 powFunction.getParameterNames(), |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
187 function.getParameterNames(), |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
188 function, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
189 sqView); |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
190 } |
6780
b8f94e865875
S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
191 |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
192 Measurements measurements = |
6780
b8f94e865875
S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
193 MeasurementFactory.getMeasurements( |
b8f94e865875
S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
194 river, location, period, sqFactory); |
3310
8af1111af180
SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3305
diff
changeset
|
195 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
196 SQFractionResult [] fractionResults = |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
197 new SQFractionResult[SQResult.NUMBER_FRACTIONS]; |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
198 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
199 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
200 for (int i = 0; i < fractionResults.length; ++i) { |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
201 List<SQ> sqs = measurements.getSQs(i); |
3310
8af1111af180
SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3305
diff
changeset
|
202 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
203 SQFractionResult fractionResult; |
3310
8af1111af180
SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3305
diff
changeset
|
204 |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
205 List<SQFractionResult.Iteration> iterations = |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
206 doFitting(function, sqs, sqView, pc); |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
207 |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
208 if (iterations == null) { |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
209 // TODO: i18n |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
210 addProblem("sq.fitting.failed." + i); |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
211 fractionResult = new SQFractionResult(); |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
212 } |
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
213 else { |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
214 fractionResult = new SQFractionResult( |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
215 sqs.toArray(new SQ[sqs.size()]), |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
216 iterations); |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
217 } |
3310
8af1111af180
SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3305
diff
changeset
|
218 |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
219 fractionResults[i] = fractionResult; |
3297
79c8e0d9fdea
SQ relation: Use only first time period.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3290
diff
changeset
|
220 } |
3289
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3222
diff
changeset
|
221 |
3310
8af1111af180
SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3305
diff
changeset
|
222 return new CalculationResult( |
3426
e7a67407dea1
Limited the input of time periods in SQ relation calculation to 1.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3392
diff
changeset
|
223 new SQResult[] { new SQResult(location, fractionResults) }, |
3310
8af1111af180
SQ relation: More fixes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3305
diff
changeset
|
224 this); |
3072
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
225 } |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
226 |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
227 protected List<SQFractionResult.Iteration> doFitting( |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
228 final Function function, |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
229 List<SQ> sqs, |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
230 SQ.View sqView, |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
231 final ParameterCreator pc |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
232 ) { |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
233 final List<SQFractionResult.Iteration> iterations = |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
234 new ArrayList<SQFractionResult.Iteration>(); |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
235 |
6780
b8f94e865875
S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
236 boolean success = new Fitting(function, outliers, sqView).fit( |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
237 sqs, |
5396
aaf810d4ec82
Use new state 'outlier mehtod selection' in SQ-relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4039
diff
changeset
|
238 method, |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
239 new Fitting.Callback() { |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
240 @Override |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
241 public void afterIteration( |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
242 double [] coeffs, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
243 SQ [] measurements, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
244 SQ [] outliers, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
245 double standardDeviation, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
246 double chiSqr |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
247 ) { |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
248 Parameters parameters = pc.createParameters( |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
249 coeffs, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
250 standardDeviation, |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
251 chiSqr, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
252 measurements); |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
253 iterations.add(new SQFractionResult.Iteration( |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
254 parameters, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
255 measurements, |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
256 outliers)); |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
257 } |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
258 }); |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
259 |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
260 return success ? iterations : null; |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
261 } |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3426
diff
changeset
|
262 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
263 public static class ParameterCreator { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
264 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
265 protected String [] origNames; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
266 protected String [] proxyNames; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
267 |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
268 protected Function function; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
269 protected SQ.View view; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
270 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
271 public ParameterCreator( |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
272 String [] origNames, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
273 String [] proxyNames, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
274 Function function, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
275 SQ.View view |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
276 ) { |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
277 this.origNames = origNames; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
278 this.proxyNames = proxyNames; |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
279 this.view = view; |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
280 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
281 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
282 protected double [] transformCoeffs(double [] coeffs) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
283 return coeffs; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
284 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
285 |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
286 private static double maxQ(SQ [] sqs) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
287 double max = -Double.MAX_VALUE; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
288 for (SQ sq: sqs) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
289 double q = sq.getQ(); // Don't use view here! |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
290 if (q > max) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
291 max = q; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
292 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
293 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
294 return Math.max(0d, max); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
295 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
296 |
6797
e237a83fd87d
S/Q relation: Spell Ferguson with F.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6796
diff
changeset
|
297 private double cFerguson( |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
298 org.dive4elements.river.artifacts.math.Function instance, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
299 SQ [] sqs |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
300 ) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
301 double sqrSum = 0d; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
302 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
303 for (SQ sq: sqs) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
304 double s = view.getS(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
305 double q = view.getQ(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
306 double diffS = s - instance.value(q); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
307 sqrSum += diffS*diffS; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
308 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
309 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
310 return Math.exp(0.5d * sqrSum/(sqs.length-2)); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
311 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
312 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
313 private double cDuan( |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
314 org.dive4elements.river.artifacts.math.Function instance, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
315 SQ [] sqs |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
316 ) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
317 double sum = 0d; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
318 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
319 for (SQ sq: sqs) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
320 double s = view.getS(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
321 double q = view.getQ(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
322 double diffS = s - instance.value(q); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
323 sum += Math.exp(diffS); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
324 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
325 return sum / sqs.length; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
326 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
327 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
328 private double r2( |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
329 org.dive4elements.river.artifacts.math.Function instance, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
330 SQ [] sqs |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
331 ) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
332 double xm = 0; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
333 double ym = 0; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
334 for (SQ sq: sqs) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
335 double s = view.getS(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
336 double q = view.getQ(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
337 double fs = instance.value(q); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
338 xm += s; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
339 ym += fs; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
340 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
341 xm /= sqs.length; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
342 ym /= sqs.length; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
343 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
344 double mixXY = 0d; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
345 double sumX = 0d; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
346 double sumY = 0d; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
347 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
348 for (SQ sq: sqs) { |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
349 double s = view.getS(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
350 double q = view.getQ(sq); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
351 double fs = instance.value(q); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
352 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
353 double xDiff = xm - s; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
354 double yDiff = ym - fs; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
355 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
356 mixXY += xDiff*yDiff; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
357 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
358 sumX += xDiff*xDiff; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
359 sumY *= yDiff*yDiff; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
360 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
361 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
362 double r = mixXY/Math.sqrt(sumX*sumY); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
363 return r*r; |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
364 } |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
365 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
366 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
367 public Parameters createParameters( |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
368 double [] coeffs, |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
369 double standardDeviation, |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
370 double chiSqr, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
371 SQ [] measurements |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
372 ) { |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
373 String [] columns = StringUtils.join(EXTRA_PARAMETERS, origNames); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
374 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
375 Parameters parameters = new Parameters(columns); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
376 int row = parameters.newRow(); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
377 parameters.set(row, origNames, transformCoeffs(coeffs)); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
378 parameters.set(row, "chi_sqr", chiSqr); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
379 parameters.set(row, "std_dev", standardDeviation); |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
380 parameters.set(row, "max_q", maxQ(measurements)); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
381 |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
382 // We need to instantiate the function to calculate |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
383 // the remaining values. |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
384 org.dive4elements.river.artifacts.math.Function f = |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
385 function.instantiate(coeffs); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
386 |
6797
e237a83fd87d
S/Q relation: Spell Ferguson with F.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6796
diff
changeset
|
387 parameters.set(row, "c_ferguson", cFerguson(f, measurements)); |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
388 parameters.set(row, "c_duan", cDuan(f, measurements)); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
389 parameters.set(row, "r2", r2(f, measurements)); |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
390 |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
391 return parameters; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
392 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
393 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
394 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
395 /** We need to transform the coeffs back to the original function. */ |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
396 public static class LinearParameterCreator extends ParameterCreator { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
397 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
398 public LinearParameterCreator( |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
399 String [] origNames, |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
400 String [] proxyNames, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
401 Function function, |
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
402 SQ.View view |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
403 ) { |
6796
978ab716a15e
flys/issue1347: Added missing calcutions. TODO: Bring them into the generated outs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6787
diff
changeset
|
404 super(origNames, proxyNames, function, view); |
6787
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
405 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
406 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
407 @Override |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
408 protected double [] transformCoeffs(double [] coeffs) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
409 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
410 int bP = StringUtils.indexOf("m", proxyNames); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
411 int mP = StringUtils.indexOf("b", proxyNames); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
412 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
413 int aO = StringUtils.indexOf("a", origNames); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
414 int bO = StringUtils.indexOf("b", origNames); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
415 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
416 if (bP == -1 || mP == -1 || aO == -1 || bO == -1) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
417 log.error("index not found: " |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
418 + bP + " " + mP + " " |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
419 + aO + " " + bO); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
420 return coeffs; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
421 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
422 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
423 double [] ncoeffs = (double [])coeffs.clone(); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
424 ncoeffs[aO] = Math.exp(coeffs[mP]); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
425 ncoeffs[bO] = coeffs[bP]; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
426 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
427 if (log.isDebugEnabled()) { |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
428 log.debug("before transform: " + Arrays.toString(coeffs)); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
429 log.debug("after transform: " + Arrays.toString(ncoeffs)); |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
430 } |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
431 |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
432 return ncoeffs; |
51eb6491c537
S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property S/Q: Excel compat completed: Now the data is linearized before fitting. This can be prevented by setting the system property "minfo.sq.calcution.non.linear.fitting" to true.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6780
diff
changeset
|
433 } |
3304
02d5731b43a2
SQ relation: Build a valid SQResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3297
diff
changeset
|
434 } |
3072
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
435 } |
0d3dd8230064
Added component stubs for SQ relation calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
436 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |