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 }

http://dive4elements.wald.intevation.org