(dask)
| 8009 | @requires_cftime |
| 8010 | @pytest.mark.parametrize("dask", [True, False]) |
| 8011 | def test_differentiate_cftime(dask) -> None: |
| 8012 | rs = np.random.default_rng(42) |
| 8013 | coord = xr.date_range("2000", periods=8, freq="2ME", use_cftime=True) |
| 8014 | |
| 8015 | da = xr.DataArray( |
| 8016 | rs.random((8, 6)), |
| 8017 | coords={"time": coord, "z": 3, "t2d": (("time", "y"), rs.random((8, 6)))}, |
| 8018 | dims=["time", "y"], |
| 8019 | ) |
| 8020 | |
| 8021 | if dask and has_dask: |
| 8022 | da = da.chunk({"time": 4}) |
| 8023 | |
| 8024 | actual = da.differentiate("time", edge_order=1, datetime_unit="D") |
| 8025 | expected_data = np.gradient( |
| 8026 | da, da["time"].variable._to_numeric(datetime_unit="D"), axis=0, edge_order=1 |
| 8027 | ) |
| 8028 | expected = xr.DataArray(expected_data, coords=da.coords, dims=da.dims) |
| 8029 | assert_equal(expected, actual) |
| 8030 | |
| 8031 | actual2 = da.differentiate("time", edge_order=1, datetime_unit="h") |
| 8032 | assert_allclose(actual, actual2 * 24) |
| 8033 | |
| 8034 | # Test the differentiation of datetimes themselves |
| 8035 | actual = da["time"].differentiate("time", edge_order=1, datetime_unit="D") |
| 8036 | assert_allclose(actual, xr.ones_like(da["time"]).astype(float)) |
| 8037 | |
| 8038 | |
| 8039 | @pytest.mark.parametrize("dask", [True, False]) |
nothing calls this directly
no test coverage detected
searching dependent graphs…