Source code for pymt.services.gridreader.interpolate
from collections import defaultdict
from scipy import interpolate
from .time_series_names import sort_time_series_names
[docs]def get_time_series_values(field, ordering="ascending", prefix=""):
values = defaultdict(list)
names = sort_time_series_names(field, ordering=ordering, prefix=prefix)
for var_name, ordered_names in names.items():
for name in ordered_names:
values[var_name].append(field.get_values(name))
return values
[docs]def get_field_values(fields, names):
values = []
for name in names:
values.append(fields.get_values(name))
return values
[docs]def create_interpolators(times, fields, prefix="", kind="linear"):
interpolators = {}
names = sort_time_series_names(fields.keys(), prefix=prefix, ordering="ascending")
for var_name, ordered_names in names.items():
interpolators[var_name] = create_interpolator(
fields, zip(ordered_names, times), kind=kind
)
return interpolators
[docs]def create_interpolator(fields, time_stamps, kind="linear"):
names, times = zip(*time_stamps)
values = get_field_values(fields, names)
return interpolate.interp1d(times, values, axis=0, kind=kind)