Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java @ 93:c476fbbaa4ca
Imported Statistics-Classes from old Project. Revision: 3101 Does not compile
gnv-artifacts/trunk@138 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Mon, 28 Sep 2009 07:27:06 +0000 |
parents | |
children | 6a825a184883 |
comparison
equal
deleted
inserted
replaced
92:090612335a48 | 93:c476fbbaa4ca |
---|---|
1 /** | |
2 * Title: TimeseriesStatistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v 1.3 2008/08/18 14:50:33 drewnak Exp $ | |
3 * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v $ | |
4 * created by: Stefan Blume (blume) | |
5 * erstellt am: 06.12.2007 | |
6 * Copyright: con terra GmbH, 2005 | |
7 * | |
8 * modified by: $Author: drewnak $ | |
9 * modified on: $Date: 2008/08/18 14:50:33 $ | |
10 * Version: $Revision: 1.3 $ | |
11 * TAG: $Name: $ | |
12 * locked from: $Locker: $ | |
13 * CVS State: $State: Exp $ | |
14 * Project: $ProjectName$ | |
15 */ | |
16 package de.intevation.gnv.statistics; | |
17 | |
18 import java.io.FileReader; | |
19 import java.util.ArrayList; | |
20 import java.util.Calendar; | |
21 import java.util.Collections; | |
22 import java.util.List; | |
23 | |
24 import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; | |
25 import org.apache.commons.math.stat.regression.SimpleRegression; | |
26 import org.apache.log4j.Logger; | |
27 | |
28 import au.com.bytecode.opencsv.CSVReader; | |
29 | |
30 import de.conterra.bsh.gdi.gnviewer.datasources.ResultSet; | |
31 import de.conterra.bsh.gdi.gnviewer.datasources.Row; | |
32 import de.conterra.bsh.gdi.gnviewer.exception.TechnicalException; | |
33 import de.conterra.bsh.gdi.gnviewer.util.TempFile; | |
34 | |
35 /** | |
36 * The class <code>TimeseriesStatistics</code> fulfills the following purposes: | |
37 * <ol> | |
38 * <li></li> | |
39 * </ol> | |
40 * | |
41 * @author blume | |
42 * @version 1.0 | |
43 * @serial 1.0 | |
44 * @see | |
45 * @since 06.12.2007 18:02:27 | |
46 */ | |
47 public class TimeseriesStatistics implements Statistics { | |
48 | |
49 /** | |
50 * Default Logging instance | |
51 */ | |
52 private static Logger sLogger = Logger.getLogger(TimeseriesStatistics.class); | |
53 private static boolean sDebug = sLogger.isDebugEnabled(); | |
54 | |
55 private Statistic[] mStatistics = null; | |
56 | |
57 /* | |
58 public TimeseriesStatistics(ResultSet pResults) throws TechnicalException { | |
59 DescriptiveStatistics lStatistics = null; | |
60 SimpleRegression lRegression = null; | |
61 ArrayList<Statistic> lStats = new ArrayList<Statistic>(); | |
62 int break1, break2; | |
63 int mStart = 0; | |
64 int mEnd = 0; | |
65 int lSeries = 1; | |
66 Row[] mRow = pResults.getResults(); | |
67 | |
68 break1 = mRow[mStart].getIntValue(2); | |
69 break2 = mRow[mStart].getIntValue(3); | |
70 | |
71 for (int i = 1; i < mRow.length; i++) { | |
72 if (break1 != mRow[i].getIntValue(2) | |
73 || break2 != mRow[i].getIntValue(3)) { | |
74 lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); | |
75 lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); | |
76 addStatisticsValues(lStatistics, lRegression, lStats, lSeries); | |
77 mStart = i; | |
78 break1 = mRow[i].getIntValue(2); | |
79 break2 = mRow[i].getIntValue(3); | |
80 lSeries ++; | |
81 } | |
82 mEnd = i; | |
83 } | |
84 lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); | |
85 lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); | |
86 addStatisticsValues(lStatistics, lRegression, lStats, lSeries); | |
87 | |
88 mStatistics = new Statistic[lStats.size()]; | |
89 mStatistics = lStats.toArray(mStatistics); | |
90 | |
91 } | |
92 */ | |
93 public TimeseriesStatistics(TempFile lImageFile) throws TechnicalException { | |
94 DescriptiveStatistics lStatistics = null; | |
95 SimpleRegression lRegression = null; | |
96 ArrayList<Statistic> lStats = new ArrayList<Statistic>(); | |
97 int break1, break2; | |
98 int mStart = 0; | |
99 int mEnd = 0; | |
100 int lSeries = 1; | |
101 CSVReader reader=null; | |
102 if (sDebug) sLogger.debug("TimeseriesStatistics() lImageFile != null"); | |
103 try{ | |
104 reader = new CSVReader (new FileReader(lImageFile.getFile()), ';'); | |
105 String [] sArrayStrLine = reader.readNext(); | |
106 Row row = new Row(sArrayStrLine); | |
107 | |
108 break1 = new Integer (sArrayStrLine[2]).intValue(); | |
109 break2 = new Integer (sArrayStrLine[3]).intValue(); | |
110 //int i = 1; | |
111 lRegression = new SimpleRegression(); | |
112 lStatistics = DescriptiveStatistics.newInstance(); | |
113 while ((sArrayStrLine = reader.readNext()) != null) { | |
114 | |
115 if (break1 != new Integer (sArrayStrLine[2]).intValue() | |
116 || break2 != new Integer (sArrayStrLine[3]).intValue()) { | |
117 //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); | |
118 //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); | |
119 | |
120 addStatisticsValues(lStatistics, lRegression, lStats, lSeries); | |
121 | |
122 lStatistics.clear(); | |
123 lRegression.clear(); | |
124 | |
125 Row lRow = new Row (sArrayStrLine); | |
126 lStatistics.addValue(lRow.getDoubleValue(1)); | |
127 Double x = new Double( (lRow.getDateValue(0)).getTime()/1000/3600) ; | |
128 lRegression.addData(x,lRow.getDoubleValue(1)); | |
129 | |
130 break1 = new Integer (sArrayStrLine[2]).intValue(); | |
131 break2 = new Integer (sArrayStrLine[3]).intValue(); | |
132 lSeries ++; | |
133 } | |
134 else{ | |
135 Row lRow = new Row (sArrayStrLine); | |
136 lStatistics.addValue(lRow.getDoubleValue(1)); | |
137 Double x = new Double( (lRow.getDateValue(0)).getTime()/1000/3600) ; | |
138 lRegression.addData(x,lRow.getDoubleValue(1)); | |
139 } | |
140 | |
141 } | |
142 //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); | |
143 //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); | |
144 addStatisticsValues(lStatistics, lRegression, lStats, lSeries); | |
145 lStatistics.clear(); | |
146 lRegression.clear(); | |
147 mStatistics = new Statistic[lStats.size()]; | |
148 mStatistics = lStats.toArray(mStatistics); | |
149 } | |
150 catch (Exception e){ | |
151 sLogger.error(e.getMessage(), e); | |
152 } | |
153 finally { | |
154 try{ | |
155 reader.close(); | |
156 } | |
157 catch (Exception e){ | |
158 sLogger.error(e.getMessage(), e); | |
159 } | |
160 } | |
161 | |
162 } | |
163 /** | |
164 * @param lStatistics | |
165 * @param lRegression | |
166 * @param lStats | |
167 * @param lSeries | |
168 */ | |
169 private void addStatisticsValues(DescriptiveStatistics lStatistics, | |
170 SimpleRegression lRegression, ArrayList<Statistic> lStats, | |
171 int lSeries) { | |
172 lStats.add(new Statistic("gnviewer.statistics.series",(double)lSeries)); | |
173 lStats.add(new Statistic("gnviewer.statistics.descriptive.arithmeticMean", lStatistics.getMean())); | |
174 lStats.add(new Statistic("gnviewer.statistics.descriptive.kurtosis", lStatistics.getKurtosis())); | |
175 /* lStats.add(new Statistic("gnviewer.statistics.descriptive.kurtosisClass", lStatistics.getKurtosisClass()));*/ | |
176 lStats.add(new Statistic("gnviewer.statistics.descriptive.max", lStatistics.getMax())); | |
177 lStats.add(new Statistic("gnviewer.statistics.descriptive.min", lStatistics.getMin())); | |
178 lStats.add(new Statistic("gnviewer.statistics.descriptive.n", lStatistics.getN())); | |
179 lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.90", lStatistics.getPercentile(90))); | |
180 lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.75", lStatistics.getPercentile(75))); | |
181 lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.50", lStatistics.getPercentile(50))); | |
182 lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.10", lStatistics.getPercentile(10))); | |
183 lStats.add(new Statistic("gnviewer.statistics.descriptive.deviation", lStatistics.getStandardDeviation())); | |
184 lStats.add(new Statistic("gnviewer.statistics.descriptive.variance", lStatistics.getVariance())); | |
185 lStats.add(new Statistic("gnviewer.statistics.descriptive.intercept", lRegression.getIntercept())); | |
186 lStats.add(new Statistic("gnviewer.statistics.descriptive.slope", lRegression.getSlope())); | |
187 } | |
188 | |
189 | |
190 /** | |
191 * @param pResults | |
192 * @param pStart | |
193 * @param pEnd | |
194 */ | |
195 /* | |
196 private SimpleRegression createSimpleRegressionObject ( ResultSet pResults, int pStart, int pEnd)throws TechnicalException{ | |
197 SimpleRegression lRegression = new SimpleRegression(); | |
198 Row[] lRows = pResults.getResults(); | |
199 for (int i = pStart; i < pEnd; i++) { | |
200 Row lRow = lRows[i]; | |
201 Double x = new Double( ((Calendar)lRow.getValue(0)).getTimeInMillis()/1000/3600) ; | |
202 lRegression.addData(x,lRow.getDoubleValue(1)); | |
203 | |
204 } | |
205 return lRegression; | |
206 } | |
207 */ | |
208 /** | |
209 * @param pResults | |
210 * @param pStart | |
211 * @param pEnd | |
212 */ | |
213 /* | |
214 private DescriptiveStatistics createDescriptiveStatisticsObject(ResultSet pResults, int pStart, int pEnd) throws TechnicalException { | |
215 DescriptiveStatistics lStatistics = DescriptiveStatistics.newInstance(); | |
216 Row[] lRows = pResults.getResults(); | |
217 for (int i = pStart; i < pEnd; i++) { | |
218 Row lRow = lRows[i]; | |
219 lStatistics.addValue(lRow.getDoubleValue(1)); | |
220 } | |
221 return lStatistics; | |
222 } | |
223 | |
224 */ | |
225 public Statistic[] getStatistics() { | |
226 return mStatistics; | |
227 } | |
228 } |