public void ConstructorTest()
    {

      TimeSpanSeries ts = new TimeSpanSeries();
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 12, 0, 0), new DateTime(2014, 1, 1, 12, 12, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 13, 1, 0), new DateTime(2014, 1, 1, 13, 12, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 2, 12, 0, 0), new DateTime(2014, 1, 2, 12, 12, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 3, 12, 0, 0), new DateTime(2014, 1, 3, 12, 12, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 4, 12, 0, 0), new DateTime(2014, 1, 4, 12, 12, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 4, 12, 12, 0), new DateTime(2014, 1, 4, 12, 24, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 12, 12, 12, 0), new DateTime(2014, 1, 12, 12, 24, 0), 10));

      FixedTimeStepSeries fx = new FixedTimeStepSeries(ts, true);

      var daily = TSTools.ChangeZoomLevel(fx, TimeStepUnit.Day, true);

      Assert.AreEqual(5, daily.TimeSpanValues.Count());

      var monthly = TSTools.ChangeZoomLevel(fx, TimeStepUnit.Month, true);
      var yearly = TSTools.ChangeZoomLevel(fx, TimeStepUnit.Year, true);

      Assert.AreEqual(ts.Sum, monthly.Sum);

      ts = new TimeSpanSeries() { TimeStepSize = TimeStepUnit.Minute };
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 12, 15, 0), new DateTime(2014, 1, 1, 12, 30, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 12, 30, 0), new DateTime(2014, 1, 1, 12, 45, 0), 10));
      ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 14, 45, 0), new DateTime(2014, 1, 1, 15, 00, 0), 10));
      ts.GapFill(InterpolationMethods.DeleteValue, TimeSpan.FromMinutes(15));
      
      fx = new FixedTimeStepSeries(ts, false);

      Assert.AreEqual(10,fx.Items[0].Value);


    }
Example #2
0
        public static SortedList <int, FixedTimeStepSeries> ExtractTimeSeries(this DataTable data, string parameterName)
        {
            SortedList <int, FixedTimeStepSeries> ToReturn = new SortedList <int, FixedTimeStepSeries>();

            for (int i = 0; i < data.Rows.Count; i++)
            {
                FixedTimeStepSeries par;
                int id15 = (int)data.Rows[i][0];

                if (!ToReturn.TryGetValue(id15, out par))
                {
                    par = new FixedTimeStepSeries();
                    par.TimeStepSize = TimeStepUnit.Month;
                    par.StartTime    = (DateTime)data.Rows[0][1];
                    ToReturn.Add(id15, par);
                }
                if (data.Rows[i].IsNull(parameterName))
                {
                    par.Add(par.DeleteValue);
                }
                else
                {
                    par.Add((double)data.Rows[i][parameterName]);
                }
            }
            return(ToReturn);
        }
    public void GetValuesTest()
    {
      FixedTimeStepSeries target = new FixedTimeStepSeries(); // TODO: Initialize to an appropriate value
      target.TimeStepSize = TimeStepUnit.Month;
      target.AddRange(new DateTime(2010, 1, 1), new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });

      DateTime StartTime = new DateTime(2010, 3, 1);
      DateTime EndTime = new DateTime(2010, 6, 1);
      double[] expected = new double[] { 3.0, 4.0, 5.0, 6.0 };
      double[] actual;
      actual = target.GetValues(StartTime, EndTime);
      Assert.AreEqual(expected.Length, actual.Length);
    }
Example #4
0
        /// <summary>
        /// Returns the bR-squared value
        /// </summary>
        /// <param name="Other"></param>
        /// <returns></returns>
        public static double?bR2(this FixedTimeStepSeries Me, FixedTimeStepSeries Other)
        {
            double[] val1;
            double[] val2;
            Me.AlignRemoveDeletevalues(Other, out val1, out val2);
            int c = val1.Count();

            if (val1.Count() > 1 & Me.Count > 1)
            {
                var coeff = Fit.Line(val1, val2);
                return(Math.Abs(coeff[1]) * TSTools.R2(val1, val2));
            }
            return(null);
        }
        public void GetValuesTest()
        {
            FixedTimeStepSeries target = new FixedTimeStepSeries(); // TODO: Initialize to an appropriate value

            target.TimeStepSize = TimeStepUnit.Month;
            target.AddRange(new DateTime(2010, 1, 1), new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });

            DateTime StartTime = new DateTime(2010, 3, 1);
            DateTime EndTime   = new DateTime(2010, 6, 1);

            double[] expected = new double[] { 3.0, 4.0, 5.0, 6.0 };
            double[] actual;
            actual = target.GetValues(StartTime, EndTime);
            Assert.AreEqual(expected.Length, actual.Length);
        }
