def test_3d_data_with_nans(self): # test with 3d data pr = xr.open_dataset(self.nc_file).pr prMM = xr.open_dataset(self.nc_file).pr prMM.values *= 86400.0 prMM.attrs["units"] = "mm/day" # put a nan somewhere prMM.values[10, 1, 0] = np.nan pr.values[10, 1, 0] = np.nan pr_min = "5 mm/d" out1 = atmos.wetdays(pr, thresh=pr_min, freq="MS") out2 = atmos.wetdays(prMM, thresh=pr_min, freq="MS") # test kg m-2 s-1 pr.attrs["units"] = "kg m-2 s-1" out3 = atmos.wetdays(pr, thresh=pr_min, freq="MS") np.testing.assert_array_equal(out1, out2) np.testing.assert_array_equal(out1, out3) # check some vector with and without a nan x1 = prMM[:31, 0, 0].values wd1 = (x1 >= int(pr_min.split(" ")[0])).sum() assert wd1 == out1.values[0, 0, 0] assert np.isnan(out1.values[0, 1, 0]) # make sure that vector with all nans gives nans whatever skipna assert np.isnan(out1.values[0, -1, -1])
def test_formatting(self, pr_series): out = atmos.wetdays(pr_series(np.arange(366)), thresh=1.0 * units.mm / units.day) assert out.attrs[ "long_name"] == "Number of wet days (precip >= 1 mm/day)" out = atmos.wetdays(pr_series(np.arange(366)), thresh=1.5 * units.mm / units.day) assert out.attrs[ "long_name"] == "Number of wet days (precip >= 1.5 mm/day)"
def test_formatting(pr_series): out = atmos.wetdays(pr_series(np.arange(366)), thresh=1.0 * units.mm / units.day) # pint 0.10 now pretty print day as d. assert out.attrs["long_name"] in [ "Number of wet days (precip >= 1 mm/day)", "Number of wet days (precip >= 1 mm/d)", ] out = atmos.wetdays(pr_series(np.arange(366)), thresh=1.5 * units.mm / units.day) assert out.attrs["long_name"] in [ "Number of wet days (precip >= 1.5 mm/day)", "Number of wet days (precip >= 1.5 mm/d)", ]