Source code for neurokit2.eda.eda_changepoints

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd

from ..signal import signal_changepoints


[docs]def eda_changepoints(eda_cleaned): """Calculate the number of change points using of the skin conductance signal in terms of mean and variance. Defaults to an algorithm penalty of 10000, as recommended by Halem et al. (2020). Parameters ---------- eda_cleaned : Union[list, np.array, pd.Series] The cleaned EDA signal. Returns ------- float Number of changepoints in the See Also -------- eda_simulate Examples --------- >>> import neurokit2 as nk >>> >>> # Simulate EDA signal >>> eda_signal = nk.eda_simulate(duration=5, scr_number=5, drift=0.1) >>> eda_cleaned = nk.eda_clean(eda_signal) >>> changepoints = nk.eda_changepoints(eda_cleaned) >>> changepoints #doctest: +SKIP References ----------- - Halem, S., van Roekel, E., Kroencke, L., Kuper, N., & Denissen, J. (2020). Moments That Matter? On the Complexity of Using Triggers Based on Skin Conductance to Sample Arousing Events Within an Experience Sampling Framework. European Journal of Personality. """ # Sanity checks if not isinstance(eda_cleaned, np.ndarray): if isinstance(eda_cleaned, pd.DataFrame): colnames = eda_cleaned.columns.values if len([i for i in colnames if "EDA_Clean" in i]) == 0: raise ValueError( "NeuroKit warning: eda_changepoints(): Your input does not contain the cleaned EDA signal." ) else: eda_cleaned = eda_cleaned["EDA_Clean"] eda_cleaned = np.array(eda_cleaned) # Calculate changepoints based on mean and variance changepoints = signal_changepoints(eda_cleaned, change="meanvar", show=False, penalty=10000) number = len(changepoints) return number