Files
Feature-Extraction/ecg_peaks_val.py
2025-10-20 22:01:18 +08:00

98 lines
4.1 KiB
Python

import statistics
from global_var import global_var_init
cycle, fs, record_name, data_path = global_var_init()
from processing import processing
(signal_dwt , waves_dwt , rpeaks , ecg_signal,
signal, signal.v, signal.fs, rows_to_extract, t_ecg, t_ppg,
on_column_list, on_column_list_toArea, on_values, on_values_toArea,
sp_column_list, sp_values, dn_column_list, dn_values, dp_column_list,
dp_values, u_column_list, u_column_list_toArea, u_values, u_values_toArea,
v_column_list, v_values, w_column_list, w_values, a_column_list, a_column_list_toArea,
a_values, a_values_toArea, b_column_list, b_values, c_column_list, c_values,
e_column_list, e_values, f_column_list, f_values,
signal.ppg, signal.vpg, signal.apg, signal.jpg) = processing()
from ecg_clean_nan import ecg_clean_nan
(waves_dwt['ECG_P_Onsets'],waves_dwt['ECG_P_Offsets'],waves_dwt['ECG_T_Onsets'],
waves_dwt['ECG_T_Offsets'],waves_dwt['ECG_P_Peaks'] ,waves_dwt['ECG_Q_Peaks'],
rpeaks['ECG_R_Peaks'],waves_dwt['ECG_S_Peaks'],waves_dwt['ECG_T_Peaks']) = ecg_clean_nan()
directory=f"D://python_study//big_boss//doc//points_coordinates_update//{record_name}//ECG//"
data_ECG = {
'ECG_P_Onsets': waves_dwt['ECG_P_Onsets'],
'ECG_P_Offsets': waves_dwt['ECG_P_Offsets'],
'ECG_T_Onsets': waves_dwt['ECG_T_Onsets'],
'ECG_T_Offsets': waves_dwt['ECG_T_Offsets'],
'ECG_P_Peaks': waves_dwt['ECG_P_Peaks'],
'ECG_Q_Peaks': waves_dwt['ECG_Q_Peaks'],
'ECG_R_Peaks': rpeaks['ECG_R_Peaks'],
'ECG_S_Peaks': waves_dwt['ECG_S_Peaks'],
'ECG_T_Peaks': waves_dwt['ECG_T_Peaks']
}
from txt_update import update_dict_from_files
data_update_ECG = update_dict_from_files(data_ECG, directory)
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#------------------------ 得到点的横纵坐标及基线 ------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
def ecg_peaks_val():
P_peaks = data_update_ECG['ECG_P_Peaks']
P_peaks_values = [ecg_signal[idx] for idx in P_peaks]
Q_peaks = data_update_ECG['ECG_Q_Peaks']
Q_peaks_values = [ecg_signal[idx] for idx in Q_peaks]
R_peaks = data_update_ECG['ECG_R_Peaks']
R_peaks_values = [ecg_signal[idx] for idx in R_peaks]
S_peaks = data_update_ECG['ECG_S_Peaks']
S_peaks_values = [ecg_signal[idx] for idx in S_peaks]
T_peaks = data_update_ECG['ECG_T_Peaks']
T_peaks_values = [ecg_signal[idx] for idx in T_peaks]
P_onsets = data_update_ECG['ECG_P_Onsets']
P_onsets_values = [ecg_signal[idx] for idx in P_onsets]
P_offsets = data_update_ECG['ECG_P_Offsets']
P_offsets_values = [ecg_signal[idx] for idx in P_offsets]
T_onsets = data_update_ECG['ECG_T_Onsets']
T_onsets_values = [ecg_signal[idx] for idx in T_onsets]
T_offsets = data_update_ECG['ECG_T_Offsets']
T_offsets_values = [ecg_signal[idx] for idx in T_offsets]
# PQ基线
average_P = statistics.mean(P_peaks_values)
average_Q = statistics.mean(Q_peaks_values)
PQ_baseline = (average_P + average_Q) / 2
return (#横坐标
P_peaks, Q_peaks, R_peaks, S_peaks, T_peaks,
P_onsets, P_offsets, T_onsets, T_offsets,
#纵坐标
P_peaks_values, Q_peaks_values, R_peaks_values, S_peaks_values, T_peaks_values,
P_onsets_values, P_offsets_values, T_onsets_values, T_offsets_values,
PQ_baseline)
if __name__ == "__main__":
ecg_peaks_val()