/** * */ package org.cmg.ml.sam.sim.sampling; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; import org.apache.commons.math3.stat.descriptive.StatisticalSummary; import org.apache.commons.math3.stat.descriptive.SummaryStatistics; /** * @author loreti * */ public class SimulationTimeSeries { private StatisticalSummary[] data; private double dt; private String name; private int replications; public SimulationTimeSeries( String name , double dt , int replications , StatisticalSummary[] data ) { this.name = name; this.dt = dt; this.data = data; this.replications = replications; } public String getName() { return name; } public double getMean( int i ) { return data[i].getMean(); } public double getStandardDeviation( int i ) { return data[i].getStandardDeviation(); } public double getTime( int i ) { return i*dt; } public double getMean( double t ) { int i = (int) (t/dt); if (i>=data.length) { i = data.length-1; } return getMean( i ); } public StatisticalSummary[] getData() { return data; } public void printTimeSeries( PrintStream out ) { out.println(name); for( int i=0 ; i<data.length ; i++ ) { out.println(getTime(i)+"\t"+getMean(i)); } } public void saveTo( String path ) throws FileNotFoundException { File output = new File( path+"/"+name+".dat"); PrintStream ps = new PrintStream(output); printTimeSeries(ps); ps.close(); } public int getSize() { return data.length; } public double getConfidenceInterval( int i ) { if (replications<=0) { return 0.0; } else { return this.getStandardDeviation(i)/Math.sqrt( replications ); } } public void writeToCSV( StringWriter writer ) { for( int i=0 ; i<data.length ; i++ ) { writer.write(getTime(i)+";"+getMean(i)+";"+getStandardDeviation(i)+";"+getConfidenceInterval(i)+"\n"); writer.flush(); } } public void writeToCSV( PrintWriter writer ) { for( int i=0 ; i<data.length ; i++ ) { writer.println(getTime(i)+";"+getMean(i)+";"+getStandardDeviation(i)+";"+getConfidenceInterval(i)); writer.flush(); } } }