95 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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() |