コード例 #1
0
    public void GapFillTest()
    {
      TimeStampSeries target = new TimeStampSeries(); // TODO: Initialize to an appropriate value


      for (int i =1;i<5;i++)
      {
        target.Items.Add(new TimeStampValue(new DateTime(2000, i, 1), i));
      }

      target.Items.Add(new TimeStampValue(new DateTime(2000, 9, 1), 9));

      Assert.AreEqual(5, target.Items.Count);

      target.GapFill(InterpolationMethods.DeleteValue);
      Assert.AreEqual(9, target.Items.Count);

      target.Items.Add(new TimeStampValue(new DateTime(2002, 9, 1), 9));
      target.GapFill(InterpolationMethods.DeleteValue);

      for (int i = 1; i < target.Items.Count; i++)
      {
        Assert.IsTrue(TSTools.GetTimeStep(target.Items[i - 1].Time, target.Items[i].Time) == TimeStepUnit.Month);

      }
      
      Assert.AreEqual(33, target.Items.Count);

    
    }
コード例 #2
0
        public void GapFillTest()
        {
            TimeStampSeries target = new TimeStampSeries(); // TODO: Initialize to an appropriate value


            for (int i = 1; i < 5; i++)
            {
                target.Items.Add(new TimeStampValue(new DateTime(2000, i, 1), i));
            }

            target.Items.Add(new TimeStampValue(new DateTime(2000, 9, 1), 9));

            Assert.AreEqual(5, target.Items.Count);

            target.GapFill(InterpolationMethods.DeleteValue);
            Assert.AreEqual(9, target.Items.Count);

            target.Items.Add(new TimeStampValue(new DateTime(2002, 9, 1), 9));
            target.GapFill(InterpolationMethods.DeleteValue);

            for (int i = 1; i < target.Items.Count; i++)
            {
                Assert.IsTrue(TSTools.GetTimeStep(target.Items[i - 1].Time, target.Items[i].Time) == TimeStepUnit.Month);
            }

            Assert.AreEqual(33, target.Items.Count);
        }
コード例 #3
0
        public void GetSubSeriesTest()
        {
            TimeStampSeries ts = new TimeStampSeries();

            for (int i = 1; i < 16; i++)
            {
                ts.Items.Add(new TimeStampValue(new DateTime(2015, 1, i), i));
            }


            Assert.AreEqual(15, ts.GetSubSeries(new DateTimeSize(new DateTime(2015, 1, 1), DateTime.MaxValue)).Count());
        }
コード例 #4
0
    public void GetSubSeriesTest()
    {
      TimeStampSeries ts = new TimeStampSeries();

      for (int i = 1; i < 16; i++)
        ts.Items.Add(new TimeStampValue(new DateTime(2015, 1, i), i));


      Assert.AreEqual(15, ts.GetSubSeries(new DateTimeSize(new DateTime(2015, 1, 1), DateTime.MaxValue)).Count());


    }
コード例 #5
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
    /// <summary>
    /// Creates a timespanseries from an accumulated series
    /// </summary>
    /// <param name="data"></param>
    /// <param name="LastUpdate"></param>
    /// <returns></returns>
    public static TimeSpanSeries GetTimeSpanDataFromAccumulated(TimeStampSeries data)
    {
      if (data.Count < 2)
        return null;
      List<TimeSpanValue> timespans = new List<TimeSpanValue>();

      for (int i = 1; i < data.Count; i++)
      {
        double Currentvalue = Math.Round(data.Items[i].Value - data.Items[i - 1].Value, 3);
        timespans.Add(new TimeSpanValue(data.Items[i - 1].Time, data.Items[i].Time, Currentvalue));
      }
      return new TimeSpanSeries(timespans);
    }
コード例 #6
0
    public static TimeStampSeries GetTimeSpanSeries(this DFS.DFS0 data, int item)
    {
      List<TimeStampValue> values = new List<TimeStampValue>();

      for (int i = 0; i < data.NumberOfTimeSteps; i++)
      {
        values.Add(new TimeStampValue(data.TimeSteps[i], data.GetData(i, item)));
      }
      TimeStampSeries ToReturn = new TimeStampSeries(values);
      ToReturn.DeleteValue = data.DeleteValue;
      ToReturn.Name = data.Items[item-1].Name;
      ToReturn.ID = item;
      return ToReturn;
    }
コード例 #7
0
ファイル: Extensions.cs プロジェクト: msruzy/hydronumerics
        public static TimeStampSeries GetTimeSpanSeries(this DFS.DFS0 data, int item)
        {
            List <TimeStampValue> values = new List <TimeStampValue>();

            for (int i = 0; i < data.NumberOfTimeSteps; i++)
            {
                values.Add(new TimeStampValue(data.TimeSteps[i], data.GetData(i, item)));
            }
            TimeStampSeries ToReturn = new TimeStampSeries(values);

            ToReturn.DeleteValue = data.DeleteValue;
            ToReturn.Name        = data.Items[item - 1].Name;
            ToReturn.ID          = item;
            return(ToReturn);
        }
