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()