add percentile information if available
This commit is contained in:
@@ -2,74 +2,82 @@ package org.lucares.pdbui.domain;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.lucares.pdb.plot.api.Percentiles;
|
||||
|
||||
public class DataSeriesStats {
|
||||
private final int values;
|
||||
private final long maxValue;
|
||||
private final double average;
|
||||
private final String name;
|
||||
private final StyleAndColor dashTypeAndColor;
|
||||
private final int values;
|
||||
private final long maxValue;
|
||||
private final double average;
|
||||
private final String name;
|
||||
private final StyleAndColor dashTypeAndColor;
|
||||
private Percentiles percentiles;
|
||||
|
||||
public DataSeriesStats(final int values, final long maxValue, final double average) {
|
||||
this.name = "<noName>";
|
||||
this.dashTypeAndColor = new StyleAndColor("000", 0);
|
||||
this.values = values;
|
||||
this.maxValue = maxValue;
|
||||
this.average = average;
|
||||
public DataSeriesStats(final int values, final long maxValue, final double average) {
|
||||
this.name = "<noName>";
|
||||
this.dashTypeAndColor = new StyleAndColor("000", 0);
|
||||
this.values = values;
|
||||
this.maxValue = maxValue;
|
||||
this.average = average;
|
||||
}
|
||||
|
||||
public DataSeriesStats(final String name, final StyleAndColor dashTypeAndColor, final int values, final long maxValue,
|
||||
final double average, final Percentiles percentiles) {
|
||||
this.name = name;
|
||||
this.dashTypeAndColor = dashTypeAndColor;
|
||||
this.values = values;
|
||||
this.maxValue = maxValue;
|
||||
this.average = average;
|
||||
this.percentiles = percentiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of values in the date range, without applying the y-range.
|
||||
*
|
||||
* @return total number of values
|
||||
*/
|
||||
public int getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public StyleAndColor getDashTypeAndColor() {
|
||||
return dashTypeAndColor;
|
||||
}
|
||||
|
||||
public long getMaxValue() {
|
||||
return maxValue;
|
||||
}
|
||||
|
||||
public double getAverage() {
|
||||
return average;
|
||||
}
|
||||
|
||||
public Percentiles getPercentiles() {
|
||||
return percentiles;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[name=" + name + ", dashTypeAndColor=" + dashTypeAndColor + ", values=" + values + ", maxValue=" + maxValue
|
||||
+ ", average=" + average + "]";
|
||||
}
|
||||
|
||||
public static double average(final Collection<DataSeriesStats> stats) {
|
||||
long n = 0;
|
||||
double average = 0;
|
||||
|
||||
for (final DataSeriesStats stat : stats) {
|
||||
final int newValues = stat.getValues();
|
||||
final double newAverage = stat.getAverage();
|
||||
if (newValues > 0) {
|
||||
average = (average * n + newAverage * newValues) / (n + newValues);
|
||||
n += newValues;
|
||||
}
|
||||
}
|
||||
|
||||
public DataSeriesStats(final String name, final StyleAndColor dashTypeAndColor, final int values,
|
||||
final long maxValue, final double average) {
|
||||
this.name = name;
|
||||
this.dashTypeAndColor = dashTypeAndColor;
|
||||
this.values = values;
|
||||
this.maxValue = maxValue;
|
||||
this.average = average;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of values in the date range, without applying the y-range.
|
||||
*
|
||||
* @return total number of values
|
||||
*/
|
||||
public int getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public StyleAndColor getDashTypeAndColor() {
|
||||
return dashTypeAndColor;
|
||||
}
|
||||
|
||||
public long getMaxValue() {
|
||||
return maxValue;
|
||||
}
|
||||
|
||||
public double getAverage() {
|
||||
return average;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[name=" + name + ", dashTypeAndColor=" + dashTypeAndColor + ", values=" + values + ", maxValue="
|
||||
+ maxValue + ", average=" + average + "]";
|
||||
}
|
||||
|
||||
public static double average(final Collection<DataSeriesStats> stats) {
|
||||
long n = 0;
|
||||
double average = 0;
|
||||
|
||||
for (final DataSeriesStats stat : stats) {
|
||||
final int newValues = stat.getValues();
|
||||
final double newAverage = stat.getAverage();
|
||||
if (newValues > 0) {
|
||||
average = (average * n + newAverage * newValues) / (n + newValues);
|
||||
n += newValues;
|
||||
}
|
||||
}
|
||||
|
||||
return average;
|
||||
}
|
||||
return average;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,84 +6,84 @@ import java.util.List;
|
||||
import org.lucares.recommind.logs.DataSeries;
|
||||
|
||||
public class PlotResponseStats {
|
||||
private long maxValue;
|
||||
private long maxValue;
|
||||
|
||||
private int values;
|
||||
private int values;
|
||||
|
||||
private double average;
|
||||
private double average;
|
||||
|
||||
private List<DataSeriesStats> dataSeriesStats;
|
||||
private List<DataSeriesStats> dataSeriesStats;
|
||||
|
||||
public PlotResponseStats() {
|
||||
super();
|
||||
public PlotResponseStats() {
|
||||
super();
|
||||
}
|
||||
|
||||
public PlotResponseStats(final long maxValue, final int values, final double average,
|
||||
final List<DataSeriesStats> dataSeriesStats) {
|
||||
|
||||
this.maxValue = maxValue;
|
||||
this.values = values;
|
||||
this.average = average;
|
||||
this.dataSeriesStats = dataSeriesStats;
|
||||
}
|
||||
|
||||
public long getMaxValue() {
|
||||
return maxValue;
|
||||
}
|
||||
|
||||
public void setMaxValue(final long maxValue) {
|
||||
this.maxValue = maxValue;
|
||||
}
|
||||
|
||||
public int getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public void setValues(final int values) {
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
public double getAverage() {
|
||||
return average;
|
||||
}
|
||||
|
||||
public void setAverage(final double average) {
|
||||
this.average = average;
|
||||
}
|
||||
|
||||
public List<DataSeriesStats> getDataSeriesStats() {
|
||||
return dataSeriesStats;
|
||||
}
|
||||
|
||||
public void setDataSeriesStats(final List<DataSeriesStats> dataSeriesStats) {
|
||||
this.dataSeriesStats = dataSeriesStats;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PlotResponseStats [maxValue=" + maxValue + ", values=" + values + ", average=" + average
|
||||
+ ", dataSeriesStats=" + dataSeriesStats + "]";
|
||||
}
|
||||
|
||||
public static PlotResponseStats fromDataSeries(final List<DataSeries> dataSeries) {
|
||||
|
||||
int values = 0;
|
||||
long maxValue = 0;
|
||||
final List<DataSeriesStats> dataSeriesStats = new ArrayList<>();
|
||||
|
||||
for (final DataSeries dataSerie : dataSeries) {
|
||||
values += dataSerie.getValues();
|
||||
maxValue = Math.max(maxValue, dataSerie.getMaxValue());
|
||||
|
||||
final StyleAndColor lineStyle = new StyleAndColor(dataSerie.getStyle().getColor().getColor(),
|
||||
dataSerie.getStyle().getPointType());
|
||||
|
||||
dataSeriesStats.add(new DataSeriesStats(dataSerie.getTitle(), lineStyle, dataSerie.getValues(),
|
||||
dataSerie.getMaxValue(), dataSerie.getAverage(), dataSerie.getPercentiles()));
|
||||
}
|
||||
|
||||
public PlotResponseStats(final long maxValue, final int values, final double average,
|
||||
final List<DataSeriesStats> dataSeriesStats) {
|
||||
final double average = Math.round(DataSeriesStats.average(dataSeriesStats));
|
||||
|
||||
this.maxValue = maxValue;
|
||||
this.values = values;
|
||||
this.average = average;
|
||||
this.dataSeriesStats = dataSeriesStats;
|
||||
}
|
||||
|
||||
public long getMaxValue() {
|
||||
return maxValue;
|
||||
}
|
||||
|
||||
public void setMaxValue(final long maxValue) {
|
||||
this.maxValue = maxValue;
|
||||
}
|
||||
|
||||
public int getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public void setValues(final int values) {
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
public double getAverage() {
|
||||
return average;
|
||||
}
|
||||
|
||||
public void setAverage(final double average) {
|
||||
this.average = average;
|
||||
}
|
||||
|
||||
public List<DataSeriesStats> getDataSeriesStats() {
|
||||
return dataSeriesStats;
|
||||
}
|
||||
|
||||
public void setDataSeriesStats(final List<DataSeriesStats> dataSeriesStats) {
|
||||
this.dataSeriesStats = dataSeriesStats;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PlotResponseStats [maxValue=" + maxValue + ", values=" + values + ", average=" + average
|
||||
+ ", dataSeriesStats=" + dataSeriesStats + "]";
|
||||
}
|
||||
|
||||
public static PlotResponseStats fromDataSeries(final List<DataSeries> dataSeries) {
|
||||
|
||||
int values = 0;
|
||||
long maxValue = 0;
|
||||
final List<DataSeriesStats> dataSeriesStats = new ArrayList<>();
|
||||
|
||||
for (final DataSeries dataSerie : dataSeries) {
|
||||
values += dataSerie.getValues();
|
||||
maxValue = Math.max(maxValue, dataSerie.getMaxValue());
|
||||
|
||||
final StyleAndColor lineStyle = new StyleAndColor(dataSerie.getStyle().getColor().getColor(),
|
||||
dataSerie.getStyle().getPointType());
|
||||
|
||||
dataSeriesStats.add(new DataSeriesStats(dataSerie.getTitle(), lineStyle, dataSerie.getValues(),
|
||||
dataSerie.getMaxValue(), dataSerie.getAverage()));
|
||||
}
|
||||
|
||||
final double average = Math.round(DataSeriesStats.average(dataSeriesStats));
|
||||
|
||||
return new PlotResponseStats(maxValue, values, average, dataSeriesStats);
|
||||
}
|
||||
return new PlotResponseStats(maxValue, values, average, dataSeriesStats);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user