diff --git a/func/Module_SA_label.py b/func/Module_SA_label.py
index acc017f..365ade7 100644
--- a/func/Module_SA_label.py
+++ b/func/Module_SA_label.py
@@ -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())
diff --git a/func/Module_approximately_align.py b/func/Module_approximately_align.py
index 0c6f03d..781e6af 100644
--- a/func/Module_approximately_align.py
+++ b/func/Module_approximately_align.py
@@ -970,6 +970,10 @@ class Data:
# 保存到csv中
df = DataFrame({"pos": [pos], "epoch": [epoch], "ApplyFrequency": [ApplyFrequency]})
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:
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON[
"Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_artifact_label.py b/func/Module_artifact_label.py
index 6523f98..9063d79 100644
--- a/func/Module_artifact_label.py
+++ b/func/Module_artifact_label.py
@@ -1399,6 +1399,10 @@ class Data:
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,
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:
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON[
"Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_bcg_quality_label.py b/func/Module_bcg_quality_label.py
index 8a51c6f..d48fe7d 100644
--- a/func/Module_bcg_quality_label.py
+++ b/func/Module_bcg_quality_label.py
@@ -1112,6 +1112,10 @@ class Data():
try:
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:
return Result().failure(info=filename + Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_cut_PSG.py b/func/Module_cut_PSG.py
index 1d43c64..6b2ff69 100644
--- a/func/Module_cut_PSG.py
+++ b/func/Module_cut_PSG.py
@@ -335,6 +335,10 @@ class Data:
self.SALabel.to_csv(Path(Config["Path"]["SaveFolder"]) / Path((Config["LabelSave"]["SA Label"] + Config["EndWith"]["SA Label"])),
index=False,
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())
diff --git a/func/Module_detect_Jpeak.py b/func/Module_detect_Jpeak.py
index 9ccca43..0cf45e7 100644
--- a/func/Module_detect_Jpeak.py
+++ b/func/Module_detect_Jpeak.py
@@ -472,6 +472,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_detect_Rpeak.py b/func/Module_detect_Rpeak.py
index 879d68e..06c56d6 100644
--- a/func/Module_detect_Rpeak.py
+++ b/func/Module_detect_Rpeak.py
@@ -462,6 +462,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_label_check.py b/func/Module_label_check.py
index 80bf7a1..8711f0d 100644
--- a/func/Module_label_check.py
+++ b/func/Module_label_check.py
@@ -1027,6 +1027,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_precisely_align.py b/func/Module_precisely_align.py
index 005a798..65b1126 100644
--- a/func/Module_precisely_align.py
+++ b/func/Module_precisely_align.py
@@ -1904,6 +1904,10 @@ class Data:
}
save_data = [str(save_data)]
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:
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
@@ -1925,6 +1929,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
@@ -1941,6 +1949,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
@@ -1957,6 +1969,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
@@ -1973,6 +1989,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
@@ -1989,6 +2009,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_preprocess.py b/func/Module_preprocess.py
index c52ca9d..36e8e80 100644
--- a/func/Module_preprocess.py
+++ b/func/Module_preprocess.py
@@ -492,6 +492,10 @@ class Data:
try:
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:
return Result().failure(info=Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/Module_resp_quality_label.py b/func/Module_resp_quality_label.py
index b37a74c..cf0981a 100644
--- a/func/Module_resp_quality_label.py
+++ b/func/Module_resp_quality_label.py
@@ -1354,6 +1354,10 @@ class Data():
try:
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:
return Result().failure(info=Filename.THO_PEAK + Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
@@ -1539,6 +1543,10 @@ class Data():
try:
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:
return Result().failure(info=Filename.RESP_QUALITY_LABEL + Constants.SAVE_FAILURE +
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
diff --git a/func/utils/Constants.py b/func/utils/Constants.py
index 512e286..7f36958 100644
--- a/func/utils/Constants.py
+++ b/func/utils/Constants.py
@@ -108,6 +108,8 @@ class Constants:
"Data_Length_Not_Correct": "(信号长度不正确)",
"Filter_Args_Not_Correct": "(滤波器参数输入不正确,上下截止频率都要大于0,且上截止频率应大于下截止频率)",
"Interval_Args_Not_Correct": "(间期参数输入不正确,上间期阈值应大于下间期阈值)",
+ "Save_Permission_Denied": "(所保存的文件正在被其他进程使用)",
+ "Save_File_Not_Found": "(保存路径不存在)",
"Open_Data_Exception": "(打开数据异常)",
"Process_Exception": "(处理异常)",
diff --git a/ui/MainWindow/MainWindow_SA_label.py b/ui/MainWindow/MainWindow_SA_label.py
index 21c196f..4cf694f 100644
--- a/ui/MainWindow/MainWindow_SA_label.py
+++ b/ui/MainWindow/MainWindow_SA_label.py
@@ -143,6 +143,17 @@ class Ui_MainWindow_SA_label(object):
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.setObjectName(u"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(2, 15)
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)
@@ -368,9 +380,6 @@ class Ui_MainWindow_SA_label(object):
self.gridLayout_5.setObjectName(u"gridLayout_5")
self.pushButton_quick_remark_input_durationNoEnough = QPushButton(self.groupBox_label_operation)
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())
self.pushButton_quick_remark_input_durationNoEnough.setSizePolicy(sizePolicy1)
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.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.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_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))
diff --git a/ui/MainWindow/MainWindow_SA_label.ui b/ui/MainWindow/MainWindow_SA_label.ui
index 2e35b97..510f787 100644
--- a/ui/MainWindow/MainWindow_SA_label.ui
+++ b/ui/MainWindow/MainWindow_SA_label.ui
@@ -42,7 +42,7 @@
睡眠呼吸暂停事件标注
-
+
-
-
@@ -208,6 +208,24 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 12
+
+
+
+ 手动保存
+
+
+
-