def test_time(self, kind, name, series): n = 10000 u = np.random.rand(n) xd = uniform(loc=2, scale=1) x = xd.ppf(u) hist = sim = series(x, name) ref = series(apply_correction(x, 2, kind), name) scaling = Scaling(group="time", kind=kind) scaling.train(ref, hist) np.testing.assert_array_almost_equal(scaling.ds.af, 2) p = scaling.adjust(sim) np.testing.assert_array_almost_equal(p, ref)
def test_mon_U(self, mon_series, series, mon_triangular, kind, name): n = 10000 u = np.random.rand(n) xd = uniform(loc=2, scale=1) x = xd.ppf(u) hist = sim = series(x, name) ref = mon_series(apply_correction(x, 2, kind), name) # Test train scaling = Scaling(group="time.month", kind=kind) scaling.train(ref, hist) expected = apply_correction(mon_triangular, 2, kind) np.testing.assert_array_almost_equal(scaling.ds.af, expected) # Test predict p = scaling.adjust(sim) np.testing.assert_array_almost_equal(p, ref)
def test_add_dim(self, series, mon_series): n = 10000 u = np.random.rand(n, 4) xd = uniform(loc=2, scale=1) x = xd.ppf(u) hist = sim = series(x, "tas") ref = mon_series(apply_correction(x, 2, "+"), "tas") group = Grouper("time.month", add_dims=["lon"]) scaling = Scaling.train(ref, hist, group=group, kind="+") assert "lon" not in scaling.ds p = scaling.adjust(sim) assert "lon" in p.dims np.testing.assert_array_almost_equal(p.transpose(*ref.dims), ref)