Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQOutlierFacet.java @ 3552:1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
store the curve coefficients for each iteration step
of the outlier elimination.
flys-artifacts/trunk@5146 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 27 Jul 2012 12:36:09 +0000 |
parents | 238803b2cb8b |
children |
comparison
equal
deleted
inserted
replaced
3551:e7f1556192b3 | 3552:1df6984628c3 |
---|---|
1 package de.intevation.flys.artifacts.model.sq; | 1 package de.intevation.flys.artifacts.model.sq; |
2 | |
3 import org.apache.log4j.Logger; | |
4 | 2 |
5 import de.intevation.artifacts.Artifact; | 3 import de.intevation.artifacts.Artifact; |
6 import de.intevation.artifacts.CallContext; | 4 import de.intevation.artifacts.CallContext; |
7 | 5 |
8 import de.intevation.flys.artifacts.FLYSArtifact; | 6 import de.intevation.flys.artifacts.FLYSArtifact; |
7 | |
9 import de.intevation.flys.artifacts.model.CalculationResult; | 8 import de.intevation.flys.artifacts.model.CalculationResult; |
10 import de.intevation.flys.artifacts.model.DataFacet; | 9 import de.intevation.flys.artifacts.model.DataFacet; |
11 import de.intevation.flys.artifacts.model.FacetTypes; | 10 import de.intevation.flys.artifacts.model.FacetTypes; |
12 | 11 |
13 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; | 12 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; |
14 | 13 |
14 import org.apache.log4j.Logger; | |
15 | 15 |
16 /** | 16 /** |
17 * Facet to show the curve in a sq relation. | 17 * Facet to show the curve in a sq relation. |
18 * | 18 * |
19 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 19 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
22 | 22 |
23 private static final Logger log = Logger.getLogger(SQOutlierFacet.class); | 23 private static final Logger log = Logger.getLogger(SQOutlierFacet.class); |
24 | 24 |
25 public static final int BITMASK_ITERATION = (1 << 16) - 1; | 25 public static final int BITMASK_ITERATION = (1 << 16) - 1; |
26 | 26 |
27 | |
28 private int fractionIdx; | 27 private int fractionIdx; |
29 | |
30 | 28 |
31 public SQOutlierFacet() { | 29 public SQOutlierFacet() { |
32 } | 30 } |
33 | |
34 | 31 |
35 public SQOutlierFacet( | 32 public SQOutlierFacet( |
36 int idx, | 33 int idx, |
37 int fractionIdx, | 34 int fractionIdx, |
38 String name, | 35 String name, |
47 | 44 |
48 @Override | 45 @Override |
49 public Object getData(Artifact artifact, CallContext context) { | 46 public Object getData(Artifact artifact, CallContext context) { |
50 log.debug("SQOutlierFacet.getData"); | 47 log.debug("SQOutlierFacet.getData"); |
51 | 48 |
52 if (artifact instanceof FLYSArtifact) { | 49 if (!(artifact instanceof FLYSArtifact)) { |
53 FLYSArtifact flys = (FLYSArtifact) artifact; | 50 return null; |
54 | |
55 CalculationResult res = (CalculationResult) flys.compute( | |
56 context, ComputeType.ADVANCE, false); | |
57 | |
58 int idx = this.index >> 16; | |
59 int iter = this.index & BITMASK_ITERATION; | |
60 | |
61 if (log.isDebugEnabled()) { | |
62 log.debug("Fetch data for index : " + this.index); | |
63 log.debug(" > index: " + idx); | |
64 log.debug(" > fraction: " + fractionIdx); | |
65 log.debug(" > iteration: " + iter); | |
66 } | |
67 | |
68 SQResult[] result = (SQResult[]) res.getData(); | |
69 SQFractionResult fResult = result[idx].getFraction(fractionIdx); | |
70 | |
71 if (fResult == null) { | |
72 log.warn("No SQFractionResult at " + idx + "|" + fractionIdx); | |
73 } | |
74 else if (log.isDebugEnabled()) { | |
75 SQ[] outliers = fResult.getOutliers(iter); | |
76 int num = outliers != null ? outliers.length : 0; | |
77 | |
78 log.debug("Found " + num + " outliers for iteration " + iter); | |
79 } | |
80 | |
81 return fResult.getOutliers(iter); | |
82 } | 51 } |
83 | 52 |
84 return null; | 53 FLYSArtifact flys = (FLYSArtifact) artifact; |
54 | |
55 CalculationResult res = (CalculationResult) flys.compute( | |
56 context, ComputeType.ADVANCE, false); | |
57 | |
58 int idx = this.index >> 16; | |
59 int iter = this.index & BITMASK_ITERATION; | |
60 | |
61 boolean debug = log.isDebugEnabled(); | |
62 | |
63 if (debug) { | |
64 log.debug("Fetch data for index : " + this.index); | |
65 log.debug(" > index: " + idx); | |
66 log.debug(" > fraction: " + fractionIdx); | |
67 log.debug(" > iteration: " + iter); | |
68 } | |
69 | |
70 SQResult[] result = (SQResult[]) res.getData(); | |
71 SQFractionResult fResult = result[idx].getFraction(fractionIdx); | |
72 | |
73 if (fResult == null) { | |
74 log.warn("No SQFractionResult at " + idx + "|" + fractionIdx); | |
75 return null; | |
76 } | |
77 | |
78 SQ [] outliers = fResult.getOutliers(iter); | |
79 | |
80 if (debug) { | |
81 int num = outliers != null ? outliers.length : 0; | |
82 log.debug("Found " + num + " outliers for iteration " + iter); | |
83 } | |
84 | |
85 return outliers; | |
85 } | 86 } |
86 | 87 |
87 | 88 |
88 @Override | 89 @Override |
89 public SQOutlierFacet deepCopy() { | 90 public SQOutlierFacet deepCopy() { |