public override void Recompute() { IsValid = false; longitudinal = null; if (SkipDates == null) { SkipDates = new List <DateTime>(); } var ts = GetInput(0) as Data.TimeSeries; if (ts == null) { return; } if (ts.Count < 2) { return; } if (SamplingBaseOffsets.Count < 1) { return; } longitudinal = new Longitudinal(DoUnivariateSampling(ts)); IsValid = true; }
protected override void OnDataConnection() { values = TheData as Data.TimeSeries; longitudinalValues = TheData as Longitudinal; if (values == null && longitudinalValues == null) { throw new ApplicationException("Invalid data connection."); } }
public override void Recompute() { var mts = GetInput(0) as MVTimeSeries; var uts = GetInput(0) as TimeSeries; var lts = GetInput(0) as Longitudinal; if (Spacing == 0) { Spacing = 1; // just fix it here: this is for backwards-compatibility } mvDifferences = null; differences = null; longDifferences = null; IsValid = false; if (mts != null) { mvDifferences = new MVTimeSeries(mts.Dimension) { Title = "Diffs" }; for (int i = 0; i < mts.Dimension; ++i) { mvDifferences.SubTitle[i] = mts.SubTitle[i]; } var zerov = new double[mts.Dimension]; if (!LeftTimeStamps && PadWithZeroes) { for (int t = 0; t < Lag; ++t) { if (t % Spacing == Phase) { mvDifferences.Add(mts.TimeStamp(t), zerov, false); } } } for (int t = Phase; t < mts.Count; t += Spacing) { if (t >= Lag) { var diff = new double[mts.Dimension]; for (int j = 0; j < mts.Dimension; ++j) { diff[j] = mts[t][j] - mts[t - Lag][j]; } var stamp = LeftTimeStamps ? mts.TimeStamp(t - Lag) : mts.TimeStamp(t); mvDifferences.Add(stamp, diff, false); } } if (LeftTimeStamps && PadWithZeroes) { for (int t = mts.Count - Lag; t < mts.Count; ++t) { if (t % Spacing == Phase) { mvDifferences.Add(mts.TimeStamp(t), zerov, false); } } } } if (uts != null) { differences = new TimeSeries { Title = "Diff(" + uts.Title + ")" }; if (!LeftTimeStamps && PadWithZeroes) { for (int t = 0; t < Lag; ++t) { if (t % Spacing == Phase) { differences.Add(uts.TimeStamp(t), 0, false); } } } for (int t = Phase; t < uts.Count; t += Spacing) { if (t >= Lag) { var diff = uts[t] - uts[t - Lag]; var stamp = LeftTimeStamps ? uts.TimeStamp(t - Lag) : uts.TimeStamp(t); differences.Add(stamp, diff, false); } } if (LeftTimeStamps && PadWithZeroes) { for (int t = uts.Count - Lag; t < uts.Count; ++t) { if (t % Spacing == Phase) { differences.Add(uts.TimeStamp(t), 0, false); } } } } if (lts != null) { var segments = new List <TimeSeries>(lts.Count); for (int i = 0; i < lts.Count; ++i) { uts = lts[i]; var du = new TimeSeries(); for (int t = Lag; t < uts.Count; ++t) { double diff = uts[t] - uts[t - Lag]; var stamp = LeftTimeStamps ? uts.TimeStamp(t - Lag) : uts.TimeStamp(t); du.Add(stamp, diff, false); } segments.Add(du); } longDifferences = new Longitudinal(segments); } IsValid = true; }