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

(issue1529) Be more tolerant in the fitting. The invalid value warning is removed because invalid data is expected there when datapoints are not valid for this KM
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 11 Oct 2013 18:40:33 +0200
parents af13ceeba52a
children e4606eae8ea5
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: 5867
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: 5867
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: 4442
diff changeset
9 package org.dive4elements.river.artifacts.model.fixings;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
11 import org.apache.log4j.Logger;
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4442
diff changeset
13 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4442
diff changeset
14 import org.dive4elements.artifacts.CallContext;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
15 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4442
diff changeset
16 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4442
diff changeset
17 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4442
diff changeset
18 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4442
diff changeset
19 import org.dive4elements.river.utils.KMIndex;
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3192
diff changeset
20
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 * Facet to show the outliers in a fix calculation.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 *
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 public class FixOutlierFacet
4442
26774405c884 Introduce a new FixingsFacet to add save access to the current Km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3729
diff changeset
27 extends FixingsFacet
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 implements FacetTypes {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 /** House logger. */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 private static Logger logger = Logger.getLogger(FixOutlierFacet.class);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 /** Trivial Constructor. */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 public FixOutlierFacet() {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 * @param name
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 */
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3035
diff changeset
41 public FixOutlierFacet(String name, String description) {
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3035
diff changeset
42 super(0, name, description, ComputeType.ADVANCE, null, null);
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44
3192
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3088
diff changeset
45 public FixOutlierFacet(int index, String name, String description) {
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3088
diff changeset
46 super(index, name, description, ComputeType.ADVANCE, null, null);
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3088
diff changeset
47 }
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3088
diff changeset
48
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 * Returns the data this facet requires.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 *
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
53 * @param artifact the owner artifact; needs to be a D4EArtifact.
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
54 * @param context the CallContext; required to retrieve the value of
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
55 * <i>currentKm</i>.
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 *
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
57 * @return an array of QW objects or null.
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 @Override
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 public Object getData(Artifact artifact, CallContext context) {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 logger.debug("FixOutlierFacet.getData");
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
62
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
63 if (artifact instanceof D4EArtifact) {
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
64 D4EArtifact flys = (D4EArtifact)artifact;
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
65
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
66 CalculationResult res =
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
67 (CalculationResult) flys.compute(context,
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
68 ComputeType.ADVANCE,
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
69 false);
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
70
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
71 FixResult result = (FixResult) res.getData();
4442
26774405c884 Introduce a new FixingsFacet to add save access to the current Km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3729
diff changeset
72 double currentKm = getCurrentKm(context);
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
73
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
74 KMIndex<QWI []> kmQWs = result.getOutliers();
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
75 KMIndex.Entry<QWI []> qwsEntry = kmQWs.binarySearch(currentKm);
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
76
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
77 QWI [] qws = null;
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
78 if (qwsEntry != null) {
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3043
diff changeset
79 qws = qwsEntry.getValue();
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
80
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
81 if (logger.isDebugEnabled()) {
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
82 logger.debug("Found " + (qws != null ? qws.length : 0)
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
83 + " KMIndex.Entry for km " + currentKm);
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
84 }
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
85 }
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
86 else {
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
87 logger.debug("Found no KMIndex.Entry for km " + currentKm);
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
88 }
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3415
diff changeset
89
3035
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
90 return qws;
b388d888330d Implemented facets and splitted up the event facet.Implemented facets and splitted up the event facet.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3028
diff changeset
91 }
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
92
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
93 logger.warn("Not an instance of D4EArtifact.");
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3466
diff changeset
94 return null;
3028
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 /**
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 * Create a deep copy of this Facet.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100 * @return a deep copy.
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 */
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 @Override
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 public FixOutlierFacet deepCopy() {
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 FixOutlierFacet copy = new FixOutlierFacet();
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 copy.set(this);
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
106 return copy;
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
107 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
108 }
77b5f5a26700 Added facets for fix analysis.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org