Example #6
0
        public void ChangeZoomLevelTest()
        {
            FixedTimeStepSeries Data = new FixedTimeStepSeries()
            {
                TimeStepSize = TimeStepUnit.Month
            };

            Data.AddRange(new DateTime(2010, 1, 1), new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });

            var actual = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, true);

            Assert.AreEqual(78, actual.GetValue(Data.StartTime));
            actual = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, false);
            Assert.AreEqual(6.5, actual.GetValue(Data.StartTime), 1e-10);
            Assert.AreEqual(Data.DeleteValue, actual.GetValue(Data.StartTime.AddDays(400)));
        }
    /// <summary>
    /// Returns a timestampseries at the required timestep
    /// Returns a new empty timestampseries if no data exists.
    /// </summary>
    /// <param name="TimeStep"></param>
    /// <returns></returns>
    public FixedTimeStepSeries GetTs(TimeStepUnit TimeStep)
    {
      FixedTimeStepSeries toreturn;
      if (!data.TryGetValue(TimeStep, out toreturn))
      {
        if (data.Count == 0)
        {
          toreturn = new FixedTimeStepSeries() { TimeStepSize = TimeStep, Name = Name + "_" + TimeStep.ToString() };
        }

        if (data.ContainsKey(TimeStepUnit.Day))
          toreturn = TSTools.ChangeZoomLevel(data[TimeStepUnit.Day], TimeStep, Accumulate);
        else if (data.ContainsKey(TimeStepUnit.Month))
          toreturn = TSTools.ChangeZoomLevel(data[TimeStepUnit.Month], TimeStep, Accumulate);
        data.Add(TimeStep, toreturn);
      }
      return toreturn;
    }
        public void GetIndexTest()
        {
            FixedTimeStepSeries target = new FixedTimeStepSeries();

            target.TimeStepSize = TimeStepUnit.Month;
            target.AddRange(new DateTime(2010, 1, 1), new double[] { 1, 2, 3, 4, 5 });

            int expected = 0;
            int actual;

            actual = target.GetIndex(new DateTime(2010, 1, 1));
            Assert.AreEqual(expected, actual);

            Assert.AreEqual(-1, target.GetIndex(new DateTime(2009, 12, 1)));
            Assert.AreEqual(-2, target.GetIndex(new DateTime(2009, 11, 1)));

            Assert.AreEqual(11, target.GetIndex(new DateTime(2010, 12, 1)));
        }
Example #9
0
        public void SubstractTest()
        {
            FixedTimeStepSeries ts1 = new FixedTimeStepSeries();
            FixedTimeStepSeries ts2 = new FixedTimeStepSeries();

            ts1.StartTime = new DateTime(2010, 1, 1);
            ts1.AddRange(new double[] { 2, 3, 4 });
            ts1.TimeStepSize = TimeStepUnit.Month;

            ts2.StartTime = new DateTime(2010, 1, 1);
            ts2.AddRange(new double[] { 1, 1, 1 });
            ts2.TimeStepSize = TimeStepUnit.Month;


            FixedTimeStepSeries actual;

            actual = TSTools.Substract(ts1, ts2);
            Assert.AreEqual(1, actual.GetValue(new DateTime(2010, 1, 1)));
            Assert.AreEqual(2, actual.GetValue(new DateTime(2010, 2, 1)));
        }
        public void LoadTest()
        {
            FixedTimeStepSeries fxt = new FixedTimeStepSeries();

            fxt.StartTime    = new DateTime(1990, 1, 1);
            fxt.TimeStepSize = TimeStepUnit.Month;

            using (StreamReader sr = new StreamReader(@"D:\OldWork\HydroNumerics\Core\UnitTest\ts.csv"))
            {
                sr.ReadLine();
                while (!sr.EndOfStream)
                {
                    fxt.Items.Add(new ValueDouble(double.Parse(sr.ReadLine().Split(';')[1])));
                }
            }
            var yearly = TSTools.ChangeZoomLevel(fxt, TimeStepUnit.Year, true);

            Assert.AreEqual(4733123.6582, yearly.GetValue(new DateTime(2010, 5, 5)), 0.1);
            Assert.AreEqual(4733123.6582, yearly.GetValue(new DateTime(2010, 1, 1)), 0.1);
            Assert.AreEqual(4733123.6582, yearly.GetValue(new DateTime(2010, 12, 31)), 0.1);
        }
