def test_convert_units(self): tasmax = xr.open_dataset(self.nc_tasmax).tasmax tasmin = xr.open_dataset(self.nc_tasmin).tasmin tasmax.values -= K2C tasmax.attrs["units"] = "C" tasmin.values -= K2C tasmin.attrs["units"] = "C" # put a nan somewhere tasmin.values[180, 1, 0] = np.nan with pytest.warns(None) as record: frzthw = atmos.daily_freezethaw_cycles( tasmax, tasmin, thresh_tasmax="0 degC", thresh_tasmin="0 degC", freq="YS", ) min1 = tasmin.values[:, 0, 0] max1 = tasmax.values[:, 0, 0] frzthw1 = ((min1 < 0) * (max1 > 0) * 1.0).sum() assert ( "This index calculation will soon require user-specified thresholds." not in [str(q.message) for q in record] ) assert np.allclose(frzthw1, frzthw.values[0, 0, 0]) assert np.isnan(frzthw.values[0, 1, 0]) assert np.isnan(frzthw.values[0, -1, -1])
def test_3d_data_with_nans(self): tasmax = xr.open_dataset(self.nc_tasmax).tasmax tasmin = xr.open_dataset(self.nc_tasmin).tasmin # put a nan somewhere tasmin.values[180, 1, 0] = np.nan with pytest.warns(FutureWarning) as record: frzthw = atmos.daily_freezethaw_cycles(tasmax, tasmin, freq="YS") min1 = tasmin.values[:, 0, 0] max1 = tasmax.values[:, 0, 0] frzthw1 = ((min1 < K2C) * (max1 > K2C) * 1.0).sum() assert ( "This index calculation will soon require user-specified thresholds." in [str(q.message) for q in record] ) assert np.allclose(frzthw1, frzthw.values[0, 0, 0]) assert np.isnan(frzthw.values[0, 1, 0]) assert np.isnan(frzthw.values[0, -1, -1])
def test_3d_data_with_nans(self): tasmax = xr.open_dataset(self.nc_tasmax).tasmax tasmin = xr.open_dataset(self.nc_tasmin).tasmin # put a nan somewhere tasmin.values[180, 1, 0] = np.nan frzthw = atmos.daily_freezethaw_cycles(tasmax, tasmin, freq="YS") min1 = tasmin.values[:, 0, 0] max1 = tasmax.values[:, 0, 0] frzthw1 = ((min1 < K2C) * (max1 > K2C) * 1.0).sum() assert np.allclose(frzthw1, frzthw.values[0, 0, 0]) assert np.isnan(frzthw.values[0, 1, 0]) assert np.isnan(frzthw.values[0, -1, -1])
def test_convert_units(self): tasmax = xr.open_dataset(self.nc_tasmax).tasmax tasmin = xr.open_dataset(self.nc_tasmin).tasmin tasmax.values -= K2C tasmax.attrs["units"] = "C" tasmin.values -= K2C tasmin.attrs["units"] = "C" # put a nan somewhere tasmin.values[180, 1, 0] = np.nan frzthw = atmos.daily_freezethaw_cycles(tasmax, tasmin, freq="YS") min1 = tasmin.values[:, 0, 0] max1 = tasmax.values[:, 0, 0] frzthw1 = ((min1 < 0) * (max1 > 0) * 1.0).sum() assert np.allclose(frzthw1, frzthw.values[0, 0, 0]) assert np.isnan(frzthw.values[0, 1, 0]) assert np.isnan(frzthw.values[0, -1, -1])