Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        protected override void OnDataConnection()
        {
            values             = TheData as Data.TimeSeries;
            longitudinalValues = TheData as Longitudinal;

            if (values == null && longitudinalValues == null)
            {
                throw new ApplicationException("Invalid data connection.");
            }
        }
Esempio n. 3
0
        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;
        }