Example #11
0
        public void ChangeZoomLevelTest3()
        {
            FixedTimeStepSeries Data = new FixedTimeStepSeries()
            {
                TimeStepSize = TimeStepUnit.Month
            };

            Data.StartTime = new DateTime(2010, 1, 1);

            for (int i = 0; i < 36; i++)
            {
                Data.Add(i);
            }

            Assert.AreEqual(new DateTime(2012, 12, 1), Data.EndTime);

            var yearly = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, false);

            Assert.AreEqual(5.5, yearly.Items[0].Value);
            Assert.AreEqual(17.5, yearly.Items[1].Value);
            Assert.AreEqual(29.5, yearly.Items[2].Value);
        }
        public void ConstructorTest()
        {
            TimeSpanSeries ts = new TimeSpanSeries();

            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 12, 0, 0), new DateTime(2014, 1, 1, 12, 12, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 13, 1, 0), new DateTime(2014, 1, 1, 13, 12, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 2, 12, 0, 0), new DateTime(2014, 1, 2, 12, 12, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 3, 12, 0, 0), new DateTime(2014, 1, 3, 12, 12, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 4, 12, 0, 0), new DateTime(2014, 1, 4, 12, 12, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 4, 12, 12, 0), new DateTime(2014, 1, 4, 12, 24, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 12, 12, 12, 0), new DateTime(2014, 1, 12, 12, 24, 0), 10));

            FixedTimeStepSeries fx = new FixedTimeStepSeries(ts, true);

            var daily = TSTools.ChangeZoomLevel(fx, TimeStepUnit.Day, true);

            Assert.AreEqual(5, daily.TimeSpanValues.Count());

            var monthly = TSTools.ChangeZoomLevel(fx, TimeStepUnit.Month, true);
            var yearly  = TSTools.ChangeZoomLevel(fx, TimeStepUnit.Year, true);

            Assert.AreEqual(ts.Sum, monthly.Sum);

            ts = new TimeSpanSeries()
            {
                TimeStepSize = TimeStepUnit.Minute
            };
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 12, 15, 0), new DateTime(2014, 1, 1, 12, 30, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 12, 30, 0), new DateTime(2014, 1, 1, 12, 45, 0), 10));
            ts.Items.Add(new TimeSpanValue(new DateTime(2014, 1, 1, 14, 45, 0), new DateTime(2014, 1, 1, 15, 00, 0), 10));
            ts.GapFill(InterpolationMethods.DeleteValue, TimeSpan.FromMinutes(15));

            fx = new FixedTimeStepSeries(ts, false);

            Assert.AreEqual(10, fx.Items[0].Value);
        }
