Skip to content

Commit f1788c1

Browse files
authored
add coordinates attribute (#37)
1 parent d000be7 commit f1788c1

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

tests/test_20_open_dataset.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,15 @@ def test_open_dataset(tmp_path: Path, index_node: str, download: bool) -> None:
7474
)
7575

7676
# Data vars
77-
assert set(ds.data_vars) == {"tas", "pr"}
77+
assert set(ds.data_vars) == {"pr", "tas"}
78+
assert ds["pr"].coordinates == "areacella experiment_id height lat lon time"
79+
assert ds["tas"].coordinates == "areacella experiment_id height lat lon time"
7880

7981
# Attributes
82+
assert (
83+
ds.coordinates
84+
== "areacella experiment_id height lat lat_bnds lon lon_bnds time time_bnds"
85+
)
8086
assert ds.dataset_ids == [
8187
"CMIP6.ScenarioMIP.EC-Earth-Consortium.EC-Earth3-CC.ssp245.r1i1p1f1.Amon.pr.gr.v20210113",
8288
"CMIP6.ScenarioMIP.EC-Earth-Consortium.EC-Earth3-CC.ssp245.r1i1p1f1.Amon.tas.gr.v20210113",

xarray_esgf/client.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ def combine_datasets(datasets: list[Dataset]) -> Dataset:
5454
return obj
5555

5656

57+
def add_coordinates_attr_inplace(obj: Dataset | DataArray) -> None:
58+
obj.attrs["coordinates"] = " ".join(sorted(str(coord) for coord in obj.coords))
59+
if isinstance(obj, Dataset):
60+
for da in obj.data_vars.values():
61+
add_coordinates_attr_inplace(da)
62+
63+
5764
@dataclasses.dataclass
5865
class Client:
5966
selection: dict[str, str | list[str]]
@@ -205,6 +212,6 @@ def open_dataset(
205212
if name not in obj.dims:
206213
var.encoding["preferred_chunks"] = dict(var.chunksizes)
207214

215+
add_coordinates_attr_inplace(obj)
208216
obj.attrs["dataset_ids"] = sorted(combined_datasets)
209-
210217
return obj

0 commit comments

Comments
 (0)