Source code for piel.analysis.signals.time.integration.extract_pulse_metrics

from typing import List, Optional

from piel.types import TimeSignalData, ScalarMetricCollection
from piel.analysis.signals.time.core.split import extract_pulses_from_signal
from piel.analysis.signals.time.core.metrics import extract_peak_to_peak_metrics_list


[docs] def extract_peak_to_peak_metrics_after_split_pulses( full_signal: TimeSignalData, pre_pulse_time_s: float = 1e-9, post_pulse_time_s: float = 1e-9, noise_std_multiplier: float = 3.0, min_pulse_height: Optional[float] = None, min_pulse_distance_s: Optional[float] = None, data_time_signal_kwargs: Optional[dict] = None, metrics_kwargs: Optional[dict] = None, ) -> ScalarMetricCollection: """ Extracts pulses from the full signal and computes peak-to-peak metrics. Parameters: - full_signal (TimeSignalData): The complete time signal data to be analyzed. - pre_pulse_time_s (float): Time in seconds before the pulse to include. - post_pulse_time_s (float): Time in seconds after the pulse to include. - noise_std_multiplier (float): Multiplier for noise standard deviation to detect pulses. - min_pulse_height (Optional[float]): Minimum height of a pulse to be considered. - min_pulse_distance_s (Optional[float]): Minimum distance in seconds between pulses. - data_time_signal_kwargs (Optional[dict]): Additional keyword arguments for pulse extraction. - metrics_kwargs (Optional[dict]): Additional keyword arguments for metric extraction. Returns: - ScalarMetricCollection: Collection of extracted scalar metrics. """ try: # Extract pulses from the full signal pulses: List[TimeSignalData] = extract_pulses_from_signal( full_data=full_signal, pre_pulse_time_s=pre_pulse_time_s, post_pulse_time_s=post_pulse_time_s, noise_std_multiplier=noise_std_multiplier, min_pulse_height=min_pulse_height, min_pulse_distance_s=min_pulse_distance_s, data_time_signal_kwargs=data_time_signal_kwargs, ) # print(len(pulses)) # Extract peak-to-peak metrics from the pulses metrics: ScalarMetricCollection = extract_peak_to_peak_metrics_list( multi_data_time_signal=pulses, **(metrics_kwargs or {}) ) except Exception as e: print(e) metrics = ScalarMetricCollection() return metrics