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

95 lines
5.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import numpy as np
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()
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#-------------------------------- 创建空值清理函数 ------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
def ecg_clean_nan():
#在绘图中出现索引问题经排查发现waves_dwt['ECG_P_Onsets']中含有nan,故先滤掉 NaN 值
# 处理 waves_dwt['ECG_P_Onsets']
ecg_p_onsets = waves_dwt['ECG_P_Onsets'] # 获取 ECG_P_Onsets 对应的值
ecg_p_onsets_cleaned = [x for x in ecg_p_onsets if not np.isnan(x)] # 使用列表推导式过滤掉 NaN 值
waves_dwt['ECG_P_Onsets'] = ecg_p_onsets_cleaned # 将清理后的结果重新赋值给 waves_dwt
# 处理 waves_dwt['ECG_P_Offsets']
ecg_p_offsets = waves_dwt['ECG_P_Offsets']
ecg_p_offsets_cleaned = [x for x in ecg_p_offsets if not np.isnan(x)]
waves_dwt['ECG_P_Offsets'] = ecg_p_offsets_cleaned
# 处理 waves_dwt['ECG_T_Onsets']
ecg_t_onsets = waves_dwt['ECG_T_Onsets']
ecg_t_onsets_cleaned = [x for x in ecg_t_onsets if not np.isnan(x)]
waves_dwt['ECG_T_Onsets'] = ecg_t_onsets_cleaned
# 处理 waves_dwt['ECG_T_Offsets']
ecg_t_offsets = waves_dwt['ECG_T_Offsets']
ecg_t_offsets_cleaned = [x for x in ecg_t_offsets if not np.isnan(x)]
waves_dwt['ECG_T_Offsets'] = ecg_t_offsets_cleaned
# 处理 waves_dwt['ECG_P_Peaks']
ecg_p_peaks = waves_dwt['ECG_P_Peaks']
ecg_p_peaks_cleaned = [x for x in ecg_p_peaks if not np.isnan(x)]
waves_dwt['ECG_P_Peaks'] = ecg_p_peaks_cleaned
# 处理 waves_dwt['ECG_Q_Peaks']
ecg_q_peaks = waves_dwt['ECG_Q_Peaks']
ecg_q_peaks_cleaned = [x for x in ecg_q_peaks if not np.isnan(x)]
waves_dwt['ECG_Q_Peaks'] = ecg_q_peaks_cleaned
# 处理 rpeaks['ECG_R_Peaks']
ecg_r_peaks = rpeaks['ECG_R_Peaks']
ecg_r_peaks_cleaned = [x for x in ecg_r_peaks if not np.isnan(x)]
rpeaks['ECG_R_Peaks'] = ecg_r_peaks_cleaned
# 处理 waves_dwt['ECG_S_Peaks']
ecg_s_peaks = waves_dwt['ECG_S_Peaks']
ecg_s_peaks_cleaned = [x for x in ecg_s_peaks if not np.isnan(x)]
waves_dwt['ECG_S_Peaks'] = ecg_s_peaks_cleaned
# 处理 waves_dwt['ECG_T_Peaks']
ecg_t_peaks = waves_dwt['ECG_T_Peaks']
ecg_t_peaks_cleaned = [x for x in ecg_t_peaks if not np.isnan(x)]
waves_dwt['ECG_T_Peaks'] = ecg_t_peaks_cleaned
return (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'])
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#-------------------------------- 调用函数 ----------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------
if __name__ == "__main__":
ecg_clean_nan()