Merge branch 'master' into cxh_dev
This commit is contained in:
@ -362,6 +362,7 @@ class MainWindow_SA_label(QMainWindow):
|
|||||||
self.ui.pushButton_prev.clicked.connect(self.__slot_btn_move__)
|
self.ui.pushButton_prev.clicked.connect(self.__slot_btn_move__)
|
||||||
self.ui.pushButton_next.clicked.connect(self.__slot_btn_move__)
|
self.ui.pushButton_next.clicked.connect(self.__slot_btn_move__)
|
||||||
self.ui.pushButton_confirmLabel.clicked.connect(self.__slot_btn_confirmLabel__)
|
self.ui.pushButton_confirmLabel.clicked.connect(self.__slot_btn_confirmLabel__)
|
||||||
|
self.ui.pushButton_save.clicked.connect(self.__slot_btn_save__)
|
||||||
self.ui.pushButton_quick_remark_input_waitingForTalk.clicked.connect(self.__slot_btn_quick_remark__)
|
self.ui.pushButton_quick_remark_input_waitingForTalk.clicked.connect(self.__slot_btn_quick_remark__)
|
||||||
self.ui.pushButton_quick_remark_input_maybeDesaturation.clicked.connect(self.__slot_btn_quick_remark__)
|
self.ui.pushButton_quick_remark_input_maybeDesaturation.clicked.connect(self.__slot_btn_quick_remark__)
|
||||||
self.ui.pushButton_quick_remark_input_maybeWrongLabeled.clicked.connect(self.__slot_btn_quick_remark__)
|
self.ui.pushButton_quick_remark_input_maybeWrongLabeled.clicked.connect(self.__slot_btn_quick_remark__)
|
||||||
@ -633,83 +634,105 @@ class MainWindow_SA_label(QMainWindow):
|
|||||||
self.data = Data()
|
self.data = Data()
|
||||||
|
|
||||||
# 导入数据
|
# 导入数据
|
||||||
PublicFunc.progressbar_update(self, 1, 7, Constants.INPUTTING_DATA, 0)
|
PublicFunc.progressbar_update(self, 1, 9, Constants.INPUTTING_DATA, 0)
|
||||||
result = self.data.open_file()
|
result = self.data.open_file()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(1/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(1/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(1/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(1/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
# 获取存档
|
# 获取存档
|
||||||
PublicFunc.progressbar_update(self, 2, 7, Constants.LOADING_ARCHIVE, 20)
|
PublicFunc.progressbar_update(self, 2, 9, Constants.LOADING_ARCHIVE, 15)
|
||||||
result = self.data.get_archive()
|
result = self.data.get_archive()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(2/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(2/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(2/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(2/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
|
# 保存
|
||||||
|
PublicFunc.progressbar_update(self, 3, 9, Constants.SAVING_DATA, 20)
|
||||||
|
result = self.data.save()
|
||||||
|
if not result.status:
|
||||||
|
PublicFunc.text_output(self.ui, "(3/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
PublicFunc.text_output(self.ui, "(3/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
|
# 保存
|
||||||
|
PublicFunc.progressbar_update(self, 4, 9, Constants.SAVING_DATA, 25)
|
||||||
|
result = self.data.save_2()
|
||||||
|
if not result.status:
|
||||||
|
PublicFunc.text_output(self.ui, "(4/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
PublicFunc.text_output(self.ui, "(4/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
# 数据预处理
|
# 数据预处理
|
||||||
PublicFunc.progressbar_update(self, 3, 7, Constants.PREPROCESSING_DATA, 30)
|
PublicFunc.progressbar_update(self, 5, 9, Constants.PREPROCESSING_DATA, 30)
|
||||||
result = self.data.preprocess()
|
result = self.data.preprocess()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(3/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(5/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(3/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(5/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
# 重采样
|
# 重采样
|
||||||
PublicFunc.progressbar_update(self, 4, 7, Constants.RESAMPLING_DATA, 50)
|
PublicFunc.progressbar_update(self, 6, 9, Constants.RESAMPLING_DATA, 50)
|
||||||
result = self.data.resample()
|
result = self.data.resample()
|
||||||
for key, value in self.data.channel.items():
|
for key, value in self.data.channel.items():
|
||||||
PublicFunc.text_output(self.ui, key + "重采样后的长度:" + str(len(value)), Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, key + "重采样后的长度:" + str(len(value)), Constants.TIPS_TYPE_INFO)
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(4/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(6/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(4/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(6/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
# 绘图
|
# 绘图
|
||||||
PublicFunc.progressbar_update(self, 5, 7, Constants.DRAWING_DATA, 70)
|
PublicFunc.progressbar_update(self, 7, 9, Constants.DRAWING_DATA, 70)
|
||||||
result = self.__plot__()
|
result = self.__plot__()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(5/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(7/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(5/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(7/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
# 更新表格
|
# 更新表格
|
||||||
PublicFunc.progressbar_update(self, 6, 7, Constants.UPDATING_TABLEWIDGET, 90)
|
PublicFunc.progressbar_update(self, 8, 9, Constants.UPDATING_TABLEWIDGET, 90)
|
||||||
result = self.update_tableWidget()
|
result = self.update_tableWidget()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(6/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(8/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(6/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(8/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
# 更新信息
|
# 更新信息
|
||||||
PublicFunc.progressbar_update(self, 7, 7, Constants.UPDATING_INFO, 95)
|
PublicFunc.progressbar_update(self, 9, 9, Constants.UPDATING_INFO, 95)
|
||||||
result = self.update_UI_Args()
|
result = self.update_UI_Args()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
PublicFunc.text_output(self.ui, "(7/7)" + result.info, Constants.TIPS_TYPE_ERROR)
|
PublicFunc.text_output(self.ui, "(9/9)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
PublicFunc.finish_operation(self, ButtonState)
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
PublicFunc.text_output(self.ui, "(7/7)" + result.info, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, "(9/9)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
if (self.data.df_corrected["isLabeled"] == 1).all():
|
if (self.data.df_corrected["isLabeled"] == 1).all():
|
||||||
self.ui.checkBox_examineLabeled.setChecked(False)
|
self.ui.checkBox_examineLabeled.setChecked(False)
|
||||||
@ -779,8 +802,13 @@ class MainWindow_SA_label(QMainWindow):
|
|||||||
self.data.df_addNew = self.pd_add_new_row(self.data.df_addNew, score, remark, correct_Start,
|
self.data.df_addNew = self.pd_add_new_row(self.data.df_addNew, score, remark, correct_Start,
|
||||||
correct_End, correct_EventsType, isLabeled)
|
correct_End, correct_EventsType, isLabeled)
|
||||||
result = self.data.save_2()
|
result = self.data.save_2()
|
||||||
info = f"保存新事件打标结果到csv。score:{str(score)},correct_Start:{str(correct_Start)},correct_End:{str(correct_End)},correct_EventsType:{str(correct_EventsType)}"
|
if result.status:
|
||||||
PublicFunc.text_output(self.ui, info, Constants.MSGBOX_TYPE_INFO)
|
info = f"保存新事件打标结果到csv。score:{str(score)},correct_Start:{str(correct_Start)},correct_End:{str(correct_End)},correct_EventsType:{str(correct_EventsType)}"
|
||||||
|
PublicFunc.text_output(self.ui, info, Constants.TIPS_TYPE_INFO)
|
||||||
|
else:
|
||||||
|
info = f"未成功保存新事件打标结果到csv,错误提示:{result.info},结果已暂存到缓存中,请正确操作后重试。score:{str(score)},correct_Start:{str(correct_Start)},correct_End:{str(correct_End)},correct_EventsType:{str(correct_EventsType)}"
|
||||||
|
PublicFunc.text_output(self.ui, info, Constants.TIPS_TYPE_ERROR)
|
||||||
|
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
else:
|
else:
|
||||||
PublicFunc.msgbox_output(self, Constants.SA_LABEL_WRONG_ARGS, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, Constants.SA_LABEL_WRONG_ARGS, Constants.MSGBOX_TYPE_ERROR)
|
||||||
else:
|
else:
|
||||||
@ -810,17 +838,19 @@ class MainWindow_SA_label(QMainWindow):
|
|||||||
self.data.df_corrected.at[Config["EventLabelIndexList"][
|
self.data.df_corrected.at[Config["EventLabelIndexList"][
|
||||||
Config["PlotEventIndex"]], "correct_EventsType"] = "Hypopnea"
|
Config["PlotEventIndex"]], "correct_EventsType"] = "Hypopnea"
|
||||||
self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "isLabeled"] = int(1)
|
self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "isLabeled"] = int(1)
|
||||||
# self.data.df_corrected.to_csv(
|
|
||||||
# self.BCG_Label_Path / f"export{self.mainWindow.ui_SA_label_left.comboBox_sampID.currentText()}_all.csv",
|
|
||||||
# mode='w', index=None, encoding="gbk")
|
|
||||||
result = self.data.save()
|
result = self.data.save()
|
||||||
index = str(Config["PlotEventIndex"] + 1)
|
index = str(Config["PlotEventIndex"] + 1)
|
||||||
score = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "score"])
|
score = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "score"])
|
||||||
correct_Start = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "correct_Start"])
|
correct_Start = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "correct_Start"])
|
||||||
correct_End = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "correct_End"])
|
correct_End = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "correct_End"])
|
||||||
correct_EventsType = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "correct_EventsType"])
|
correct_EventsType = str(self.data.df_corrected.at[Config["EventLabelIndexList"][Config["PlotEventIndex"]], "correct_EventsType"])
|
||||||
info = f"保存index{index}标注结果到csv。score:{score},correct_Start:{correct_Start},correct_End:{correct_End},correct_EventsType:{correct_EventsType}"
|
if result.status:
|
||||||
PublicFunc.text_output(self.ui, info, Constants.MSGBOX_TYPE_INFO)
|
info = f"保存index{index}标注结果到csv。score:{score},correct_Start:{correct_Start},correct_End:{correct_End},correct_EventsType:{correct_EventsType}"
|
||||||
|
PublicFunc.text_output(self.ui, info, Constants.TIPS_TYPE_INFO)
|
||||||
|
else:
|
||||||
|
info = f"未成功保存index{index}标注结果到csv,错误提示:{result.info},结果已暂存到缓存中,请正确操作后重试。score:{score},correct_Start:{correct_Start},correct_End:{correct_End},correct_EventsType:{correct_EventsType}"
|
||||||
|
PublicFunc.text_output(self.ui, info, Constants.TIPS_TYPE_ERROR)
|
||||||
|
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
if (self.data.df_corrected.loc[Config["EventLabelIndexList"]]["isLabeled"] == 1).all():
|
if (self.data.df_corrected.loc[Config["EventLabelIndexList"]]["isLabeled"] == 1).all():
|
||||||
self.ui.checkBox_examineLabeled.setChecked(False)
|
self.ui.checkBox_examineLabeled.setChecked(False)
|
||||||
PublicFunc.text_output(self.ui, Constants.SA_LABEL_ALL_LABELED, Constants.TIPS_TYPE_INFO)
|
PublicFunc.text_output(self.ui, Constants.SA_LABEL_ALL_LABELED, Constants.TIPS_TYPE_INFO)
|
||||||
@ -832,6 +862,34 @@ class MainWindow_SA_label(QMainWindow):
|
|||||||
info = Constants.SAVE_FAILURE + "\n" + format_exc()
|
info = Constants.SAVE_FAILURE + "\n" + format_exc()
|
||||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
|
||||||
|
def __slot_btn_save__(self):
|
||||||
|
PublicFunc.__disableAllButton__(self, ButtonState)
|
||||||
|
|
||||||
|
# 保存
|
||||||
|
PublicFunc.progressbar_update(self, 1, 2, Constants.SAVING_DATA, 0)
|
||||||
|
result = self.data.save()
|
||||||
|
if not result.status:
|
||||||
|
PublicFunc.text_output(self.ui, "(1/2)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
PublicFunc.text_output(self.ui, "(1/2)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
|
# 保存
|
||||||
|
PublicFunc.progressbar_update(self, 2, 2, Constants.SAVING_DATA, 50)
|
||||||
|
result = self.data.save_2()
|
||||||
|
if not result.status:
|
||||||
|
PublicFunc.text_output(self.ui, "(2/2)" + result.info, Constants.TIPS_TYPE_ERROR)
|
||||||
|
PublicFunc.msgbox_output(self, result.info, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
PublicFunc.text_output(self.ui, "(2/2)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
|
||||||
|
PublicFunc.msgbox_output(self, result.info, Constants.TIPS_TYPE_INFO)
|
||||||
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
|
|
||||||
def __slot_btn_move__(self):
|
def __slot_btn_move__(self):
|
||||||
if self.data is None:
|
if self.data is None:
|
||||||
return
|
return
|
||||||
@ -1595,6 +1653,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
self.df_corrected.to_csv(Config["Path"]["Save"], mode='w', index=None, encoding="gbk")
|
self.df_corrected.to_csv(Config["Path"]["Save"], mode='w', index=None, encoding="gbk")
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -1610,6 +1672,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
self.df_addNew.to_csv(Config["Path"]["Save_2"], mode='w', index=None, encoding="gbk")
|
self.df_addNew.to_csv(Config["Path"]["Save_2"], mode='w', index=None, encoding="gbk")
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -1046,6 +1046,10 @@ class Data:
|
|||||||
})
|
})
|
||||||
|
|
||||||
df.to_csv(Path(Config["Path"]["Save"]), mode="w", header=True, index=False)
|
df.to_csv(Path(Config["Path"]["Save"]), mode="w", header=True, index=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON[
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON[
|
||||||
"Save_Exception"] + "\n" + format_exc())
|
"Save_Exception"] + "\n" + format_exc())
|
||||||
@ -1307,7 +1311,6 @@ class Data:
|
|||||||
tho_bias_list.append(tho_seg_pos / temp_freq)
|
tho_bias_list.append(tho_seg_pos / temp_freq)
|
||||||
abd_bias_list.append(abd_seg_pos / temp_freq)
|
abd_bias_list.append(abd_seg_pos / temp_freq)
|
||||||
|
|
||||||
|
|
||||||
result = {
|
result = {
|
||||||
"tho_bias_list": tho_bias_list,
|
"tho_bias_list": tho_bias_list,
|
||||||
"abd_bias_list": abd_bias_list,
|
"abd_bias_list": abd_bias_list,
|
||||||
@ -1315,7 +1318,6 @@ class Data:
|
|||||||
"epoch_max": epoch_max
|
"epoch_max": epoch_max
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(
|
return Result().failure(
|
||||||
info=Constants.APPROXIMATELY_EPOCH_GET_FAILURE + Constants.FAILURE_REASON[
|
info=Constants.APPROXIMATELY_EPOCH_GET_FAILURE + Constants.FAILURE_REASON[
|
||||||
|
|||||||
@ -1338,7 +1338,7 @@ class Data:
|
|||||||
|
|
||||||
def resample(self):
|
def resample(self):
|
||||||
if self.orgBcg is None:
|
if self.orgBcg is None:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if Config["InputConfig"]["orgBcgFreq"] != Config["InputConfig"]["UseFreq"]:
|
if Config["InputConfig"]["orgBcgFreq"] != Config["InputConfig"]["UseFreq"]:
|
||||||
@ -1348,8 +1348,8 @@ class Data:
|
|||||||
else:
|
else:
|
||||||
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE +
|
return Result().failure(info=Constants.RESAMPLE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
||||||
|
|
||||||
@ -1399,6 +1399,10 @@ class Data:
|
|||||||
df_Artifact_b.to_csv(Path(Config["Path"]["Save_b"]), header=False, index=False, sep='\n')
|
df_Artifact_b.to_csv(Path(Config["Path"]["Save_b"]), header=False, index=False, sep='\n')
|
||||||
self.df_Artifact_a.to_csv(Path(Config["Path"]["Save_c"]), index=False,
|
self.df_Artifact_a.to_csv(Path(Config["Path"]["Save_c"]), index=False,
|
||||||
encoding=Params.GBK_ENCODING)
|
encoding=Params.GBK_ENCODING)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON[
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON[
|
||||||
"Save_Exception"] + "\n" + format_exc())
|
"Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -1072,7 +1072,7 @@ class Data():
|
|||||||
|
|
||||||
def resample(self):
|
def resample(self):
|
||||||
if self.BCG is None:
|
if self.BCG is None:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if Config["InputConfig"]["BCGFreq"] != Config["InputConfig"]["UseFreq"]:
|
if Config["InputConfig"]["BCGFreq"] != Config["InputConfig"]["UseFreq"]:
|
||||||
@ -1082,8 +1082,8 @@ class Data():
|
|||||||
else:
|
else:
|
||||||
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE +
|
return Result().failure(info=Constants.RESAMPLE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
||||||
|
|
||||||
@ -1112,6 +1112,10 @@ class Data():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
self.df_label.to_csv(Config["Path"]["Save"], index=False, encoding=Params.GBK_ENCODING)
|
self.df_label.to_csv(Config["Path"]["Save"], index=False, encoding=Params.GBK_ENCODING)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=filename + Constants.SAVE_FAILURE +
|
return Result().failure(info=filename + Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -335,6 +335,10 @@ class Data:
|
|||||||
self.SALabel.to_csv(Path(Config["Path"]["SaveFolder"]) / Path((Config["LabelSave"]["SA Label"] + Config["EndWith"]["SA Label"])),
|
self.SALabel.to_csv(Path(Config["Path"]["SaveFolder"]) / Path((Config["LabelSave"]["SA Label"] + Config["EndWith"]["SA Label"])),
|
||||||
index=False,
|
index=False,
|
||||||
encoding="gbk")
|
encoding="gbk")
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -424,6 +424,10 @@ class Data:
|
|||||||
Constants.FAILURE_REASON["Data_Not_Exist"])
|
Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if ((Config["Filter"]["BandPassLow"] >= Config["Filter"]["BandPassHigh"]) or
|
||||||
|
(Config["Filter"]["BandPassLow"] <= 0) or (Config["Filter"]["BandPassHigh"] <= 0)):
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Filter_Args_Not_Correct"])
|
||||||
self.processed_data = preprocess(self.raw_data,
|
self.processed_data = preprocess(self.raw_data,
|
||||||
Config["InputConfig"]["Freq"],
|
Config["InputConfig"]["Freq"],
|
||||||
Config["Filter"]["BandPassLow"],
|
Config["Filter"]["BandPassLow"],
|
||||||
@ -445,6 +449,9 @@ class Data:
|
|||||||
Constants.FAILURE_REASON["Data_Not_Exist"])
|
Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if Config["IntervalLow"] >= Config["IntervalHigh"]:
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.DETECT_JPEAK_PREDICT_FAILURE + Constants.FAILURE_REASON["Interval_Args_Not_Correct"])
|
||||||
self.peak, self.interval = Jpeak_Detection(model.selected_model,
|
self.peak, self.interval = Jpeak_Detection(model.selected_model,
|
||||||
Path(model.model_folder_path) / Path(model.selected_model),
|
Path(model.model_folder_path) / Path(model.selected_model),
|
||||||
self.processed_data,
|
self.processed_data,
|
||||||
@ -465,6 +472,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -425,6 +425,10 @@ class Data:
|
|||||||
Constants.FAILURE_REASON["Data_Not_Exist"])
|
Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if ((Config["Filter"]["BandPassLow"] >= Config["Filter"]["BandPassHigh"]) or
|
||||||
|
(Config["Filter"]["BandPassLow"] <= 0) or (Config["Filter"]["BandPassHigh"] <= 0)):
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Filter_Args_Not_Correct"])
|
||||||
self.processed_data = preprocess(self.raw_data,
|
self.processed_data = preprocess(self.raw_data,
|
||||||
Config["InputConfig"]["Freq"],
|
Config["InputConfig"]["Freq"],
|
||||||
Config["Filter"]["BandPassLow"],
|
Config["Filter"]["BandPassLow"],
|
||||||
@ -458,6 +462,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -986,17 +986,31 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if Config["Mode"] == "BCG":
|
if Config["Mode"] == "BCG":
|
||||||
self.processed_data = data_preprocess_for_label_check(self.raw_data,
|
if Config["Filter"]["BCGBandPassOrder"] == 0:
|
||||||
Config["Filter"]["BCGBandPassOrder"],
|
self.processed_data = self.raw_data
|
||||||
Config["Filter"]["BCGBandPassLow"],
|
else:
|
||||||
Config["Filter"]["BCGBandPassHigh"],
|
if ((Config["Filter"]["BCGBandPassLow"] >= Config["Filter"]["BCGBandPassHigh"]) or
|
||||||
Config["InputConfig"]["Freq"])
|
(Config["Filter"]["BCGBandPassLow"] <= 0) or (Config["Filter"]["BCGBandPassHigh"] <= 0)):
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Filter_Args_Not_Correct"])
|
||||||
|
self.processed_data = data_preprocess_for_label_check(self.raw_data,
|
||||||
|
Config["Filter"]["BCGBandPassOrder"],
|
||||||
|
Config["Filter"]["BCGBandPassLow"],
|
||||||
|
Config["Filter"]["BCGBandPassHigh"],
|
||||||
|
Config["InputConfig"]["Freq"])
|
||||||
elif Config["Mode"] == "ECG":
|
elif Config["Mode"] == "ECG":
|
||||||
self.processed_data = data_preprocess_for_label_check(self.raw_data,
|
if Config["Filter"]["ECGBandPassOrder"] == 0:
|
||||||
Config["Filter"]["ECGBandPassOrder"],
|
self.processed_data = self.raw_data
|
||||||
Config["Filter"]["ECGBandPassLow"],
|
else:
|
||||||
Config["Filter"]["ECGBandPassHigh"],
|
if ((Config["Filter"]["ECGBandPassLow"] >= Config["Filter"]["ECGBandPassHigh"]) or
|
||||||
Config["InputConfig"]["Freq"])
|
(Config["Filter"]["ECGBandPassLow"] <= 0) or (Config["Filter"]["ECGBandPassHigh"] <= 0)):
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Filter_Args_Not_Correct"])
|
||||||
|
self.processed_data = data_preprocess_for_label_check(self.raw_data,
|
||||||
|
Config["Filter"]["ECGBandPassOrder"],
|
||||||
|
Config["Filter"]["ECGBandPassLow"],
|
||||||
|
Config["Filter"]["ECGBandPassHigh"],
|
||||||
|
Config["InputConfig"]["Freq"])
|
||||||
else:
|
else:
|
||||||
raise ValueError("模式不存在")
|
raise ValueError("模式不存在")
|
||||||
self.original_peak_y = [self.processed_data[x] for x in self.original_peak]
|
self.original_peak_y = [self.processed_data[x] for x in self.original_peak]
|
||||||
@ -1013,6 +1027,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
DataFrame(self.corrected_peak).to_csv(Config["Path"]["Save"], index=False, header=False)
|
DataFrame(self.corrected_peak).to_csv(Config["Path"]["Save"], index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -277,6 +277,7 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
|
|||||||
def seek_sampID(self, path):
|
def seek_sampID(self, path):
|
||||||
if not Path(path).exists():
|
if not Path(path).exists():
|
||||||
PublicFunc.msgbox_output(self, Constants.MAINWINDOW_ROOT_PATH_NOT_EXIST, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, Constants.MAINWINDOW_ROOT_PATH_NOT_EXIST, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
self.ui.comboBox_sampID.clear()
|
||||||
return
|
return
|
||||||
|
|
||||||
sub_folders = [item.name for item in Path(path).iterdir() if item.is_dir()]
|
sub_folders = [item.name for item in Path(path).iterdir() if item.is_dir()]
|
||||||
|
|||||||
@ -1679,7 +1679,7 @@ class Data:
|
|||||||
|
|
||||||
def resample(self):
|
def resample(self):
|
||||||
if self.raw_orgBcg is None or self.raw_BCG is None or self.raw_ECG is None:
|
if self.raw_orgBcg is None or self.raw_BCG is None or self.raw_ECG is None:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if Config["InputConfig"]["orgBcgFreq"] != Config["InputConfig"]["UseFreq"]:
|
if Config["InputConfig"]["orgBcgFreq"] != Config["InputConfig"]["UseFreq"]:
|
||||||
@ -1690,8 +1690,8 @@ class Data:
|
|||||||
else:
|
else:
|
||||||
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE +
|
return Result().failure(info=Constants.RESAMPLE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
||||||
|
|
||||||
@ -2033,6 +2033,10 @@ class Data:
|
|||||||
}
|
}
|
||||||
save_data = [str(save_data)]
|
save_data = [str(save_data)]
|
||||||
DataFrame(save_data).to_csv(Config["Path"]["Save_AlignInfo"], index=False, header=False)
|
DataFrame(save_data).to_csv(Config["Path"]["Save_AlignInfo"], index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FAILURE +
|
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -2055,6 +2059,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save_OrgBCG"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save_OrgBCG"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE +
|
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -2072,6 +2080,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save_BCG"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save_BCG"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE +
|
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -2089,6 +2101,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save_ECG"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save_ECG"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE +
|
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -2106,6 +2122,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save_Jpeak"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save_Jpeak"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE +
|
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -2123,6 +2143,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save_Rpeak"], mode='a', index=False, header=False)
|
chunk.to_csv(Config["Path"]["Save_Rpeak"], mode='a', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE +
|
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -432,7 +432,7 @@ class Data:
|
|||||||
|
|
||||||
def resample(self):
|
def resample(self):
|
||||||
if self.raw_data is None:
|
if self.raw_data is None:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if Config["InputConfig"]["Freq"] != Config["OutputConfig"]["Freq"]:
|
if Config["InputConfig"]["Freq"] != Config["OutputConfig"]["Freq"]:
|
||||||
@ -442,34 +442,47 @@ class Data:
|
|||||||
else:
|
else:
|
||||||
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE +
|
return Result().failure(info=Constants.RESAMPLE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
||||||
|
|
||||||
def preprocess(self):
|
def preprocess(self):
|
||||||
if self.raw_data is None:
|
if self.raw_data is None:
|
||||||
Result().failure(info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
if Config["Mode"] == "BCG":
|
if Config["Mode"] == "BCG":
|
||||||
self.processed_data = Butterworth_for_BCG_PreProcess(self.raw_data, type='bandpass',
|
if Config["Filter"]["BCGBandPassOrder"] == 0:
|
||||||
low_cut=Config["Filter"]["BCGBandPassLow"],
|
self.processed_data = self.raw_data
|
||||||
high_cut=Config["Filter"]["BCGBandPassHigh"],
|
else:
|
||||||
order=Config["Filter"]["BCGBandPassOrder"],
|
if ((Config["Filter"]["BCGBandPassLow"] >= Config["Filter"]["BCGBandPassHigh"]) or
|
||||||
sample_rate=Config["OutputConfig"]["Freq"])
|
(Config["Filter"]["BCGBandPassLow"] <= 0) or (Config["Filter"]["BCGBandPassHigh"] <= 0)):
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Filter_Args_Not_Correct"])
|
||||||
|
self.processed_data = Butterworth_for_BCG_PreProcess(self.raw_data, type='bandpass',
|
||||||
|
low_cut=Config["Filter"]["BCGBandPassLow"],
|
||||||
|
high_cut=Config["Filter"]["BCGBandPassHigh"],
|
||||||
|
order=Config["Filter"]["BCGBandPassOrder"],
|
||||||
|
sample_rate=Config["OutputConfig"]["Freq"])
|
||||||
elif Config["Mode"] == "ECG":
|
elif Config["Mode"] == "ECG":
|
||||||
self.processed_data = Butterworth_for_ECG_PreProcess(self.raw_data, type='bandpass',
|
if Config["Filter"]["ECGBandPassOrder"] == 0:
|
||||||
low_cut=Config["Filter"]["ECGBandPassLow"],
|
self.processed_data = self.raw_data
|
||||||
high_cut=Config["Filter"]["ECGBandPassHigh"],
|
else:
|
||||||
order=Config["Filter"]["ECGBandPassOrder"],
|
if ((Config["Filter"]["ECGBandPassLow"] >= Config["Filter"]["ECGBandPassHigh"]) or
|
||||||
sample_rate=Config["OutputConfig"]["Freq"])
|
(Config["Filter"]["ECGBandPassLow"] <= 0) or (Config["Filter"]["ECGBandPassHigh"] <= 0)):
|
||||||
|
return Result().failure(
|
||||||
|
info=Constants.PREPROCESS_FAILURE + Constants.FAILURE_REASON["Filter_Args_Not_Correct"])
|
||||||
|
self.processed_data = Butterworth_for_ECG_PreProcess(self.raw_data, type='bandpass',
|
||||||
|
low_cut=Config["Filter"]["ECGBandPassLow"],
|
||||||
|
high_cut=Config["Filter"]["ECGBandPassHigh"],
|
||||||
|
order=Config["Filter"]["ECGBandPassOrder"],
|
||||||
|
sample_rate=Config["OutputConfig"]["Freq"])
|
||||||
else:
|
else:
|
||||||
raise ValueError("模式不存在")
|
raise ValueError("模式不存在")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.PREPROCESS_FAILURE +
|
return Result().failure(info=Constants.PREPROCESS_FAILURE +
|
||||||
Constants.FAILURE_REASON["Preprocess_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Preprocess_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.PREPROCESS_FINISHED)
|
return Result().success(info=Constants.PREPROCESS_FINISHED)
|
||||||
|
|
||||||
@ -479,6 +492,10 @@ class Data:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
chunk.to_csv(Config["Path"]["Save"], mode='a', index=False, header=False, float_format='%.4f')
|
chunk.to_csv(Config["Path"]["Save"], mode='a', index=False, header=False, float_format='%.4f')
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -411,7 +411,7 @@ class MainWindow_resp_quality_label(QMainWindow):
|
|||||||
artifact_type_seq = append(artifact_type_seq, 4)
|
artifact_type_seq = append(artifact_type_seq, 4)
|
||||||
if self.ui.checkBox_type5.isChecked():
|
if self.ui.checkBox_type5.isChecked():
|
||||||
artifact_type_seq = append(artifact_type_seq, 5)
|
artifact_type_seq = append(artifact_type_seq, 5)
|
||||||
length = Config["InputConfig"]["OrgBCGUseFreq"] * Params.RESP_QUALITY_LABEL_PARTS_TIME_SEC
|
length = end_OrgBCG - begin_OrgBCG
|
||||||
mask = array([arange(length), arange(length), arange(length), arange(length), arange(length), arange(length)])
|
mask = array([arange(length), arange(length), arange(length), arange(length), arange(length), arange(length)])
|
||||||
mask = mask.astype(float64)
|
mask = mask.astype(float64)
|
||||||
for i in artifact_type_seq:
|
for i in artifact_type_seq:
|
||||||
@ -806,12 +806,12 @@ class MainWindow_resp_quality_label(QMainWindow):
|
|||||||
def __slot_btn_refilter_orgBcg__(self):
|
def __slot_btn_refilter_orgBcg__(self):
|
||||||
PublicFunc.__disableAllButton__(self, ButtonState)
|
PublicFunc.__disableAllButton__(self, ButtonState)
|
||||||
if len(self.data.OrgBCG_Processed) == 0:
|
if len(self.data.OrgBCG_Processed) == 0:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
return
|
|
||||||
|
|
||||||
if self.ui.radioButton_orgBcg_fillterMode_custom.isChecked():
|
if self.ui.radioButton_orgBcg_fillterMode_custom.isChecked():
|
||||||
if self.check_filter_args() is False:
|
if self.check_filter_args() is False:
|
||||||
PublicFunc.msgbox_output(self, Constants.RESP_QUALITY_LABEL_CUSTOM_FILTER_ARGS_ERROR, Constants.MSGBOX_TYPE_ERROR)
|
PublicFunc.msgbox_output(self, Constants.RESP_QUALITY_LABEL_CUSTOM_FILTER_ARGS_ERROR, Constants.MSGBOX_TYPE_ERROR)
|
||||||
|
PublicFunc.finish_operation(self, ButtonState)
|
||||||
return
|
return
|
||||||
result = self.__plot__()
|
result = self.__plot__()
|
||||||
if not result.status:
|
if not result.status:
|
||||||
@ -1036,7 +1036,8 @@ class MainWindow_resp_quality_label(QMainWindow):
|
|||||||
self.ax1_spectrum.set_title(Constants.RESP_QUALITY_LABEL_SPECTRUM_THO_TITLE, fontsize=8)
|
self.ax1_spectrum.set_title(Constants.RESP_QUALITY_LABEL_SPECTRUM_THO_TITLE, fontsize=8)
|
||||||
|
|
||||||
def check_filter_args(self):
|
def check_filter_args(self):
|
||||||
if (float(Config["Filter"]["BandPassLow"]) >= float(Config["Filter"]["BandPassHigh"])):
|
if ((float(Config["Filter"]["BandPassLow"]) >= float(Config["Filter"]["BandPassHigh"])) or
|
||||||
|
(float(Config["Filter"]["BandPassLow"]) <= 0) or (float(Config["Filter"]["BandPassHigh"]) <= 0)):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -1301,7 +1302,7 @@ class Data():
|
|||||||
|
|
||||||
def resample_tho(self):
|
def resample_tho(self):
|
||||||
if self.Tho is None:
|
if self.Tho is None:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if Config["InputConfig"]["ThoFreq"] != Config["InputConfig"]["ThoUseFreq"]:
|
if Config["InputConfig"]["ThoFreq"] != Config["InputConfig"]["ThoUseFreq"]:
|
||||||
@ -1311,8 +1312,8 @@ class Data():
|
|||||||
else:
|
else:
|
||||||
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE +
|
return Result().failure(info=Constants.RESAMPLE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
||||||
|
|
||||||
@ -1353,6 +1354,10 @@ class Data():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
DataFrame(self.Tho_peak).to_csv(Path(Config["Path"]["Save_Tho_peak"]), mode='w', index=False, header=False)
|
DataFrame(self.Tho_peak).to_csv(Path(Config["Path"]["Save_Tho_peak"]), mode='w', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Filename.THO_PEAK + Constants.SAVE_FAILURE +
|
return Result().failure(info=Filename.THO_PEAK + Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
@ -1477,7 +1482,7 @@ class Data():
|
|||||||
|
|
||||||
def resample_tho_and_OrgBCG(self):
|
def resample_tho_and_OrgBCG(self):
|
||||||
if (self.OrgBCG is None) or (self.Tho is None):
|
if (self.OrgBCG is None) or (self.Tho is None):
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
return Result().failure(info=Constants.RESAMPLE_FAILURE + Constants.FAILURE_REASON["Data_Not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if ((Config["InputConfig"]["OrgBCGFreq"] != Config["InputConfig"]["OrgBCGUseFreq"])
|
if ((Config["InputConfig"]["OrgBCGFreq"] != Config["InputConfig"]["OrgBCGUseFreq"])
|
||||||
@ -1494,8 +1499,8 @@ class Data():
|
|||||||
else:
|
else:
|
||||||
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
return Result().success(info=Constants.RESAMPLE_NO_NEED)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Result().failure(info=Constants.RESAMPLE_FAILURE +
|
return Result().failure(info=Constants.RESAMPLE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Resample_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
return Result().success(info=Constants.RESAMPLE_FINISHED)
|
||||||
|
|
||||||
@ -1538,6 +1543,10 @@ class Data():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
DataFrame(self.resp_quality_label).to_csv(Path(Config["Path"]["Save_Resp_quality_label"]), mode='w', index=False, header=False)
|
DataFrame(self.resp_quality_label).to_csv(Path(Config["Path"]["Save_Resp_quality_label"]), mode='w', index=False, header=False)
|
||||||
|
except PermissionError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_File_Not_Found"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Filename.RESP_QUALITY_LABEL + Constants.SAVE_FAILURE +
|
return Result().failure(info=Filename.RESP_QUALITY_LABEL + Constants.SAVE_FAILURE +
|
||||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|||||||
@ -108,6 +108,10 @@ class Constants:
|
|||||||
"Data_Length_not_Correct": "(orgBcg和BCG长度不匹配)",
|
"Data_Length_not_Correct": "(orgBcg和BCG长度不匹配)",
|
||||||
"Artifact_Format_Not_Correct": "(体动长度或格式不正确)",
|
"Artifact_Format_Not_Correct": "(体动长度或格式不正确)",
|
||||||
"Data_Length_Not_Correct": "(信号长度不正确)",
|
"Data_Length_Not_Correct": "(信号长度不正确)",
|
||||||
|
"Filter_Args_Not_Correct": "(滤波器参数输入不正确,上下截止频率都要大于0,且上截止频率应大于下截止频率)",
|
||||||
|
"Interval_Args_Not_Correct": "(间期参数输入不正确,上间期阈值应大于下间期阈值)",
|
||||||
|
"Save_Permission_Denied": "(所保存的文件正在被其他进程使用)",
|
||||||
|
"Save_File_Not_Found": "(保存路径不存在)",
|
||||||
|
|
||||||
"Open_Data_Exception": "(打开数据异常)",
|
"Open_Data_Exception": "(打开数据异常)",
|
||||||
"Process_Exception": "(处理异常)",
|
"Process_Exception": "(处理异常)",
|
||||||
@ -458,8 +462,8 @@ class Constants:
|
|||||||
RESP_QUALITY_LABEL_ADD_POINTS_SUCCESSFULLY: str = "成功新增点,横坐标:"
|
RESP_QUALITY_LABEL_ADD_POINTS_SUCCESSFULLY: str = "成功新增点,横坐标:"
|
||||||
RESP_QUALITY_LABEL_REMOVE_POINTS_SUCCESSFULLY: str = "成功删除点,横坐标:"
|
RESP_QUALITY_LABEL_REMOVE_POINTS_SUCCESSFULLY: str = "成功删除点,横坐标:"
|
||||||
RESP_QUALITY_LABEL_NO_POINT_IN_THE_INTERVAL: str = "所选区间内无新增或删除点"
|
RESP_QUALITY_LABEL_NO_POINT_IN_THE_INTERVAL: str = "所选区间内无新增或删除点"
|
||||||
RESP_QUALITY_LABEL_CUSTOM_FILTER_ARGS_ERROR: str = "OrgBCG带通滤波频率设置范围应为数字,范围是0~1"
|
RESP_QUALITY_LABEL_CUSTOM_FILTER_ARGS_ERROR: str = "OrgBCG带通滤波频率设置范围应为数字,范围是0~1,且上截止频率应大于下截止频率"
|
||||||
RESP_QUALITY_LABEL_AUTOLABEL_ARGS_ERROR: str = "人工标注阈值设置范围应为数字,范围是0~1"
|
RESP_QUALITY_LABEL_AUTOLABEL_ARGS_ERROR: str = "人工标注阈值设置范围应为数字,范围是0~1,且[1]应大于[0]"
|
||||||
RESP_QUALITY_LABEL_CHECK_ARGS_QUESTION_CONTENT: str = "你确定要执行此操作吗,请确保参数输入正确"
|
RESP_QUALITY_LABEL_CHECK_ARGS_QUESTION_CONTENT: str = "你确定要执行此操作吗,请确保参数输入正确"
|
||||||
RESP_QUALITY_LABEL_ACTION_LABEL_MULTIPLE_NAME: str = f"批量更改标签({Params.RESP_QUALITY_LABEL_ACTION_LABEL_MULTIPLE_SHORTCUT_KEY})"
|
RESP_QUALITY_LABEL_ACTION_LABEL_MULTIPLE_NAME: str = f"批量更改标签({Params.RESP_QUALITY_LABEL_ACTION_LABEL_MULTIPLE_SHORTCUT_KEY})"
|
||||||
RESP_QUALITY_LABEL_A_QUALITY: int = 1
|
RESP_QUALITY_LABEL_A_QUALITY: int = 1
|
||||||
|
|||||||
@ -143,6 +143,17 @@ class Ui_MainWindow_SA_label(object):
|
|||||||
|
|
||||||
self.verticalLayout_2.addItem(self.verticalSpacer_3)
|
self.verticalLayout_2.addItem(self.verticalSpacer_3)
|
||||||
|
|
||||||
|
self.pushButton_save = QPushButton(self.groupBox_left)
|
||||||
|
self.pushButton_save.setObjectName(u"pushButton_save")
|
||||||
|
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred)
|
||||||
|
sizePolicy1.setHorizontalStretch(0)
|
||||||
|
sizePolicy1.setVerticalStretch(0)
|
||||||
|
sizePolicy1.setHeightForWidth(self.pushButton_save.sizePolicy().hasHeightForWidth())
|
||||||
|
self.pushButton_save.setSizePolicy(sizePolicy1)
|
||||||
|
self.pushButton_save.setFont(font1)
|
||||||
|
|
||||||
|
self.verticalLayout_2.addWidget(self.pushButton_save)
|
||||||
|
|
||||||
self.groupBox_4 = QGroupBox(self.groupBox_left)
|
self.groupBox_4 = QGroupBox(self.groupBox_left)
|
||||||
self.groupBox_4.setObjectName(u"groupBox_4")
|
self.groupBox_4.setObjectName(u"groupBox_4")
|
||||||
self.verticalLayout_6 = QVBoxLayout(self.groupBox_4)
|
self.verticalLayout_6 = QVBoxLayout(self.groupBox_4)
|
||||||
@ -159,7 +170,8 @@ class Ui_MainWindow_SA_label(object):
|
|||||||
self.verticalLayout_2.setStretch(1, 1)
|
self.verticalLayout_2.setStretch(1, 1)
|
||||||
self.verticalLayout_2.setStretch(2, 15)
|
self.verticalLayout_2.setStretch(2, 15)
|
||||||
self.verticalLayout_2.setStretch(3, 1)
|
self.verticalLayout_2.setStretch(3, 1)
|
||||||
self.verticalLayout_2.setStretch(4, 5)
|
self.verticalLayout_2.setStretch(4, 2)
|
||||||
|
self.verticalLayout_2.setStretch(5, 5)
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.groupBox_left, 0, 0, 1, 1)
|
self.gridLayout.addWidget(self.groupBox_left, 0, 0, 1, 1)
|
||||||
|
|
||||||
@ -368,9 +380,6 @@ class Ui_MainWindow_SA_label(object):
|
|||||||
self.gridLayout_5.setObjectName(u"gridLayout_5")
|
self.gridLayout_5.setObjectName(u"gridLayout_5")
|
||||||
self.pushButton_quick_remark_input_durationNoEnough = QPushButton(self.groupBox_label_operation)
|
self.pushButton_quick_remark_input_durationNoEnough = QPushButton(self.groupBox_label_operation)
|
||||||
self.pushButton_quick_remark_input_durationNoEnough.setObjectName(u"pushButton_quick_remark_input_durationNoEnough")
|
self.pushButton_quick_remark_input_durationNoEnough.setObjectName(u"pushButton_quick_remark_input_durationNoEnough")
|
||||||
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred)
|
|
||||||
sizePolicy1.setHorizontalStretch(0)
|
|
||||||
sizePolicy1.setVerticalStretch(0)
|
|
||||||
sizePolicy1.setHeightForWidth(self.pushButton_quick_remark_input_durationNoEnough.sizePolicy().hasHeightForWidth())
|
sizePolicy1.setHeightForWidth(self.pushButton_quick_remark_input_durationNoEnough.sizePolicy().hasHeightForWidth())
|
||||||
self.pushButton_quick_remark_input_durationNoEnough.setSizePolicy(sizePolicy1)
|
self.pushButton_quick_remark_input_durationNoEnough.setSizePolicy(sizePolicy1)
|
||||||
self.pushButton_quick_remark_input_durationNoEnough.setFont(font1)
|
self.pushButton_quick_remark_input_durationNoEnough.setFont(font1)
|
||||||
@ -557,6 +566,7 @@ class Ui_MainWindow_SA_label(object):
|
|||||||
self.lineEdit_filter_label_add.setPlaceholderText(QCoreApplication.translate("MainWindow_SA_label", u"\u7b5b\u9009\u5668", None))
|
self.lineEdit_filter_label_add.setPlaceholderText(QCoreApplication.translate("MainWindow_SA_label", u"\u7b5b\u9009\u5668", None))
|
||||||
self.lineEdit_filter_label.setPlaceholderText(QCoreApplication.translate("MainWindow_SA_label", u"\u7b5b\u9009\u5668", None))
|
self.lineEdit_filter_label.setPlaceholderText(QCoreApplication.translate("MainWindow_SA_label", u"\u7b5b\u9009\u5668", None))
|
||||||
self.label_2.setText(QCoreApplication.translate("MainWindow_SA_label", u"\u65b0\u589e\u7684\u6807\u7b7e", None))
|
self.label_2.setText(QCoreApplication.translate("MainWindow_SA_label", u"\u65b0\u589e\u7684\u6807\u7b7e", None))
|
||||||
|
self.pushButton_save.setText(QCoreApplication.translate("MainWindow_SA_label", u"\u624b\u52a8\u4fdd\u5b58", None))
|
||||||
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow_SA_label", u"\u65e5\u5fd7", None))
|
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow_SA_label", u"\u65e5\u5fd7", None))
|
||||||
self.groupBox_right.setTitle(QCoreApplication.translate("MainWindow_SA_label", u"\u7761\u7720\u547c\u5438\u6682\u505c\u4e8b\u4ef6\u6807\u6ce8", None))
|
self.groupBox_right.setTitle(QCoreApplication.translate("MainWindow_SA_label", u"\u7761\u7720\u547c\u5438\u6682\u505c\u4e8b\u4ef6\u6807\u6ce8", None))
|
||||||
self.groupBox_examineBySecond.setTitle(QCoreApplication.translate("MainWindow_SA_label", u"\u9010\u5e27\u68c0\u67e5", None))
|
self.groupBox_examineBySecond.setTitle(QCoreApplication.translate("MainWindow_SA_label", u"\u9010\u5e27\u68c0\u67e5", None))
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>睡眠呼吸暂停事件标注</string>
|
<string>睡眠呼吸暂停事件标注</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="2,1,15,1,5">
|
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="2,1,15,1,2,5">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
@ -208,6 +208,24 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_save">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>手动保存</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_4">
|
<widget class="QGroupBox" name="groupBox_4">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
|
|||||||
@ -50,6 +50,7 @@ class Ui_Signal_Label(object):
|
|||||||
|
|
||||||
self.plainTextEdit_root_path = QPlainTextEdit(self.centralwidget)
|
self.plainTextEdit_root_path = QPlainTextEdit(self.centralwidget)
|
||||||
self.plainTextEdit_root_path.setObjectName(u"plainTextEdit_root_path")
|
self.plainTextEdit_root_path.setObjectName(u"plainTextEdit_root_path")
|
||||||
|
self.plainTextEdit_root_path.setEnabled(False)
|
||||||
|
|
||||||
self.verticalLayout_3.addWidget(self.plainTextEdit_root_path)
|
self.verticalLayout_3.addWidget(self.plainTextEdit_root_path)
|
||||||
|
|
||||||
|
|||||||
@ -40,7 +40,11 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPlainTextEdit" name="plainTextEdit_root_path"/>
|
<widget class="QPlainTextEdit" name="plainTextEdit_root_path">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user