def test_ts_point(self): dv=np.arange(self.ta.size()) v=api.DoubleVector.from_numpy(dv) t=api.UtcTimeVector() for i in range(self.ta.size()): t.push_back(self.ta(i).start) t.push_back(self.ta(self.ta.size() - 1).end) ta=api.TimeAxisByPoints(t) tspoint=api.TsPoint(ta, v, api.POINT_AVERAGE_VALUE) ts_ta=tspoint.time_axis # a TsPoint do have .time_axis and .values self.assertEqual(len(ts_ta), len(self.ta)) # should have same length etc. self.assertEqual(tspoint.size(), ta.size()) self.assertAlmostEqual(tspoint.get(0).v, v[0]) self.assertAlmostEqual(tspoint.values[0], v[0]) # just to verfy compat .values works self.assertEqual(tspoint.get(0).t, ta(0).start) # verify some simple core-ts to TimeSeries interoperability full_ts=tspoint.TimeSeries # returns a new TimeSeries as clone from tsfixed self.assertEqual(full_ts.size(), tspoint.size()) for i in range(tspoint.size()): self.assertEqual(full_ts.time(i), tspoint.time(i)) self.assertAlmostEqual(full_ts.value(i), tspoint.value(i), 5) ns=tspoint.nash_sutcliffe(full_ts) self.assertAlmostEqual(ns, 1.0, 4) kg=tspoint.kling_gupta(full_ts, 1.0, 1.0, 1.0) self.assertAlmostEqual(kg, 1.0, 4)
def test_point_timeaxis_(self): """ A point time axis takes n+1 points do describe n-periods, where each period is defined as [ point_i .. point_i+1 > """ all_points = api.UtcTimeVector([t for t in range(self.t, self.t + (self.n + 1) * self.d, self.d)]) tap = api.TimeAxisByPoints(all_points) self.assertEqual(tap.size(), self.ta.size()) for i in range(self.ta.size()): self.assertEqual(tap(i), self.ta(i)) self.assertEqual(tap.t_end, all_points[-1], "t_end should equal the n+1'th point if supplied") s = str(tap) self.assertTrue(len(s) > 0)
def dacc_time(t): # t0 = int(t[0]) # t1 = int(t[1]) # return noop_time(t) if issubset else api.TimeAxisFixedDeltaT(t0, t1 - t0, len(t) - 1) return noop_time(t) if issubset else api.TimeAxisByPoints( [int(t1) for t1 in t[:-1]], int(t[-1] + api.deltahours(6)))