Example #13
0
    public static FixedTimeStepSeries Substract(FixedTimeStepSeries ts1, FixedTimeStepSeries ts2)
    {
      FixedTimeStepSeries ToReturn = new FixedTimeStepSeries();
      ToReturn.TimeStepSize = ts1.TimeStepSize;
      ToReturn.DeleteValue = ts1.DeleteValue;
      ToReturn.StartTime = ts1.StartTime;
      DateTime End = ts1.EndTime;

      if (ts1.StartTime > ts2.StartTime)
        ToReturn.StartTime =ts2.StartTime;
      if(ts1.EndTime > ts2.EndTime)
        End = ts2.EndTime;

      var val1 = ts1.GetValues(ToReturn.StartTime, End);
      var val2 = ts2.GetValues(ToReturn.StartTime, End);

      for (int i = 0;i<val1.Count();i++)
      {
        if(val1[i]==ts1.DeleteValue || val2[i]== ts2.DeleteValue)
          ToReturn.Add(ToReturn.DeleteValue);
        else
          ToReturn.Add(val1[i]-val2[i]);
      }
      return ToReturn;
    }
Example #14
0
        /// <summary>
        /// Takes a time step
        /// </summary>
        /// <param name="Endtime"></param>
        public void MoveInTime(DateTime Endtime)
        {
            double output = 0;

            CurrentTime = Endtime;

            CurrentState = StateVariables.Rows.Find(new object[] { ID, CurrentTime });

            if (CurrentState == null)
            {
                CurrentState         = StateVariables.NewRow();
                CurrentState["ID"]   = ID;
                CurrentState["Time"] = CurrentTime;
                StateVariables.Rows.Add(CurrentState);
            }


            foreach (var S in SourceModels)
            {
                double value;
                if (S.Update)
                {
                    value = S.GetValue(this, Endtime) * DateTime.DaysInMonth(Endtime.Year, Endtime.Month) * 86400.0;
                    CurrentState[S.Name] = value;
                }
                if (!CurrentState.IsNull(S.Name))
                {
                    output += (double)CurrentState[S.Name];
                }
            }


            foreach (var R in InternalReduction)
            {
                double value;
                if (R.Update)
                {
                    value = R.GetReduction(this, output, Endtime) * DateTime.DaysInMonth(Endtime.Year, Endtime.Month) * 86400.0;
                    CurrentState[R.Name] = value;
                }
                if (!CurrentState.IsNull(R.Name))
                {
                    output -= (double)CurrentState[R.Name];
                }
            }

            foreach (var ups in UpstreamConnections)
            {
                output += ups.GetDownStreamOutput(Endtime);
            }


            //Do the global reductions
            foreach (var R in MainStreamReduction)
            {
                double value;
                if (R.Update)
                {
                    value = R.GetReduction(this, output, Endtime) * DateTime.DaysInMonth(Endtime.Year, Endtime.Month) * 86400.0;
                    CurrentState[R.Name] = value;
                }
                if (!CurrentState.IsNull(R.Name))
                {
                    output -= (double)CurrentState[R.Name];
                }
            }

            if (Precipitation != null)
            {
                CurrentState["Precipitation"] = Precipitation.GetTs(TimeStepUnit.Month).GetValue(CurrentTime);
            }
            if (Temperature != null)
            {
                CurrentState["Air Temperature"] = Temperature.GetValue(CurrentTime, InterpolationMethods.DeleteValue);
            }
            if (M11Flow != null)
            {
                CurrentState["M11Flow"]    = M11Flow.GetTs(TimeStepUnit.Month).GetValue(CurrentTime) * DateTime.DaysInMonth(CurrentTime.Year, CurrentTime.Month) * 86400;
                CurrentState["NetM11Flow"] = NetInflow.GetTs(TimeStepUnit.Month).GetValue(CurrentTime) * DateTime.DaysInMonth(CurrentTime.Year, CurrentTime.Month) * 86400;
            }
            if (Leaching != null)
            {
                CurrentState["Leaching"] = Leaching.GetValue(CurrentTime, InterpolationMethods.DeleteValue) * DateTime.DaysInMonth(CurrentTime.Year, CurrentTime.Month) * 86400;
            }



            if (Measurements != null)
            {
                CurrentState["ObservedFlow"]    = Measurements.Flow.GetValue(CurrentTime, InterpolationMethods.DeleteValue);
                CurrentState["ObservedNitrate"] = Measurements.Nitrate.GetValue(CurrentTime, InterpolationMethods.DeleteValue);

                if (ObsNitrate == null)
                {
                    ObsNitrate = new FixedTimeStepSeries()
                    {
                        TimeStepSize = TimeStepUnit.Month, StartTime = CurrentTime
                    };
                    SimNitrate = new FixedTimeStepSeries()
                    {
                        TimeStepSize = TimeStepUnit.Month, StartTime = CurrentTime
                    };
                }
                ObsNitrate.Add(Measurements.Nitrate.GetValue(CurrentTime, InterpolationMethods.DeleteValue));
                SimNitrate.Add(output);
            }

            CurrentState["DownStreamOutput"] = output;
        }
