Skip to content

Commit 643e72c

Browse files
Update temporal.py to properly handle piControl simulations (#696)
* Update temporal.py to properly handle piControl simulations * pre-commit style fix * to ensure year to be int * Convert `self.dim` to a str to fix mypy warnings - Remove unused type ignore comments --------- Co-authored-by: Tom Vo <[email protected]>
1 parent 753a046 commit 643e72c

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

xcdat/temporal.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ def _averager(
815815
# it becomes obsolete after the data variable is averaged. When the
816816
# averaged data variable is added to the dataset, the new time dimension
817817
# and its associated coordinates are also added.
818-
ds = ds.drop_dims(self.dim) # type: ignore
818+
ds = ds.drop_dims(self.dim)
819819
ds[dv_avg.name] = dv_avg
820820

821821
if keep_weights:
@@ -847,7 +847,7 @@ def _set_data_var_attrs(self, data_var: str):
847847
dv = _get_data_var(self._dataset, data_var)
848848

849849
self.data_var = data_var
850-
self.dim = get_dim_coords(dv, "T").name
850+
self.dim = str(get_dim_coords(dv, "T").name)
851851

852852
if not _contains_datetime_like_objects(dv[self.dim]):
853853
first_time_coord = dv[self.dim].values[0]
@@ -1084,7 +1084,11 @@ def _drop_incomplete_djf(self, dataset: xr.Dataset) -> xr.Dataset:
10841084
ds[self.dim].dt.year.values[0],
10851085
ds[self.dim].dt.year.values[-1],
10861086
)
1087-
incomplete_seasons = (f"{start_year}-01", f"{start_year}-02", f"{end_year}-12")
1087+
incomplete_seasons = (
1088+
f"{int(start_year):04d}-01",
1089+
f"{int(start_year):04d}-02",
1090+
f"{int(end_year):04d}-12",
1091+
)
10881092

10891093
for year_month in incomplete_seasons:
10901094
try:
@@ -1115,9 +1119,7 @@ def _drop_leap_days(self, ds: xr.Dataset):
11151119
-------
11161120
xr.Dataset
11171121
"""
1118-
ds = ds.sel( # type: ignore
1119-
**{self.dim: ~((ds.time.dt.month == 2) & (ds.time.dt.day == 29))}
1120-
)
1122+
ds = ds.sel(**{self.dim: ~((ds.time.dt.month == 2) & (ds.time.dt.day == 29))})
11211123
return ds
11221124

11231125
def _average(self, ds: xr.Dataset, data_var: str) -> xr.DataArray:
@@ -1142,9 +1144,9 @@ def _average(self, ds: xr.Dataset, data_var: str) -> xr.DataArray:
11421144
time_bounds = ds.bounds.get_bounds("T", var_key=data_var)
11431145
self._weights = self._get_weights(time_bounds)
11441146

1145-
dv = dv.weighted(self._weights).mean(dim=self.dim) # type: ignore
1147+
dv = dv.weighted(self._weights).mean(dim=self.dim)
11461148
else:
1147-
dv = dv.mean(dim=self.dim) # type: ignore
1149+
dv = dv.mean(dim=self.dim)
11481150

11491151
dv = self._add_operation_attrs(dv)
11501152

0 commit comments

Comments
 (0)