// override public DataPoint GetDataAt(double ts) { BasicDataSeries Series = new BasicDataSeries();; if (SourceSeries.Count == 1) { return(ApplyModifiers(SourceSeries[0].GetDataAt(ts))); } foreach (DataSeries serie in SourceSeries) { Series.Data.Add(serie.GetDataAt(ts)); } if (operation == Manipulation.sum) { return(ApplyModifiers(Series.Sum())); } else if (operation == Manipulation.div) { return(ApplyModifiers(Series.Div())); } print("Waring! Dataseries operation not implemented."); return(null); }
// override public List <DataPoint> GetPeriod(double From, double To, int extra) { BasicDataSeriesCollection result = new BasicDataSeriesCollection(); BasicDataSeries Series; if (SourceSeries.Count == 1) { return(ApplyModifiers(SourceSeries[0].GetPeriod(From, To, extra))); } foreach (DataSeries serie in SourceSeries) { Series = new BasicDataSeries(); Series.Data = serie.GetPeriod(From, To, extra); result.Collection.Add(Series); } if (operation == Manipulation.sum) { return(ApplyModifiers(result.GetStaircaseSumOfSeries().Data)); } else if (operation == Manipulation.div) { return(ApplyModifiers(result.GetStaircaseDivOfSeries().Data)); } print("Waring! Dataseries operation not implemented."); return(null); }
public BasicDataSeries GetStaircaseDivOfSeries() { BasicDataSeries points; BasicDataSeries result = new BasicDataSeries(); int i; points = GetNextPoints(); while (points != null) { if (points.Data[0] == null) { points = GetNextPoints(); continue; } DataPoint Sum = points.Data[0].Clone(); for (i = 1; i < points.Data.Count; i++) { Sum = Sum.Div(points.Data[i]); } if (Sum != null && Sum.Values != null) { Sum.Timestamp = At; result.Data.Add(Sum); } points = GetNextPoints(); } return(result); }
//Staircase assumes that a value is valid until we get a new value. //In this case missalighed data not inside the range of the other series will be discared. public BasicDataSeries GetStaircaseSumOfSeries() { BasicDataSeries points; BasicDataSeries result = new BasicDataSeries(); points = GetNextPoints(); while (points != null) { DataPoint Sum = new DataPoint(); foreach (DataPoint point in points.Data) { //if (point == null) { // Sum = null; // break; //} Sum = Sum.Add(point); } if (Sum != null && Sum.Values != null) { Sum.Timestamp = At; result.Data.Add(Sum); } points = GetNextPoints(); } return(result); }
public BasicDataSeries GetNextPoints() { BasicDataSeries HasNextPoint; double TimeStamp; //Get the next point. HasNextPoint = GetNextPoint(); if (HasNextPoint == null) { return(null); } //Save the timestamp. TimeStamp = HasNextPoint.CurrentTime(); //Move that series forward. HasNextPoint.Next(); DataPoint dp; BasicDataSeries result = new BasicDataSeries(); foreach (BasicDataSeries serie in Collection) { dp = serie.GetDataPointAt(TimeStamp); result.Data.Add(dp); } return(result); }
//Returns the dataseries which with the pointer to the earlies timestamp public BasicDataSeries GetNextPoint() { double earliest = Double.PositiveInfinity; BasicDataSeries result = null; foreach (BasicDataSeries serie in Collection) { if (serie.CurrentTime() < earliest && serie.CurrentTime() > At) { earliest = serie.CurrentTime(); result = serie; } } At = earliest; return(result); }