(self)
| 7066 | class TestIrisConversion: |
| 7067 | @requires_iris |
| 7068 | def test_to_and_from_iris(self) -> None: |
| 7069 | import cf_units # iris requirement |
| 7070 | import iris |
| 7071 | |
| 7072 | # to iris |
| 7073 | coord_dict: dict[Hashable, Any] = {} |
| 7074 | coord_dict["distance"] = ("distance", [-2, 2], {"units": "meters"}) |
| 7075 | coord_dict["time"] = ("time", pd.date_range("2000-01-01", periods=3, unit="ns")) |
| 7076 | coord_dict["height"] = 10 |
| 7077 | coord_dict["distance2"] = ("distance", [0, 1], {"foo": "bar"}) |
| 7078 | coord_dict["time2"] = (("distance", "time"), [[0, 1, 2], [2, 3, 4]]) |
| 7079 | |
| 7080 | original = DataArray( |
| 7081 | np.arange(6, dtype="float").reshape(2, 3), |
| 7082 | coord_dict, |
| 7083 | name="Temperature", |
| 7084 | attrs={ |
| 7085 | "baz": 123, |
| 7086 | "units": "Kelvin", |
| 7087 | "standard_name": "fire_temperature", |
| 7088 | "long_name": "Fire Temperature", |
| 7089 | }, |
| 7090 | dims=("distance", "time"), |
| 7091 | ) |
| 7092 | |
| 7093 | # Set a bad value to test the masking logic |
| 7094 | original.data[0, 2] = np.nan |
| 7095 | |
| 7096 | original.attrs["cell_methods"] = "height: mean (comment: A cell method)" |
| 7097 | actual = original.to_iris() |
| 7098 | assert_array_equal(actual.data, original.data) |
| 7099 | assert actual.var_name == original.name |
| 7100 | assert tuple(d.var_name for d in actual.dim_coords) == original.dims |
| 7101 | assert actual.cell_methods == ( |
| 7102 | iris.coords.CellMethod( |
| 7103 | method="mean", |
| 7104 | coords=("height",), |
| 7105 | intervals=(), |
| 7106 | comments=("A cell method",), |
| 7107 | ), |
| 7108 | ) |
| 7109 | |
| 7110 | for coord, original_key in zip((actual.coords()), original.coords, strict=True): |
| 7111 | original_coord = original.coords[original_key] |
| 7112 | assert coord.var_name == original_coord.name |
| 7113 | assert_array_equal( |
| 7114 | coord.points, CFDatetimeCoder().encode(original_coord.variable).values |
| 7115 | ) |
| 7116 | assert actual.coord_dims(coord) == original.get_axis_num( |
| 7117 | original.coords[coord.var_name].dims |
| 7118 | ) |
| 7119 | |
| 7120 | assert ( |
| 7121 | actual.coord("distance2").attributes["foo"] |
| 7122 | == original.coords["distance2"].attrs["foo"] |
| 7123 | ) |
| 7124 | assert actual.coord("distance").units == cf_units.Unit( |
| 7125 | original.coords["distance"].units |
nothing calls this directly
no test coverage detected