コード例 #8
0
        public void AlignTest()
        {
            TimeStampSeries ts1 = new TimeStampSeries();
            TimeStampSeries ts2 = new TimeStampSeries();

            for (int i = 0; i < 100; i++)
            {
                ts1.Items.Add(new TimeStampValue(new DateTime(2010, 1, 1).AddDays(i), i));
                ts2.Items.Add(new TimeStampValue(new DateTime(2010, 2, 1).AddDays(i), i));
            }

            TimeStampValue[] t1;
            TimeStampValue[] t2;

            TSTools.AlignSeries(ts1, ts2, out t1, out t2);

            Assert.AreEqual(t1.Count(), t2.Count());
        }
コード例 #9
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
    /// <summary>
    /// Creates a timespanseries from an accumulated series
    /// </summary>
    /// <param name="data"></param>
    /// <param name="LastUpdate"></param>
    /// <returns></returns>
    public static TimeSpanSeries GetTimeSpanDataFromAccumulated(TimeStampSeries data, TimeSpan MaxInterval)
    {
      if (data.Count < 2)
        return null;
      List<TimeSpanValue> timespans = new List<TimeSpanValue>();

      for (int i = 1; i < data.Count; i++)
      {
        double Currentvalue = data.Items[i].Value - data.Items[i - 1].Value;
        DateTime start;
        if (data.Items[i - 1].Time < data.Items[i].Time.Subtract(MaxInterval))
          start = data.Items[i].Time.Subtract(MaxInterval);
        else
          start = data.Items[i - 1].Time;
        timespans.Add(new TimeSpanValue(start, data.Items[i].Time, Currentvalue));
      }
      return new TimeSpanSeries(timespans);
    }
コード例 #10
0
        public void SerializeTest()
        {
            TimeStampSeries target = new TimeStampSeries(); // TODO: Initialize to an appropriate value

            target.TimeStepSize = TimeStepUnit.Month;


            for (int i = 1; i < 5; i++)
            {
                target.Items.Add(new TimeStampValue(new DateTime(2000, i, 1), i));
            }

            var xml = target.Serialize();

            var newts = TimeStampSeries.DeSerialize(xml);


            Assert.AreEqual(target.Count, newts.Count);
        }
コード例 #11
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
    /// <summary>
    /// Checks if there are any holes in the data series. Returns the active periods.
    /// </summary>
    /// <param name="data"></param>
    /// <param name="Interval"></param>
    /// <returns></returns>
    public static TimeSpanSeries GetActivePeriods(TimeStampSeries data, TimeSpan Interval)
    {
      TimeSpanSeries toreturn = new TimeSpanSeries();

      if (data.Count > 0)
      {
        TimeSpanValue currentvalue = new TimeSpanValue(data.StartTime, data.StartTime, 1);
        for (int i = 0; i < data.Count; i++)
        {
          if (data.Items[i].Time <= currentvalue.EndTime.Add(Interval))
            currentvalue.EndTime = data.Items[i].Time;
          else
          {
            toreturn.Items.Add(currentvalue);
            currentvalue = new TimeSpanValue(data.Items[i].Time, data.Items[i].Time, 1);
          }
        }
        toreturn.Items.Add(currentvalue);
      }
      return toreturn;
    }
コード例 #12
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
    /// <summary>
    /// First aligns the series and then combines
    /// </summary>
    /// <param name="t1"></param>
    /// <param name="t2"></param>
    /// <param name="Combiner"></param>
    /// <returns></returns>
    public static TimeStampSeries CombineSeries(TimeStampSeries t1, TimeStampSeries t2, TimeStampSeries t3, Func<double?, double?, double?, double> Combiner)
    {

      TimeStampValue[] ta1;
      TimeStampValue[] ta2;
      TimeStampValue[] ta3;
      AlignSeries(t1, t2, out ta1, out ta2);
      TimeStampSeries ts1temp = new TimeStampSeries(ta1);
      TimeStampSeries ts2temp = new TimeStampSeries(ta2);
      AlignSeries(ts1temp, t3, out ta1, out ta3);
      AlignSeries(ts2temp, t3, out ta2, out ta3);

      List<TimeStampValue> newvalues = new List<TimeStampValue>();

      for (int i = 0; i < ta1.Count(); i++)
      {
        newvalues.Add(new TimeStampValue(ta1[i].Time, Combiner(ta1[i].Value, ta2[i].Value, ta3[i].Value)));

      }
      return new TimeStampSeries(newvalues);
    }
コード例 #13
0
    public void SerializeTest()
    {
      TimeStampSeries target = new TimeStampSeries(); // TODO: Initialize to an appropriate value
      target.TimeStepSize = TimeStepUnit.Month;


      for (int i = 1; i < 5; i++)
      {
        target.Items.Add(new TimeStampValue(new DateTime(2000, i, 1), i));
      }

      var xml = target.Serialize();

      var newts = TimeStampSeries.DeSerialize(xml);


      Assert.AreEqual(target.Count, newts.Count);
    }