Example #15
0
    /// <summary>
    /// Takes a time step
    /// </summary>
    /// <param name="Endtime"></param>
    public void MoveInTime(DateTime Endtime)
    {

      double output = 0;
      CurrentTime = Endtime;

      CurrentState = StateVariables.Rows.Find(new object[] { ID, CurrentTime });

      if (CurrentState == null)
      {
        CurrentState = StateVariables.NewRow();
        CurrentState["ID"] = ID;
        CurrentState["Time"] = CurrentTime;
        StateVariables.Rows.Add(CurrentState);
      }


      foreach (var S in SourceModels)
      {
        double value;
        if (S.Update)
        {
          value = S.GetValue(this, Endtime) * DateTime.DaysInMonth(Endtime.Year, Endtime.Month) * 86400.0;
          CurrentState[S.Name] = value;
        }
        if (!CurrentState.IsNull(S.Name))
          output += (double)CurrentState[S.Name];
      }


      foreach (var R in InternalReduction)
      {
        double value;
        if (R.Update)
        {
          value = R.GetReduction(this, output, Endtime) * DateTime.DaysInMonth(Endtime.Year, Endtime.Month) * 86400.0;
          CurrentState[R.Name] = value;
        }
        if (!CurrentState.IsNull(R.Name))
          output -= (double)CurrentState[R.Name];
      }

      foreach (var ups in UpstreamConnections)
        output += ups.GetDownStreamOutput(Endtime);


      //Do the global reductions
      foreach (var R in MainStreamReduction)
      {
        double value;
        if (R.Update)
        {
          value = R.GetReduction(this, output, Endtime) * DateTime.DaysInMonth(Endtime.Year, Endtime.Month) * 86400.0;
          CurrentState[R.Name] = value;
        }
        if (!CurrentState.IsNull(R.Name))
          output -= (double)CurrentState[R.Name];
      }

      if (Precipitation != null)
        CurrentState["Precipitation"] = Precipitation.GetTs(TimeStepUnit.Month).GetValue(CurrentTime, InterpolationMethods.DeleteValue);
      if (Temperature != null)
        CurrentState["Air Temperature"] = Temperature.GetValue(CurrentTime, InterpolationMethods.DeleteValue);
      if (M11Flow != null)
      {
        CurrentState["M11Flow"] = M11Flow.GetTs(TimeStepUnit.Month).GetValue(CurrentTime, InterpolationMethods.DeleteValue) * DateTime.DaysInMonth(CurrentTime.Year, CurrentTime.Month) * 86400;
        CurrentState["NetM11Flow"] = NetInflow.GetTs(TimeStepUnit.Month).GetValue(CurrentTime, InterpolationMethods.DeleteValue) * DateTime.DaysInMonth(CurrentTime.Year, CurrentTime.Month) * 86400;
      }
        if (Leaching != null)
        CurrentState["Leaching"] = Leaching.GetValue(CurrentTime, InterpolationMethods.DeleteValue) * DateTime.DaysInMonth(CurrentTime.Year, CurrentTime.Month) * 86400;



      if (Measurements != null)
      {
        CurrentState["ObservedFlow"] = Measurements.Flow.GetValue(CurrentTime, InterpolationMethods.DeleteValue);
        CurrentState["ObservedNitrate"] = Measurements.Nitrate.GetValue(CurrentTime, InterpolationMethods.DeleteValue);

        if(ObsNitrate==null)
        {
          ObsNitrate = new FixedTimeStepSeries() { TimeStepSize = TimeStepUnit.Month };
          ObsNitrate.SetStartTime(CurrentTime);
          SimNitrate = new FixedTimeStepSeries(){ TimeStepSize = TimeStepUnit.Month};
          SimNitrate.SetStartTime(CurrentTime);
        }
        ObsNitrate.Add(Measurements.Nitrate.GetValue(CurrentTime, InterpolationMethods.DeleteValue));
        SimNitrate.Add(output);
      }

      CurrentState["DownStreamOutput"] = output;
    }
