Beispiel #1
0
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
Beispiel #2
0
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))
Beispiel #3
0
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,
Beispiel #6
0
 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']