@sh.add_function(dsp, outputs=['resampled'])
def resample_data(labels, reference_name, data, shifts, methods):
"""
Resample all data-sets using the reference signal.
:param labels:
Reference-labels (i.e., "x", "y") for each data-set.
It is like `{"<set-name>": {"x": "<x-label>", "y": "<y-label>"}, ...}`.
:type labels: collections.defaultdict
:param reference_name:
Reference data-set name.
:type reference_name: str
:param data:
Data-sets.
:type data: dict[str, dict[str, numpy.array]]
:param shifts:
Shifts from the reference data-set.
:type shifts: dict[str, float]
:param methods:
Interpolation methods for each variable of each data-set.
It is like `{"<set-name>": {"<var-name>": "<interp>", ...}, ...}`.
:type methods: collections.defaultdict
:return:
Resampled data-sets.
:rtype: dict[str, dict[str, numpy.array]]
"""
x = data[reference_name][labels[reference_name]['x']]
r, res = {reference_name: data[reference_name]}, {}
for k, s in shifts.items():
r[k] = _interpolate(x + s, labels[k]['x'], data[k], methods[k])
for (i, j), v in sh.stack_nested_keys(r):
j = sh.stlp(j)
sh.get_nested_dicts(res, i, *j[:-1])[j[-1]] = v
return res