def test_bio_analyze(): # Example with event-related analysis data = nk.data("bio_eventrelated_100hz") df, info = nk.bio_process(ecg=data["ECG"], rsp=data["RSP"], eda=data["EDA"], keep=data["Photosensor"], sampling_rate=100) events = nk.events_find( data["Photosensor"], threshold_keep="below", event_conditions=["Negative", "Neutral", "Neutral", "Negative"]) epochs = nk.epochs_create(df, events, sampling_rate=100, epochs_start=-0.1, epochs_end=1.9) event_related = nk.bio_analyze(epochs) assert len(event_related) == len(epochs) labels = [int(i) for i in event_related["Label"]] assert labels == list(np.arange(1, len(epochs) + 1)) # Example with interval-related analysis data = nk.data("bio_resting_8min_100hz") df, info = nk.bio_process(ecg=data["ECG"], rsp=data["RSP"], eda=data["EDA"], sampling_rate=100) interval_related = nk.bio_analyze(df) assert len(interval_related) == 1
def test_bio_analyze(): # Example with event-related analysis data = nk.data("bio_eventrelated_100hz") df, info = nk.bio_process(ecg=data["ECG"], rsp=data["RSP"], eda=data["EDA"], keep=data["Photosensor"], sampling_rate=100) events = nk.events_find( data["Photosensor"], threshold_keep='below', event_conditions=["Negative", "Neutral", "Neutral", "Negative"]) epochs = nk.epochs_create(df, events, sampling_rate=100, epochs_start=-0.1, epochs_end=1.9) event_related = nk.bio_analyze(epochs) assert len(event_related) == len(epochs) labels = [int(i) for i in event_related['Label']] assert labels == list(np.arange(1, len(epochs) + 1)) assert all(elem in [ 'ECG_Rate_Max', 'ECG_Rate_Min', 'ECG_Rate_Mean', 'ECG_Rate_Max_Time', 'ECG_Rate_Min_Time', 'ECG_Rate_Trend_Quadratic', 'ECG_Rate_Trend_Linear', 'ECG_Rate_Trend_R2', 'ECG_Atrial_Phase', 'ECG_Atrial_PhaseCompletion', 'ECG_Ventricular_Phase', 'ECG_Ventricular_PhaseCompletion', 'ECG_Quality_Mean', 'RSP_Rate_Max', 'RSP_Rate_Min', 'RSP_Rate_Mean', 'RSP_Rate_Max_Time', 'RSP_Rate_Min_Time', 'RSP_Amplitude_Max', 'RSP_Amplitude_Min', 'RSP_Amplitude_Mean', 'RSP_Phase', 'RSP_PhaseCompletion', 'EDA_SCR', 'EDA_Peak_Amplitude', 'SCR_Peak_Amplitude', 'SCR_Peak_Amplitude_Time', 'SCR_RiseTime', 'SCR_RecoveryTime', 'RSA_P2T', 'Label', 'Condition' ] for elem in np.array(event_related.columns.values, dtype=str)) # Example with interval-related analysis data = nk.data("bio_resting_8min_100hz") df, info = nk.bio_process(ecg=data["ECG"], rsp=data["RSP"], eda=data["EDA"], sampling_rate=100) interval_related = nk.bio_analyze(df) assert len(interval_related) == 1 assert all(elem in [ 'ECG_Rate_Mean', 'HRV_RMSSD', 'HRV_MeanNN', 'HRV_SDNN', 'HRV_SDSD', 'HRV_CVNN', 'HRV_CVSD', 'HRV_MedianNN', 'HRV_MadNN', 'HRV_MCVNN', 'HRV_pNN50', 'HRV_pNN20', 'HRV_TINN', 'HRV_HTI', 'HRV_ULF', 'HRV_VLF', 'HRV_LF', 'HRV_HF', 'HRV_VHF', 'HRV_LFHF', 'HRV_LFn', 'HRV_HFn', 'HRV_LnHF', 'HRV_SD1', 'HRV_SD2', 'HRV_SD2SD1', 'HRV_CSI', 'HRV_CVI', 'HRV_CSI_Modified', 'HRV_SampEn', 'RSP_Rate_Mean', 'RSP_Amplitude_Mean', 'RRV_SDBB', 'RRV_RMSSD', 'RRV_SDSD', 'RRV_VLF', 'RRV_LF', 'RRV_HF', 'RRV_LFHF', 'RRV_LFn', 'RRV_HFn', 'RRV_SD1', 'RRV_SD2', 'RRV_SD2SD1', 'RRV_ApEn', 'RRV_SampEn', 'RRV_DFA', 'RSA_P2T_Mean', 'RSA_P2T_Mean_log', 'RSA_P2T_SD', 'RSA_P2T_NoRSA', 'RSA_PorgesBohrer', 'SCR_Peaks_N', 'SCR_Peaks_Amplitude_Mean' ] for elem in np.array(interval_related.columns.values, dtype=str))
def get_12ECG_features(data, header_data): df = pd.DataFrame(data).T processed_data2, info2 = nk.bio_process(ecg=df[0], sampling_rate=500) results2 = nk.bio_analyze(processed_data2, sampling_rate=500) # results2['label'] = header_data[-4][5:-1] return results2.replace([pd.np.inf, -pd.np.inf], pd.np.NaN).fillna(0).values.flatten()
def loadRealdata(): # Download example data data = nk.data("bio_eventrelated_100hz") # Preprocess the data (filter, find peaks, etc.) processed_data, info = nk.bio_process(ecg=data["ECG"], rsp=data["RSP"], eda=data["EDA"], sampling_rate=100) # Compute relevant features results = nk.bio_analyze(processed_data, sampling_rate=100)
# ============================================================================= # Quick Example # ============================================================================= # Download example data data = nk.data("bio_eventrelated_100hz") # Preprocess the data (filter, find peaks, etc.) processed_data, info = nk.bio_process(ecg=data["ECG"], rsp=data["RSP"], eda=data["EDA"], sampling_rate=100) # Compute relevant features results = nk.bio_analyze(processed_data, sampling_rate=100) # ============================================================================= # Simulate physiological signals # ============================================================================= # Generate synthetic signals ecg = nk.ecg_simulate(duration=10, heart_rate=70) ppg = nk.ppg_simulate(duration=10, heart_rate=70) rsp = nk.rsp_simulate(duration=10, respiratory_rate=15) eda = nk.eda_simulate(duration=10, scr_number=3) emg = nk.emg_simulate(duration=10, burst_number=2) # Visualise biosignals data = pd.DataFrame({ "ECG": ecg,
ppg_signals, ppg_info = nk.bio_process( ppg=df_bvp, sampling_rate=BVP_HZ) # create epochs ppg_epochs_end = sc_duration if ( sc_duration - EPOCH_START) <= EPOCH_DURATION else ( EPOCH_START + EPOCH_DURATION) ppg_epochs = nk.epochs_create( ppg_signals, bvp_events, sampling_rate=BVP_HZ, epochs_start=EPOCH_START, epochs_end=ppg_epochs_end) ppg_epoch = ppg_epochs['1'] # analyze event-related features of EDA signals ppg_analysis = nk.bio_analyze( ppg_epochs, method="event-related") print(ppg_analysis) exit() # describe BVP peak results df_bvp_peak_desc = ppg_epoch.loc[ ppg_epoch['PPG_Peaks'] > 0, 'PPG_Clean'].describe() bvp_peak_count = df_bvp_peak_desc['count'] row['BVP_Peak_Count'] = bvp_peak_count bvp_peak_mean = df_bvp_peak_desc['mean'] row['BVP_Peak_Mean'] = bvp_peak_mean bvp_peak_std = df_bvp_peak_desc['std'] row['BVP_Peak_SD'] = bvp_peak_std bvp_peak_max = df_bvp_peak_desc['max'] row['BVP_Peak_Max'] = bvp_peak_max bvp_peak_min = df_bvp_peak_desc['min']