Spaces:
Running on Zero
Running on Zero
| import numpy as np | |
| from scipy.interpolate import interp1d | |
| def _extrapolating_linear_interp1d(a, b, safe=True): | |
| if safe: | |
| if isinstance(a, np.ndarray): | |
| a = a.tolist() | |
| if isinstance(b, np.ndarray): | |
| b = b.tolist() | |
| if a != sorted(a): | |
| raise ValueError() | |
| if b != sorted(b): | |
| raise ValueError() | |
| if len(a) != len(b): | |
| raise ValueError() | |
| if len(np.unique(a)) != len(a): | |
| raise ValueError() | |
| if len(np.unique(b)) != len(b): | |
| raise ValueError() | |
| return interp1d(a, b, kind="linear", fill_value="extrapolate") | |
| def create_beat_to_time_fn(beats, times, safe=True): | |
| return _extrapolating_linear_interp1d(beats, times, safe=safe) | |
| def create_time_to_beat_fn(beats, times, safe=True): | |
| return _extrapolating_linear_interp1d(times, beats, safe=safe) | |