115 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| from ecg_peaks_val import ecg_peaks_val
 | |
| (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) = ecg_peaks_val()
 | |
| 
 | |
| from ecg_calculate_areas import ecg_areas_calculate
 | |
| ecg_areas, P_areas, T_areas, QRS_areas = ecg_areas_calculate()
 | |
| 
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #------------------------                    计算比值                 ------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| #--------------------------------------------------------------------------------------------------------
 | |
| 
 | |
| def ratio_calculate():
 | |
| 
 | |
|     # 创建一个存储波峰纵坐标的字典
 | |
|     peaks_values = {
 | |
|         "P_peaks_values": P_peaks_values,
 | |
|         "Q_peaks_values": Q_peaks_values,
 | |
|         "R_peaks_values": R_peaks_values,
 | |
|         "S_peaks_values": S_peaks_values,
 | |
|         "T_peaks_values": T_peaks_values,
 | |
|         "P_onset_values": P_onsets_values,
 | |
|         "P_offset_values": P_offsets_values,
 | |
|         "T_onset_values": T_onsets_values,
 | |
|         "T_offset_values": T_offsets_values,
 | |
|     }
 | |
| 
 | |
| 
 | |
|     # 初始化一个空字典来存储波峰比值
 | |
|     peak_ratios = {}
 | |
| 
 | |
|     # 计算每对波峰的比值
 | |
|     for start_label, start_values in peaks_values.items():
 | |
|         for end_label, end_values in peaks_values.items():
 | |
|             # 避免重复计算相同的比值
 | |
|             if start_label != end_label:
 | |
|                 ratio_label = f"{start_label}/{end_label}"
 | |
|                 # 初始化比值列表和上一个有效比值
 | |
|                 ratio_values = []
 | |
|                 last_valid_ratio = None  # 用于存储上一个有效的比值
 | |
| 
 | |
|                 # 使用zip同时遍历start_values和end_values
 | |
|                 for start_val, end_val in zip(start_values, end_values):
 | |
|                     if end_val != 0:
 | |
|                         # 如果分母不为零,计算当前比值
 | |
|                         current_ratio = start_val / end_val
 | |
|                         ratio_values.append(current_ratio)
 | |
|                         last_valid_ratio = current_ratio  # 更新上一个有效比值
 | |
|                     else:
 | |
|                         # 如果分母为零,使用上一个有效比值
 | |
|                         if last_valid_ratio is not None:
 | |
|                             ratio_values.append(last_valid_ratio)
 | |
|             
 | |
|                 peak_ratios[ratio_label] = ratio_values
 | |
| 
 | |
| 
 | |
|     # #输出每对波峰的比值
 | |
|     # for key, value in peak_ratios.items():
 | |
|     #     print(f"{key} 的峰值比值:", value)
 | |
| 
 | |
| 
 | |
|     # 创建一个存储面积的字典
 | |
|     areas_values = {
 | |
|         "ecg_areas": ecg_areas,
 | |
|         "P_areas": P_areas,
 | |
|         "T_areas": T_areas,
 | |
|         "QRS_areas": QRS_areas,
 | |
| 
 | |
|     }
 | |
| 
 | |
|     # 初始化一个空字典来存储面积比值
 | |
|     areas_ratios = {}
 | |
| 
 | |
|     # 计算每对面积的比值
 | |
|     for start_label, start_values in areas_values.items():
 | |
|         for end_label, end_values in areas_values.items():
 | |
|             # 避免重复计算相同的比值
 | |
|             if start_label != end_label:
 | |
|                 ratio_label = f"{start_label}/{end_label}"
 | |
|                 # 初始化比值列表和上一个有效比值
 | |
|                 ratio_values_2 = []
 | |
|                 last_valid_ratio = None  # 用于存储上一个有效的比值
 | |
| 
 | |
|                 # 使用zip同时遍历start_values和end_values
 | |
|                 for start_val, end_val in zip(start_values, end_values):
 | |
|                     if end_val != 0:
 | |
|                         # 如果分母不为零,计算当前比值
 | |
|                         current_ratio = start_val / end_val
 | |
|                         ratio_values_2.append(current_ratio)
 | |
|                         last_valid_ratio = current_ratio  # 更新上一个有效比值
 | |
|                     else:
 | |
|                         # 如果分母为零,使用上一个有效比值
 | |
|                         if last_valid_ratio is not None:
 | |
|                             ratio_values_2.append(last_valid_ratio)
 | |
| 
 | |
|                 areas_ratios[ratio_label] = ratio_values_2
 | |
|     
 | |
|     # #输出每对波峰的比值
 | |
|     # for key, value in areas_ratios.items():
 | |
|     #     print(f"{key} 的比值:", value)
 | |
| 
 | |
|     return peak_ratios, areas_ratios
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     ratio_calculate()
 |