From 563e4fab8f02cc703344db23771a6232044151cb Mon Sep 17 00:00:00 2001 From: marques <20172333133@m.scnu.edu.cn> Date: Fri, 20 May 2022 11:17:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=8B=E4=BB=B6=E4=BD=8D?= =?UTF-8?q?=E4=BA=8E=E6=9C=AB=E5=B0=BE=E6=97=B6=EF=BC=8CBCG=E9=95=BF?= =?UTF-8?q?=E5=BA=A6=E4=B8=8D=E5=A4=9F=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Main_Quality_Relabel.py | 4 +++- utils/Quality_Relabel.py | 25 +++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Main_Quality_Relabel.py b/Main_Quality_Relabel.py index 9ca5dc7..6d0aa19 100644 --- a/Main_Quality_Relabel.py +++ b/Main_Quality_Relabel.py @@ -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, diff --git a/utils/Quality_Relabel.py b/utils/Quality_Relabel.py index a5a67ad..e10567d 100644 --- a/utils/Quality_Relabel.py +++ b/utils/Quality_Relabel.py @@ -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}", )