Example #16
0
    /// <summary>
    /// Gets a fixedtimestepseries at another zoom level.
    /// </summary>
    /// <param name="Data"></param>
    /// <param name="NewZoomLevel"></param>
    /// <param name="Accumulate"></param>
    /// <returns></returns>
    public static FixedTimeStepSeries ChangeZoomLevel(FixedTimeStepSeries Data, TimeStepUnit NewZoomLevel, bool Accumulate)
    {

      if (Data.TimeStepSize <= NewZoomLevel)
        return null;

      FixedTimeStepSeries ToReturn = new FixedTimeStepSeries();
      ToReturn.DeleteValue = Data.DeleteValue;
      ToReturn.TimeStepSize = NewZoomLevel;
      ToReturn.StartTime= GetTimeOfFirstTimeStep(Data.StartTime, NewZoomLevel);
      ToReturn.OffSetStartTime = Data.OffSetStartTime;
      ToReturn.OffSetEndTime = Data.OffSetEndTime;


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

      int localcount = 0;
      int counter = 0;
      switch (NewZoomLevel)
      {
        case TimeStepUnit.Year:
          {
            int currentyear = -1;
            foreach (var v in Data.Items)
            {
              if (Data.GetTime(counter).Year == currentyear)
              {
                if (v.Value != Data.DeleteValue)
                  newvalues[newvalues.Count - 1] += v.Value;
              }
              else
              {
                currentyear = Data.GetTime(counter).Year;
                if (!Accumulate & newvalues.Count>0)
                  newvalues[newvalues.Count - 1] /= localcount;
                localcount = 0;
                newvalues.Add(v.Value);
              }
              localcount++;
              counter++;
            }
            if (localcount != 12) //only use complete years
              newvalues.RemoveAt(newvalues.Count - 1);
            else
            {
              if (!Accumulate)
                newvalues[newvalues.Count - 1] /= localcount;
            }
          }
          break;
        case TimeStepUnit.Month:
          int currentmonth = Data.StartTime.Month;
            newvalues.Add(0);
            foreach (var v in Data.Items)
            {
              if (Data.GetTime(counter).Month == currentmonth)
              {
                if (v.Value != Data.DeleteValue)
                  newvalues[newvalues.Count - 1] += v.Value;
              }
              else
              {
                currentmonth = Data.GetTime(counter).Month;
                if (!Accumulate)
                  newvalues[newvalues.Count - 1] /= localcount;
                localcount = 0;
                newvalues.Add(v.Value);
              }
              localcount++;
              counter++;
            }
          if (!Accumulate)
            newvalues[newvalues.Count - 1] /= localcount;

          break;
        case TimeStepUnit.Day:
          int currentday = Data.StartTime.Day;
            newvalues.Add(0);
            foreach (var v in Data.Items)
            {
              if (Data.GetTime(counter).Day == currentday)
              {
                if (v.Value != Data.DeleteValue)
                  newvalues[newvalues.Count - 1] += v.Value;
              }
              else
              {
                currentday = Data.GetTime(counter).Day;
                if (!Accumulate)
                  newvalues[newvalues.Count - 1] /= localcount;
                localcount = 0;
                newvalues.Add(v.Value);
              }
              localcount++;
              counter++;
            }
          if (!Accumulate)
            newvalues[newvalues.Count - 1] /= localcount;
          break;
        case TimeStepUnit.Hour:
          int currenthour = Data.StartTime.Hour;
            newvalues.Add(0);
            foreach (var v in Data.Items)
            {
              if (Data.GetTime(counter).Hour == currenthour)
              {
                if (v.Value != Data.DeleteValue)
                  newvalues[newvalues.Count - 1] += v.Value;
              }
              else
              {
                currenthour = Data.GetTime(counter).Hour;
                if (!Accumulate)
                  newvalues[newvalues.Count - 1] /= localcount;
                localcount = 0;
                newvalues.Add(v.Value);
              }
              localcount++;
              counter++;
            }
          if (!Accumulate)
            newvalues[newvalues.Count - 1] /= localcount;
          break;
        case TimeStepUnit.Minute:
          int currentminute = Data.StartTime.Minute;
            newvalues.Add(0);
            foreach (var v in Data.Items.Where(vv => vv.Value != Data.DeleteValue))
            {
              if (Data.GetTime(counter).Minute == currentminute)
              {
                newvalues[newvalues.Count - 1] += v.Value;
              }
              else
              {
                currentminute = Data.GetTime(counter).Minute;
                if (!Accumulate)
                  newvalues[newvalues.Count - 1] /= localcount;
                localcount = 0;
                newvalues.Add(v.Value);
              }
              localcount++;
              counter++;
            }
          if (!Accumulate)
            newvalues[newvalues.Count - 1] /= localcount;
          break;
        case TimeStepUnit.Second:
          break;
        case TimeStepUnit.None:
          break;
        default:
          break;
      }
      ToReturn.AddRange(newvalues.Select(n=>new ValueDouble(n)));

      return ToReturn;
    }
    public void GetIndexTest()
    {
      FixedTimeStepSeries target = new FixedTimeStepSeries(); 
      
      target.TimeStepSize = TimeStepUnit.Month;
      target.AddRange(new DateTime(2010, 1, 1), new double[] { 1, 2, 3, 4, 5 });
      
      int expected = 0; 
      int actual;
      actual = target.GetIndex(new DateTime(2010,1,1));
      Assert.AreEqual(expected, actual);

      Assert.AreEqual(-1, target.GetIndex(new DateTime(2009,12,1)));
      Assert.AreEqual(-2, target.GetIndex(new DateTime(2009, 11, 1)));

      Assert.AreEqual(11, target.GetIndex(new DateTime(2010, 12, 1)));
    }
