def test_compute_climatology_multi_drop_time_bound(ds): dset = open_dataset(ds, decode_times=False) dset_time_bound = dset.time.attrs['bounds'] dset = dset.drop(dset_time_bound) del dset.time.attrs['bounds'] computed_dset = compute_mon_climatology(dset) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype for key, value in dset.time.attrs.items(): assert key in computed_dset.time.attrs assert value == computed_dset.time.attrs[key] computed_dset = compute_ann_mean(dset) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype for key, value in dset.time.attrs.items(): assert key in computed_dset.time.attrs assert value == computed_dset.time.attrs[key] computed_dset = compute_mon_anomaly(dset) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype assert (dset.time.values == computed_dset.time.values).all() for key, value in dset.time.attrs.items(): assert key in computed_dset.time.attrs assert value == computed_dset.time.attrs[key]
def test_regrid_regrid(): R = regridder(name_grid_src="T62", name_grid_dst="CAM_f09", method="bilinear", overwrite_existing=False) ds = open_dataset(name="ncep_forecast_tseries") dao = R(ds.t_10) print(dao) assert isinstance(dao, xr.DataArray)
def test_resample_ann_mean_values_missing(ds, weights): dset = open_dataset(ds, decode_times=False, decode_coords=False) dset.variable_2.data[0:3, :, :] = np.nan computed_dset = esmlab.resample(dset, freq='ann', weights=weights) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype expected = np.array([1.0, 1.0, 1.0, 1.0, 0, 0, 0, 0], dtype=np.float32) np.testing.assert_allclose(computed_dset.variable_2.data.ravel().astype( np.float32), expected, rtol=1e-6)
def test_weighted_sum_float32(): from esmlab.datasets import open_dataset with open_dataset('cesm_pop_monthly') as ds: weights = ds['TAREA'].astype(np.float32) tmp_data = ds['TLAT'] tmp_data.values = np.where(np.greater_equal(ds['KMT'].values, 1), ds['TLAT'], np.nan) tmp_data = tmp_data.astype(np.float32) w_sum = esmlab.weighted_sum(tmp_data, dim=None, weights=weights) assert tmp_data.attrs == w_sum.attrs assert tmp_data.encoding == w_sum.encoding
def test_compute_climatology_daisy_chain(ds): dset = open_dataset(ds, decode_times=False) computed_dset = compute_mon_climatology(dset) assert isinstance(computed_dset, xr.Dataset) computed_dset2 = compute_mon_anomaly(computed_dset) assert isinstance(computed_dset2, xr.Dataset) computed_dset3 = compute_ann_mean(computed_dset) assert isinstance(computed_dset3, xr.Dataset) computed_dset3 = compute_ann_mean(computed_dset2) assert isinstance(computed_dset3, xr.Dataset)
def test_compute_climatology_multi(ds): dset = open_dataset(ds, decode_times=False) print(dset) computed_dset = compute_mon_climatology(dset) print(computed_dset) print() assert isinstance(computed_dset, xr.Dataset) computed_dset = compute_ann_mean(dset) print(computed_dset) print() assert isinstance(computed_dset, xr.Dataset) computed_dset = compute_mon_anomaly(dset) print(computed_dset) print() assert isinstance(computed_dset, xr.Dataset)
def test_regrid_regrid(grid_src, grid_dst, method, data_in, xr_type): R = regridder(name_grid_src=grid_src, name_grid_dst=grid_dst, method=method, overwrite_existing=False) ds = open_dataset(name=data_in) dao = R(ds.t_10) assert isinstance(dao, xr_type) assert dao.data.shape == (1, 192, 288) with pytest.raises(NotImplementedError): dao = R(ds) with pytest.raises(ValueError): a = np.ones(10) dao = R(a)
def test_compute_climatology_multi_decoded(ds): dset = open_dataset(ds, decode_times=True) computed_dset = compute_mon_climatology(dset) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype for key, value in dset.time.attrs.items(): assert key in computed_dset.time.attrs assert value == computed_dset.time.attrs[key] computed_dset = compute_ann_mean(dset) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype for key, value in dset.time.attrs.items(): assert key in computed_dset.time.attrs assert value == computed_dset.time.attrs[key] computed_dset = compute_mon_anomaly(dset) assert isinstance(computed_dset, xr.Dataset) assert computed_dset.time.dtype == dset.time.dtype assert (dset.time.values == computed_dset.time.values).all() for key, value in dset.time.attrs.items(): assert key in computed_dset.time.attrs assert value == computed_dset.time.attrs[key]
def test_open_dataset_cache(): ds = open_dataset('ncep_forecast_tseries', cache=False) assert isinstance(ds, xr.Dataset) filepath = _default_cache_dir + '/ncep_forecast_tseries.nc' assert not os.path.exists(os.path.abspath(filepath))
def test_open_dataset(): ds = open_dataset('cesm_pop_yearly') assert isinstance(ds, xr.Dataset)
def test_open_dataset(): ds = open_dataset('cesm_cice_daily') assert isinstance(ds, xr.Dataset)