修复事件位于末尾时,BCG长度不够的情况
This commit is contained in:
parent
cc74c0aa44
commit
563e4fab8f
@ -67,7 +67,9 @@ if __name__ == '__main__':
|
||||
|
||||
qualityRelabel = Quality_Relabel(all_path=all_path, sampNo=opt.sampNo, frequency=frequency,
|
||||
bcg_frequency=bcg_frequency,
|
||||
focus_event_list=focus_event_list)
|
||||
extend_second=opt.front_add_second + opt.back_add_second,
|
||||
focus_event_list=focus_event_list
|
||||
)
|
||||
|
||||
qualityRelabel.show_all_event(start_bcg_index=opt.start_bcg_index - 1,
|
||||
front_add_second=opt.front_add_second,
|
||||
|
@ -73,6 +73,7 @@ class Quality_Relabel:
|
||||
# assert len(color_cycle) == len(base_event) + 1, "基础事件数量与颜色数量不一致"
|
||||
|
||||
def __init__(self, all_path: List, sampNo: int, frequency: int = 100, bcg_frequency: int = 1000,
|
||||
extend_second: int = 0,
|
||||
channel_list: List[str] = ['Effort Tho', 'Effort Abd', 'SpO2', 'Flow Patient', 'Flow Patient'],
|
||||
focus_event_list: List[str] = ["Obstructive apnea"]):
|
||||
"""
|
||||
@ -95,6 +96,7 @@ class Quality_Relabel:
|
||||
self.focus_event_list = focus_event_list
|
||||
self.frequency = frequency
|
||||
self.bcg_frequency = bcg_frequency
|
||||
self.extend_second = extend_second
|
||||
|
||||
self.ecg_start_time = None
|
||||
|
||||
@ -116,7 +118,7 @@ class Quality_Relabel:
|
||||
self.signal_select = {}
|
||||
|
||||
self.check_channel()
|
||||
self.read_data(frequency, bcg_frequency)
|
||||
self.read_data(frequency, bcg_frequency, extend_second)
|
||||
self.read_event()
|
||||
self.read_artifact_label()
|
||||
|
||||
@ -148,8 +150,10 @@ class Quality_Relabel:
|
||||
self.ecg_start_time = file.getStartdatetime()
|
||||
|
||||
# 根据PSG记录长度生成事件表
|
||||
self.ecg_event_label = np.zeros(file.getFileDuration() * self.frequency)
|
||||
self.spo2_event_label = np.zeros(file.getFileDuration() * self.frequency)
|
||||
self.ecg_event_label = np.zeros(
|
||||
file.getFileDuration() * self.frequency + self.extend_second * self.frequency)
|
||||
self.spo2_event_label = np.zeros(
|
||||
file.getFileDuration() * self.frequency + self.extend_second * self.frequency)
|
||||
# 打印PSG信息
|
||||
file.file_info_long()
|
||||
|
||||
@ -191,10 +195,15 @@ class Quality_Relabel:
|
||||
signal2 = signal2[::int(bcg_frequency / frequency)]
|
||||
|
||||
# 根据心晓事件长度生成事件记录
|
||||
self.bcg_event_label = np.zeros(len(signal))
|
||||
self.bcg_event_label = np.zeros(len(signal) + self.extend_second * self.frequency)
|
||||
self.signal_select['orgdata'] = signal1
|
||||
self.signal_select['0.7lowpass_resp'] = signal2
|
||||
|
||||
for signal_key in self.signal_select.keys():
|
||||
self.signal_select[signal_key] = np.append(self.signal_select[signal_key],
|
||||
self.signal_select[signal_key].mean().astype(int).repeat(
|
||||
self.extend_second * self.frequency))
|
||||
|
||||
def read_event(self):
|
||||
bcg_label_path = self.BCG_Label_Path / f"export{self.sampNo}_all.csv"
|
||||
ecg_label_path = self.PSG_Label_Path / f"export{self.sampNo}.csv"
|
||||
@ -271,7 +280,7 @@ class Quality_Relabel:
|
||||
artifact_label_path = self.Artifact_Label_Path / f"Artifact_{self.sampNo}.txt"
|
||||
artifact_label = pd.read_csv(artifact_label_path, header=None).to_numpy().reshape(-1, 4)
|
||||
|
||||
self.artifact_event_label = np.zeros(len(self.bcg_event_label))
|
||||
self.artifact_event_label = np.zeros(len(self.bcg_event_label) + self.extend_second * self.frequency)
|
||||
|
||||
for i, artifact_type, SP, EP in artifact_label:
|
||||
SP = (int(SP) + offset_length) // (1000 // self.frequency)
|
||||
@ -348,7 +357,7 @@ class Quality_Relabel:
|
||||
# 绘制 Flow2
|
||||
plt.subplot(gs[1])
|
||||
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Flow P",
|
||||
title=f"PSG sampNo:{self.sampNo} Index:{ecg_index+1}/{len(self.ecg_event_label_filtered_df)} "
|
||||
title=f"PSG sampNo:{self.sampNo} Index:{ecg_index + 1}/{len(self.ecg_event_label_filtered_df)} "
|
||||
f"Epoch:{one_ecg_data['Epoch']} Duration:{ecg_duration}")
|
||||
|
||||
plt.subplot(gs[2])
|
||||
@ -367,10 +376,10 @@ class Quality_Relabel:
|
||||
|
||||
plt.subplot(gs[6])
|
||||
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="0.7lowpass_resp",
|
||||
event_code=[6, 7, 8, 9, 10 ,1, 2, 3, 4],
|
||||
event_code=[6, 7, 8, 9, 10, 1, 2, 3, 4],
|
||||
event_show_under=False,
|
||||
ax_bottom=True,
|
||||
title=f"ÐÄÏþ sampNo:{self.sampNo} Index:{bcg_index+1}/{len(self.bcg_event_label_filtered_df)} "
|
||||
title=f"ÐÄÏþ sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)} "
|
||||
f"Epoch:{one_bcg_data['Epoch']} Duration:{bcg_duration}",
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user