Example #18
0
    public void ChangeZoomLevelTest2()
    {
      FixedTimeStepSeries Data = new FixedTimeStepSeries() { TimeStepSize = TimeStepUnit.Month };
      Data.AddRange(new DateTime(2010, 1, 1), new double[] { Data.DeleteValue, Data.DeleteValue, Data.DeleteValue });

      var actual = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, true);
      Assert.AreEqual(Data.DeleteValue, actual.GetValue(Data.StartTime));
      actual = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, false);
      Assert.AreEqual(Data.DeleteValue, actual.GetValue(Data.StartTime), 1e-10);
      Assert.AreEqual(Data.DeleteValue, actual.GetValue(Data.StartTime.AddDays(400)));
    }
    public void ChangeZoomLevelTest()
    {
      FixedTimeStepSeries Data = new FixedTimeStepSeries() { TimeStepSize = TimeStepUnit.Month };
      Data.AddRange(new DateTime(2010, 1, 1), new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });

      var actual = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, true);
      Assert.AreEqual(78, actual.GetValue(Data.StartTime, InterpolationMethods.DeleteValue));
      actual = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, false);
      Assert.AreEqual(6.5, actual.GetValue(Data.StartTime, InterpolationMethods.DeleteValue), 1e-10);
      Assert.AreEqual(Data.DeleteValue, actual.GetValue(Data.StartTime.AddDays(400), InterpolationMethods.DeleteValue));
    }
    public void LoadTest()
    {
      FixedTimeStepSeries fxt = new FixedTimeStepSeries();
      fxt.SetStartTime(new DateTime(1990, 1, 1));
      fxt.TimeStepSize = TimeStepUnit.Month;

      using (StreamReader sr = new StreamReader(@"D:\OldWork\HydroNumerics\Core\UnitTest\ts.csv"))
      {
        sr.ReadLine();
        while (!sr.EndOfStream)
        {
          fxt.Items.Add(new ValueDouble(double.Parse(sr.ReadLine().Split(';')[1])));
        }
      }
      var yearly = TSTools.ChangeZoomLevel(fxt, TimeStepUnit.Year, true);

      Assert.AreEqual(4733123.6582, yearly.GetValue(new DateTime(2010, 5, 5), InterpolationMethods.DeleteValue),0.1);
      Assert.AreEqual(4733123.6582, yearly.GetValue(new DateTime(2010, 1, 1), InterpolationMethods.DeleteValue), 0.1);
      Assert.AreEqual(4733123.6582, yearly.GetValue(new DateTime(2010, 12, 31), InterpolationMethods.DeleteValue), 0.1);


    }
    public void SubstractTest()
    {
      FixedTimeStepSeries ts1 = new FixedTimeStepSeries();
      FixedTimeStepSeries ts2 = new FixedTimeStepSeries();

      ts1.SetStartTime( new DateTime(2010, 1, 1));
      ts1.AddRange(new double[] { 2, 3, 4 });
      ts1.TimeStepSize = TimeStepUnit.Month;

      ts2.SetStartTime( new DateTime(2010, 1, 1));
      ts2.AddRange(new double[] { 1, 1, 1 });
      ts2.TimeStepSize = TimeStepUnit.Month;


      FixedTimeStepSeries actual;
      actual = TSTools.Substract(ts1, ts2);
      Assert.AreEqual(1, actual.GetValue(new DateTime(2010, 1, 1), InterpolationMethods.DeleteValue));
      Assert.AreEqual(2, actual.GetValue(new DateTime(2010, 2, 1), InterpolationMethods.DeleteValue));
    }
    public void ChangeZoomLevelTest3()
    {
      FixedTimeStepSeries Data = new FixedTimeStepSeries() { TimeStepSize = TimeStepUnit.Month };
      Data.SetStartTime( new DateTime(2010, 1, 1));

      for (int i = 0; i < 36; i++)
      {
        Data.Add(i);
      }

      Assert.AreEqual(new DateTime(2012, 12, 1), Data.EndTime);

      var yearly = TSTools.ChangeZoomLevel(Data, TimeStepUnit.Year, false);

      Assert.AreEqual(5.5, yearly.Items[0].Value);
      Assert.AreEqual(17.5, yearly.Items[1].Value);
      Assert.AreEqual(29.5, yearly.Items[2].Value);


    }
 public void SetTs(FixedTimeStepSeries ts)
 {
   data.Clear();
   data.Add(ts.TimeStepSize, ts);
 }
