Source code for piel.analysis.signals.time.core.transform

import numpy as np
from piel.types import MultiTimeSignalData, TimeSignalData


[docs] def offset_time_signals(multi_signal: MultiTimeSignalData) -> MultiTimeSignalData: """ Offsets the time_s array of each TimeSignalData in the MultiTimeSignalData to start at 0. Args: multi_signal (MultiTimeSignalData): List of rising edge signals. Returns: MultiTimeSignalData: New list with offset time_s arrays. """ offset_signals = [] for signal in multi_signal: if not signal.time_s: raise ValueError(f"Signal '{signal.data_name}' has an empty time_s array.") # Convert to numpy arrays for efficient computation time = np.array(signal.time_s) data = np.array(signal.data) # Calculate the offset (start time) offset = time[0] # Apply the offset offset_time = time - offset # Create a new TimeSignalData instance with the offset time offset_signal = TimeSignalData( time_s=offset_time.tolist(), data=data.tolist(), data_name=signal.data_name ) offset_signals.append(offset_signal) return offset_signals