(self)
| 7137 | @requires_iris |
| 7138 | @requires_dask |
| 7139 | def test_to_and_from_iris_dask(self) -> None: |
| 7140 | import cf_units # iris requirement |
| 7141 | import dask.array as da |
| 7142 | import iris |
| 7143 | |
| 7144 | coord_dict: dict[Hashable, Any] = {} |
| 7145 | coord_dict["distance"] = ("distance", [-2, 2], {"units": "meters"}) |
| 7146 | coord_dict["time"] = ("time", pd.date_range("2000-01-01", periods=3, unit="ns")) |
| 7147 | coord_dict["height"] = 10 |
| 7148 | coord_dict["distance2"] = ("distance", [0, 1], {"foo": "bar"}) |
| 7149 | coord_dict["time2"] = (("distance", "time"), [[0, 1, 2], [2, 3, 4]]) |
| 7150 | |
| 7151 | original = DataArray( |
| 7152 | da.from_array(np.arange(-1, 5, dtype="float").reshape(2, 3), 3), |
| 7153 | coord_dict, |
| 7154 | name="Temperature", |
| 7155 | attrs=dict( |
| 7156 | baz=123, |
| 7157 | units="Kelvin", |
| 7158 | standard_name="fire_temperature", |
| 7159 | long_name="Fire Temperature", |
| 7160 | ), |
| 7161 | dims=("distance", "time"), |
| 7162 | ) |
| 7163 | |
| 7164 | # Set a bad value to test the masking logic |
| 7165 | original.data = da.ma.masked_less(original.data, 0) |
| 7166 | |
| 7167 | original.attrs["cell_methods"] = "height: mean (comment: A cell method)" |
| 7168 | actual = original.to_iris() |
| 7169 | |
| 7170 | # Be careful not to trigger the loading of the iris data |
| 7171 | actual_data = ( |
| 7172 | actual.core_data() if hasattr(actual, "core_data") else actual.data |
| 7173 | ) |
| 7174 | assert_array_equal(actual_data, original.data) |
| 7175 | assert actual.var_name == original.name |
| 7176 | assert tuple(d.var_name for d in actual.dim_coords) == original.dims |
| 7177 | assert actual.cell_methods == ( |
| 7178 | iris.coords.CellMethod( |
| 7179 | method="mean", |
| 7180 | coords=("height",), |
| 7181 | intervals=(), |
| 7182 | comments=("A cell method",), |
| 7183 | ), |
| 7184 | ) |
| 7185 | |
| 7186 | for coord, original_key in zip((actual.coords()), original.coords, strict=True): |
| 7187 | original_coord = original.coords[original_key] |
| 7188 | assert coord.var_name == original_coord.name |
| 7189 | assert_array_equal( |
| 7190 | coord.points, CFDatetimeCoder().encode(original_coord.variable).values |
| 7191 | ) |
| 7192 | assert actual.coord_dims(coord) == original.get_axis_num( |
| 7193 | original.coords[coord.var_name].dims |
| 7194 | ) |
| 7195 | |
| 7196 | assert ( |
nothing calls this directly
no test coverage detected