예제 #1
0
    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)
예제 #2
0
 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)
예제 #3
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)))