science_signal/src/science_signal/__init__.py
2024-05-26 23:15:13 +02:00

51 lines
1.3 KiB
Python

from numpy.typing import NDArray
from numpy import arange, float64
from gettext import install
install("science_signal")
def interpolate_abciss(*signals: "Signal") -> NDArray[float64]:
"""
Give the smallest common range with the highest rate
"""
sampling: float = min([signal.sampling for signal in signals])
start: float = max([signal.x[0] for signal in signals])
stop: float = min([signal.x[-1] for signal in signals])
return arange(start, stop, sampling)
def interpolate(*signals: "Signal") -> tuple["Signal", ...]:
"""
Return each signal with a common frequency/time range (smallest
range and highest rate)
"""
splines = [signal.spline() for signal in signals]
x_range = interpolate_abciss(*signals)
return tuple(
[
Signal(x_range, spline(x_range).view(float64))
for spline in splines
]
)
def to_signal(variable: NDArray[float64]):
"""
Convert variable to Signal
"""
if variable.shape[0] != 2 or len(variable.shape) != 2:
raise Exception(
_(
"cannot convert an array with a shape different than (2, n)"
)
)
return Signal(
variable[0],
variable[1],
)
from science_signal.signal import Signal