systole.utils.to_epochs#
- systole.utils.to_epochs(signal: Union[List, ndarray], triggers: Optional[Union[List, ndarray]] = None, triggers_idx: Optional[Union[List, ndarray]] = None, sfreq: int = 1000, tmin: float = -1.0, tmax: float = 10.0, event_val: int = 1, apply_baseline: Optional[Union[float, Tuple[float, float]]] = 0.0, verbose: bool = False, reject: Optional[ndarray] = None) Tuple[List[ndarray], List[ndarray]][source]#
- Epoch signal based on event triggers. - Parameters
- signal
- The raw signal that should be epoched. The first dimension is time and should match with len(triggers) if triggers is provided. If triggers_idx is provided, np.max(triggers_idx) should be less than signal.shape[0]. 
- triggers
- The boolean indices of the events, shape=(times*sfreq, 1). 
- triggers_idx
- Trigger indexes. Each value encode the sample where an event occured (see also sfreq). Different conditions should be provided separately as list of arrays (can have different lenght). 
- sfreq
- The sampling frequency (default is 1000 Hz). 
- tmin
- Start time before event, in seconds, default is -1.0. 
- tmax
- End time after event, in seconds, defautl is 10.0. 
- event_val
- The index of event of interest. Default is 1. Only relevant if triggers is not None. 
- apply_baseline
- If int or tuple, use the point or interval to apply a baseline (method: mean). If None, no baseline is applied. Default is set to 0. 
- verbose
- If True, will return warnings if epoc are droped. 
- reject
- Segments of the signal that should be rejected. 
 
- Returns
- epochs
- List of (n Tials * Time) array. 
- reject
- List of rejected trials for each condition. 
 
 - Examples - # Load dataset - >>> ecg_df = import_dataset1(modalities=['ECG', 'Stim']) - >>> triggers_idx = [ >>> np.where(ecg_df.stim.to_numpy() == 2)[0], >>> np.where(ecg_df.stim.to_numpy() == 1)[0] >>> ] >>> signal = ecg_df.ecg.to_numpy() - # Using event idx - >>> epoch, rejected = to_epochs(signal=signal, triggers_idx=triggers_idx) - # Using event triggers - >>> epoch, rejected = to_epochs(signal=signal, triggers=ecg_df.stim.to_numpy(), >>> event_val=2, apply_baseline=(-1.0, 0.0)) - # Using a rejection vector >>> reject = np.zeros(len(signal)) >>> reject[768285:] = 1 # Reject the second part of the recording >>> epoch, rejected = to_epochs( >>> signal=signal, triggers=ecg_df.stim.to_numpy(), event_val=2, >>> apply_baseline=(-1.0, 0.0), reject=reject >>> )