def _set_snapshot_clock(self, dim, data=None, start=0., end=None,
step=None, nsteps=None, auto_adjust=True):
if self.master_clock_dim is None:
raise ValueError("no master clock dimension/coordinate is defined "
"in Dataset. "
"Use `Dataset.xsimlab._set_master_clock` first")
clock_data = self._set_clock_data(dim, data, start, end, step, nsteps)
da_master_clock = self._obj[self.master_clock_dim]
if auto_adjust:
kwargs = {'method': 'nearest'}
else:
kwargs = {}
indexer = {self.master_clock_dim: clock_data}
kwargs.update(indexer)
da_snapshot_clock = da_master_clock.sel(**kwargs)
self._obj[dim] = da_snapshot_clock.rename({self.master_clock_dim: dim})
# .sel copies variable attributes
self._obj[dim].attrs.pop(self._master_clock_key)
for attr_name in ('units', 'calendar'):
attr_value = da_master_clock.attrs.get(attr_name)
if attr_value is not None:
self._obj[dim].attrs[attr_name] = attr_value
评论列表
文章目录