I thought I had seen an issue along those lines, but I think I searched ‘coordinates’ and ‘exception’ (as technically I’m selecting a non-dimension coordinate in one case) so I didn’t find that one. dt.sel(time=dt, errors="ignore") would work great. I’ve got some more ideas that I’ll continue in the issue.
A method like .concat_child_datasets would also be helpful. Between those two it could simplify two of my methods from.
def constant_offset(self, offset: Union[str, int, float, timedelta]) -> xr.Dataset:
timedelta = pd.to_timedelta(offset)
filtered_ds = []
for child in self.datatree_obj["model_run"].children.values():
try:
selected = child.ds.sel(forecast_offset=timedelta)
filtered_ds.append(selected)
except KeyError:
pass
combined = xr.concat(filtered_ds, "time")
combined = combined.sortby("time")
return combined
to
def constant_offset(self, offset: Union[str, int, float, timedelta]) -> xr.Dataset:
return self.datatree_obj["model_run"].sel(forecast_offset=offset).concat_child_datasets("time").sortby("time")
I think it could allow other datatrees with similarly really closely related but non-alignable datasets to be quickly collapsed into aligned datasets with less boilerplate.