76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
|
|
import numpy as np
|
|
|
|
from global_var import global_var_init
|
|
cycle, fs_ecg, fs_ppg, record_name, record_name_csv = 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_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()
|
|
|
|
def compute_interval():
|
|
|
|
time_interval = 1/fs_ecg
|
|
|
|
# 获取各特征的时间点
|
|
P_onsets_time = np.array(P_onsets) * time_interval
|
|
P_peaks_time = np.array(P_peaks) * time_interval
|
|
P_offsets_time = np.array(P_offsets) * time_interval
|
|
Q_peaks_time = np.array(Q_peaks) * time_interval
|
|
R_peaks_time = np.array(R_peaks) * time_interval
|
|
S_peaks_time = np.array(S_peaks) * time_interval
|
|
T_onsets_time = np.array(T_onsets) * time_interval
|
|
T_peaks_time = np.array(T_peaks) * time_interval
|
|
T_offsets_time = np.array(T_offsets) * time_interval
|
|
|
|
# 创建一个字典来存储所有的特征点
|
|
features = {
|
|
"P_onset": P_onsets_time,
|
|
"P": P_peaks_time,
|
|
"P_offset": P_offsets_time,
|
|
"Q": Q_peaks_time,
|
|
"R": R_peaks_time,
|
|
"S": S_peaks_time,
|
|
"T_onset": T_onsets_time,
|
|
"T": T_peaks_time,
|
|
"T_offset": T_offsets_time
|
|
}
|
|
|
|
# 遍历 features 字典并打印每个键对应的时间序列长度(用于测试)
|
|
for label, times in features.items():
|
|
print(f"{label}: {len(times)}")
|
|
|
|
# 计算每对特征点之间的时间间隔
|
|
intervals_ecg = {}
|
|
for start_label, start_times in features.items():
|
|
for end_label, end_times in features.items():
|
|
# 避免重复计算相同的比值
|
|
if start_label != end_label:
|
|
interval_label = f"{start_label}-{end_label}"
|
|
intervals_ecg[interval_label] = end_times - start_times
|
|
|
|
# 单独计算P_onset-P_offset/T_onset-T_offset
|
|
ratio_pp_tt = [p / t for p, t in zip(intervals_ecg['P_onset-P_offset'], intervals_ecg['T_onset-T_offset'])]
|
|
|
|
# 输出间隔时间
|
|
# for key, value in intervals_ecg.items():
|
|
# print(f"{key} 的间隔时间:", value)
|
|
|
|
return intervals_ecg, ratio_pp_tt
|
|
|
|
if __name__ == "__main__":
|
|
compute_interval() |