Example #24
0
    public static SortedList<int, FixedTimeStepSeries> ExtractTimeSeries(this DataTable data, string parameterName)
    {
      SortedList<int, FixedTimeStepSeries> ToReturn = new SortedList<int, FixedTimeStepSeries>();
      for (int i = 0; i < data.Rows.Count; i++)
      {
        FixedTimeStepSeries par;
        int id15 = (int)data.Rows[i][0];

        if (!ToReturn.TryGetValue(id15, out par))
        {
          par = new FixedTimeStepSeries();
          par.TimeStepSize = TimeStepUnit.Month;
          par.SetStartTime( (DateTime)data.Rows[0][1]);
          ToReturn.Add(id15, par);
        }
        if (data.Rows[i].IsNull(parameterName))
          par.Add(par.DeleteValue);
        else
          par.Add((double)data.Rows[i][parameterName]);
      }
      return ToReturn;
    }
Example #25
0
 /// <summary>
 /// Returns the bR-squared value
 /// </summary>
 /// <param name="Other"></param>
 /// <returns></returns>
 public static double? bR2(this FixedTimeStepSeries Me, FixedTimeStepSeries Other)
 {
   double[] val1;
   double[] val2;
   Me.AlignRemoveDeletevalues(Other, out val1, out val2);
   int c = val1.Count();
   if (val1.Count() > 1 & Me.Count>1)
   {
     var coeff = Fit.Line(val1, val2);
     return Math.Abs(coeff[1])*TSTools.R2(val1, val2);
   }
   return null;
 }