コード例 #14
0
    public void AlignTest()
    {
      TimeStampSeries ts1 = new TimeStampSeries();
      TimeStampSeries ts2 = new TimeStampSeries();

      for(int i =0;i< 100;i++)
      {
        ts1.Items.Add(new TimeStampValue(new DateTime(2010, 1, 1).AddDays(i), i));
        ts2.Items.Add(new TimeStampValue(new DateTime(2010, 2, 1).AddDays(i), i));
      }

      TimeStampValue[] t1;
      TimeStampValue[] t2;

      TSTools.AlignSeries(ts1, ts2, out t1, out t2);

      Assert.AreEqual(t1.Count(), t2.Count());

    }
コード例 #15
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
 public static void LimitTimeSeries(TimeStampSeries Data, DateTime Start, DateTime End)
 {
   for (int i = Data.Items.Count-1; i >= 0; i--)
   {
     if (Data.Items[i].Time < Start || Data.Items[i].Time > End)
     {
       Data.Items.RemoveAt(i);
     }
   }
 }
コード例 #16
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
    /// <summary>
    /// Aligns two series be returning only the common time values
    /// </summary>
    /// <param name="t1"></param>
    /// <param name="t2"></param>
    /// <param name="tout1"></param>
    /// <param name="tout2"></param>
    public static void AlignSeries(TimeStampSeries t1, TimeStampSeries t2, out TimeStampValue[] tout1, out TimeStampValue[] tout2)
    {
      int t1count = 0;
      int t2count = 0;

      List<TimeStampValue> newT1values = new List<TimeStampValue>();
      List<TimeStampValue> newT2values = new List<TimeStampValue>();

      if (t1.Count != 0 & t2.Count != 0)
      {
        while (t1count < t1.Count && t1.Items[t1count].Time < t2.StartTime)
          t1count++;

        while (t2count < t2.Count && t2.Items[t2count].Time < t1.StartTime)
          t2count++;

        for (int i = t1count; i < t1.Count; i++)
        {
          while (t2count < t2.Count - 1 & t2.Items[t2count].Time < t1.Items[i].Time)
            t2count++;

          if (t1.Items[i].Time == t2.Items[t2count].Time)
          {

            newT1values.Add(t1.Items[i]);
            newT2values.Add(t2.Items[t2count]);
          }
        }
      }
      tout1 = newT1values.ToArray();
      tout2 = newT2values.ToArray();
    }
コード例 #17
0
ファイル: Tools.cs プロジェクト: XiBeichuan/hydronumerics
    public static TimeStampSeries ChangeZoomLevel(TimeStampSeries Data, TimeStepUnit NewZoomLevel, bool Accumulate)
    {
      TimeStampSeries ToReturn = new TimeStampSeries();
      ToReturn.DeleteValue = Data.DeleteValue;
      ToReturn.Name = Data.Name;
      ToReturn.ID = Data.ID;
      ToReturn.TimeStepSize = NewZoomLevel;


      DateTime start = Data.StartTime;
      DateTime end = Data.EndTime;
      int localcount = 0;
      switch (NewZoomLevel)
      {
        case TimeStepUnit.Year:
          {
            int currentyear = start.Year;
            ToReturn.Items.Add(new TimeStampValue(new DateTime(start.Year, 1, 1), 0));
            foreach (var v in Data.Items.Where(dv => dv.Value != Data.DeleteValue))
            {
              if (v.Time.Year == currentyear)
                ToReturn.Items.Last().Value += v.Value;
              else
              {
                currentyear = v.Time.Year;
                if (!Accumulate)
                  ToReturn.Items.Last().Value /= localcount;
                localcount = 0;
                ToReturn.Items.Add(new TimeStampValue(new DateTime(v.Time.Year, 1, 1), v.Value));
              }
              localcount++;
            }
            if (!Accumulate)
              ToReturn.Items.Last().Value /= localcount;
          }
          break;
        case TimeStepUnit.Month:
          int currentmonth = start.Month;
          ToReturn.Items.Add(new TimeStampValue(new DateTime(start.Year, start.Month, 1), 0));
          foreach (var v in Data.Items.Where(dv => dv.Value != Data.DeleteValue))
          {
            if (v.Time.Month == currentmonth)
              ToReturn.Items.Last().Value += v.Value;
            else
            {
              currentmonth = v.Time.Month;
              if (!Accumulate)
                ToReturn.Items.Last().Value /= localcount;
              localcount = 0;
              ToReturn.Items.Add(new TimeStampValue(new DateTime(v.Time.Year, v.Time.Month, 1), v.Value));
            }
            localcount++;
          }
          if (!Accumulate)
            ToReturn.Items.Last().Value /= localcount;

          break;
        case TimeStepUnit.Day:
          break;
        case TimeStepUnit.Hour:
          break;
        case TimeStepUnit.Minute:
          break;
        case TimeStepUnit.Second:
          break;
        case TimeStepUnit.None:
          break;
        default:
          break;
      }


      return ToReturn;
    }