1、修复了只读权限下保存csv时,无法正确保存的问题,当无法正确保存时,程序将输出较为直观的提示信息
2、对多处保存路径进行了空值检测,为空值时程序将输出较为直观的提示信息
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_next.clicked.connect(self.__slot_btn_move__)
|
||||
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_maybeDesaturation.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()
|
||||
|
||||
# 导入数据
|
||||
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()
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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()
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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()
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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()
|
||||
for key, value in self.data.channel.items():
|
||||
PublicFunc.text_output(self.ui, key + "重采样后的长度:" + str(len(value)), Constants.TIPS_TYPE_INFO)
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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__()
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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()
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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()
|
||||
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.finish_operation(self, ButtonState)
|
||||
return
|
||||
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():
|
||||
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,
|
||||
correct_End, correct_EventsType, isLabeled)
|
||||
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)}"
|
||||
PublicFunc.text_output(self.ui, info, Constants.MSGBOX_TYPE_INFO)
|
||||
if result.status:
|
||||
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:
|
||||
PublicFunc.msgbox_output(self, Constants.SA_LABEL_WRONG_ARGS, Constants.MSGBOX_TYPE_ERROR)
|
||||
else:
|
||||
@ -810,17 +838,19 @@ class MainWindow_SA_label(QMainWindow):
|
||||
self.data.df_corrected.at[Config["EventLabelIndexList"][
|
||||
Config["PlotEventIndex"]], "correct_EventsType"] = "Hypopnea"
|
||||
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()
|
||||
index = str(Config["PlotEventIndex"] + 1)
|
||||
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_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"])
|
||||
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.MSGBOX_TYPE_INFO)
|
||||
if result.status:
|
||||
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():
|
||||
self.ui.checkBox_examineLabeled.setChecked(False)
|
||||
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()
|
||||
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):
|
||||
if self.data is None:
|
||||
return
|
||||
@ -1595,6 +1653,10 @@ class Data:
|
||||
|
||||
try:
|
||||
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:
|
||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||
@ -1610,6 +1672,10 @@ class Data:
|
||||
|
||||
try:
|
||||
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:
|
||||
return Result().failure(info=Constants.SAVE_FAILURE +
|
||||
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||
|
||||
Reference in New Issue
Block a user