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() {

http://dive4elements.wald.intevation.org