1、完成<数据粗同步>的全部功能
2、将业务返回结果封装成了一个Result对象
This commit is contained in:
@ -18,6 +18,7 @@ from yaml import dump, load, FullLoader
|
||||
|
||||
from func.utils.PublicFunc import PublicFunc
|
||||
from func.utils.Constants import Constants, ConfigParams
|
||||
from func.utils.Result import Result
|
||||
|
||||
from ui.MainWindow.MainWindow_precisely_align import Ui_MainWindow_precisely_align
|
||||
from ui.setting.precisely_align_input_setting import Ui_MainWindow_precisely_align_input_setting
|
||||
@ -401,46 +402,49 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
@overrides
|
||||
def closeEvent(self, event):
|
||||
PublicFunc.__disableAllButton__(self, ButtonState)
|
||||
reply = QMessageBox.question(self, '确认', '确认退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
|
||||
if reply == QMessageBox.Yes:
|
||||
PublicFunc.__disableAllButton__(self, ButtonState)
|
||||
|
||||
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
|
||||
QApplication.processEvents()
|
||||
PublicFunc.statusbar_show_msg(self, PublicFunc.format_status_msg(Constants.SHUTTING_DOWN))
|
||||
QApplication.processEvents()
|
||||
|
||||
# 清空画框
|
||||
del self.point0
|
||||
del self.point1
|
||||
del self.selected_point0
|
||||
del self.selected_point1
|
||||
del self.selected_point2
|
||||
del self.selected_point3
|
||||
del self.stem_black0
|
||||
del self.stem_black1
|
||||
del self.figToolbar.ax0_BCG_rectangle_front
|
||||
del self.figToolbar.ax0_BCG_rectangle_back
|
||||
del self.figToolbar.ax1_ECG_rectangle_front
|
||||
del self.figToolbar.ax1_ECG_rectangle_back
|
||||
if self.ax0 is not None:
|
||||
self.ax0.clear()
|
||||
if self.ax1 is not None:
|
||||
self.ax1.clear()
|
||||
if self.ax2 is not None:
|
||||
self.ax2.clear()
|
||||
if self.ax3 is not None:
|
||||
self.ax3.clear()
|
||||
if self.ax4 is not None:
|
||||
self.ax4.clear()
|
||||
# 清空画框
|
||||
del self.point0
|
||||
del self.point1
|
||||
del self.selected_point0
|
||||
del self.selected_point1
|
||||
del self.selected_point2
|
||||
del self.selected_point3
|
||||
del self.stem_black0
|
||||
del self.stem_black1
|
||||
del self.figToolbar.ax0_BCG_rectangle_front
|
||||
del self.figToolbar.ax0_BCG_rectangle_back
|
||||
del self.figToolbar.ax1_ECG_rectangle_front
|
||||
del self.figToolbar.ax1_ECG_rectangle_back
|
||||
if self.ax0 is not None:
|
||||
self.ax0.clear()
|
||||
if self.ax1 is not None:
|
||||
self.ax1.clear()
|
||||
if self.ax2 is not None:
|
||||
self.ax2.clear()
|
||||
if self.ax3 is not None:
|
||||
self.ax3.clear()
|
||||
if self.ax4 is not None:
|
||||
self.ax4.clear()
|
||||
|
||||
# 释放资源
|
||||
del self.data
|
||||
self.fig.clf()
|
||||
plt.close(self.fig)
|
||||
self.deleteLater()
|
||||
collect()
|
||||
self.canvas = None
|
||||
event.accept()
|
||||
# 释放资源
|
||||
del self.data
|
||||
self.fig.clf()
|
||||
plt.close(self.fig)
|
||||
self.deleteLater()
|
||||
collect()
|
||||
self.canvas = None
|
||||
event.accept()
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
@staticmethod
|
||||
def __reset__():
|
||||
def __reset__(self):
|
||||
ButtonState["Current"].update(ButtonState["Default"].copy())
|
||||
|
||||
def __plot__(self, plot_element=None):
|
||||
@ -483,8 +487,8 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
label=Constants.PRECISELY_ALIGN_PLOT_LABEL_RRIV)
|
||||
self.ax0.legend(loc=Constants.PLOT_UPPER_RIGHT)
|
||||
self.ax1.legend(loc=Constants.PLOT_UPPER_RIGHT)
|
||||
status = True
|
||||
info = Constants.DRAWING_FINISHED
|
||||
self.canvas.draw()
|
||||
return Result().success(info=Constants.DRAWING_FINISHED)
|
||||
elif sender == self.ui.pushButton_calculate_correlation and plot_element is not None and plot_element["mode"] == "init":
|
||||
self.gs = gridspec.GridSpec(2, 2, height_ratios=[1, 1], width_ratios=[1, 1])
|
||||
self.fig.subplots_adjust(top=0.88, bottom=0.05, right=0.98, left=0.05, hspace=0.15, wspace=0.15)
|
||||
@ -549,8 +553,8 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
self.ax2.legend(loc=Constants.PLOT_UPPER_RIGHT)
|
||||
self.ax3.legend(loc=Constants.PLOT_UPPER_RIGHT)
|
||||
|
||||
status = True
|
||||
info = Constants.DRAWING_FINISHED
|
||||
self.canvas.draw()
|
||||
return Result().success(info=Constants.DRAWING_FINISHED)
|
||||
elif sender == self.ui.pushButton_correlation_align or (plot_element is not None and plot_element["mode"] == "select"):
|
||||
self.gs = gridspec.GridSpec(1, 1, height_ratios=[1])
|
||||
self.fig.subplots_adjust(top=0.95, bottom=0.05, right=0.98, left=0.05, hspace=0, wspace=0)
|
||||
@ -570,8 +574,8 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
self.ax4.legend(loc=Constants.PLOT_UPPER_RIGHT)
|
||||
|
||||
status = True
|
||||
info = Constants.DRAWING_FINISHED
|
||||
self.canvas.draw()
|
||||
return Result().success(info=Constants.DRAWING_FINISHED)
|
||||
elif sender == self.ui.pushButton_view_align:
|
||||
self.gs = gridspec.GridSpec(1, 1, height_ratios=[1])
|
||||
self.fig.subplots_adjust(top=0.95, bottom=0.05, right=0.98, left=0.05, hspace=0, wspace=0)
|
||||
@ -587,14 +591,11 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
self.ax4.legend(loc=Constants.PLOT_UPPER_RIGHT)
|
||||
|
||||
status = True
|
||||
info = Constants.DRAWING_FINISHED
|
||||
self.canvas.draw()
|
||||
return Result().success(info=Constants.DRAWING_FINISHED)
|
||||
else:
|
||||
status = False
|
||||
info = Constants.DRAWING_FAILURE
|
||||
|
||||
self.canvas.draw()
|
||||
return status, info
|
||||
self.canvas.draw()
|
||||
return Result().failure(info=Constants.DRAWING_FAILURE)
|
||||
|
||||
def __update_info__(self):
|
||||
self.ui.spinBox_BCG_front_JJIV_1.setValue(Config["IV_Coordinate"]["BCG_front_1"])
|
||||
@ -625,38 +626,38 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
# 导入数据
|
||||
PublicFunc.progressbar_update(self, 1, 3, Constants.INPUTTING_DATA, 0)
|
||||
status, info = self.data.open_file()
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.data.open_file()
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + 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/3)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 处理数据
|
||||
PublicFunc.progressbar_update(self, 2, 3, Constants.DRAWING_DATA, 50)
|
||||
status, info, result = self.data.data_process_for_calculate_correlation()
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.data.data_process_for_calculate_correlation()
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + 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/3)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 绘图
|
||||
PublicFunc.progressbar_update(self, 3, 3, Constants.DRAWING_DATA, 70)
|
||||
status, info = self.__plot__(result)
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(3/3)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.__plot__(result.data)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(3/3)" + 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/3)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(3/3)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
MainWindow_precisely_align.__reset__()
|
||||
self.__reset__()
|
||||
self.figToolbar.action_Get_Range.setEnabled(True)
|
||||
self.rect_down = min(self.ax0.get_ylim()[0], self.ax1.get_ylim()[0]) - 10000
|
||||
self.rect_up = max(self.ax0.get_ylim()[1], self.ax1.get_ylim()[1]) + 10000
|
||||
@ -681,45 +682,45 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
# 计算前段相关性
|
||||
PublicFunc.progressbar_update(self, 1, 3, Constants.PRECISELY_ALIGN_CALCULATING_CORRELATION_FRONT, 0)
|
||||
status, info, result1 = self.data.calculate_correlation_front(mode, shift_front)
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result1 = self.data.calculate_correlation_front(mode, shift_front)
|
||||
if not result1.status:
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + result1.info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, result1.info, Constants.MSGBOX_TYPE_ERROR)
|
||||
PublicFunc.finish_operation(self, ButtonState)
|
||||
return
|
||||
else:
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(1/3)" + result1.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 计算后段相关性
|
||||
PublicFunc.progressbar_update(self, 2, 3, Constants.PRECISELY_ALIGN_CALCULATING_CORRELATION_BACK, 30)
|
||||
status, info, result2 = self.data.calculate_correlation_back(mode, shift_back)
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result2 = self.data.calculate_correlation_back(mode, shift_back)
|
||||
if not result2.status:
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + result2.info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, result2.info, Constants.MSGBOX_TYPE_ERROR)
|
||||
PublicFunc.finish_operation(self, ButtonState)
|
||||
return
|
||||
else:
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(2/3)" + result2.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 绘图
|
||||
PublicFunc.progressbar_update(self, 3, 3, Constants.DRAWING_DATA, 60)
|
||||
result = {}
|
||||
result.update(result1)
|
||||
result.update(result2)
|
||||
result.update(result1.data)
|
||||
result.update(result2.data)
|
||||
result.update({"mode": mode})
|
||||
if mode == "init":
|
||||
status, info = self.__plot__(result)
|
||||
result = self.__plot__(result)
|
||||
elif mode == "select":
|
||||
status, info = self.redraw_calculate_coordination(result)
|
||||
result = self.redraw_calculate_coordination(result)
|
||||
else:
|
||||
raise ValueError("模式不存在")
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(3/3)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(3/3)" + 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/3)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(3/3)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
self.figToolbar.action_Get_Range.setEnabled(False)
|
||||
self.figToolbar.deactivate_figToorbar_getRange_mode()
|
||||
@ -739,31 +740,31 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
# 处理相关对齐
|
||||
PublicFunc.progressbar_update(self, 1, 2, Constants.PRECISELY_ALIGN_ALIGNING_CORRELATION, 0)
|
||||
status, info, result = self.data.correlation_align(mode)
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.data.correlation_align(mode)
|
||||
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)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(1/2)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 绘图
|
||||
PublicFunc.progressbar_update(self, 2, 2, Constants.DRAWING_DATA, 50)
|
||||
result.update({"mode": mode})
|
||||
result.data.update({"mode": mode})
|
||||
if mode == "init":
|
||||
status, info = self.__plot__(result)
|
||||
result = self.__plot__(result.data)
|
||||
elif mode == "select":
|
||||
status, info = self.redraw_correlation_align(result)
|
||||
result = self.redraw_correlation_align(result.data)
|
||||
else:
|
||||
raise ValueError("模式不存在")
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
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)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(2/2)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
ButtonState["Current"].update(ButtonState["Statue_3"].copy())
|
||||
PublicFunc.finish_operation(self, ButtonState)
|
||||
@ -773,25 +774,25 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
# 数据后处理
|
||||
PublicFunc.progressbar_update(self, 1, 2, Constants.PRECISELY_ALIGN_POSTPROCESSING_VIEW, 0)
|
||||
status, info = self.data.data_postprocess()
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(1/2)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.data.data_postprocess()
|
||||
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)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(1/2)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 绘图
|
||||
PublicFunc.progressbar_update(self, 2, 2, Constants.DRAWING_DATA, 50)
|
||||
status, info = self.__plot__()
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(2/2)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.__plot__()
|
||||
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)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(2/2)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
ButtonState["Current"].update(ButtonState["Statue_4"].copy())
|
||||
PublicFunc.finish_operation(self, ButtonState)
|
||||
@ -805,14 +806,14 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
|
||||
# 保存对齐信息
|
||||
PublicFunc.progressbar_update(self, 1, 6, Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO, 0)
|
||||
status, info = self.data.save_alignInfo()
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(1/6)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
result = self.data.save_alignInfo()
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(1/6)" + 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/6)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(1/6)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 保存切割后orgBcg
|
||||
PublicFunc.progressbar_update(self, 2, 6, Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG, 0)
|
||||
@ -823,18 +824,18 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
for start in range(0, total_rows, chunk_size):
|
||||
end = min(start + chunk_size, total_rows)
|
||||
chunk = DataFrame(self.data.res_orgBcg.reshape(-1)).iloc[start:end]
|
||||
status, info = self.data.save_res_orgBcg(chunk)
|
||||
result = self.data.save_res_orgBcg(chunk)
|
||||
progress = int((end / total_rows) * 100)
|
||||
self.progressbar.setValue(progress)
|
||||
QApplication.processEvents()
|
||||
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(2/6)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(2/6)" + 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/6)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(2/6)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 保存切割后BCG
|
||||
PublicFunc.progressbar_update(self, 3, 6, Constants.PRECISELY_ALIGN_SAVING_RES_BCG, 0)
|
||||
@ -845,18 +846,18 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
for start in range(0, total_rows, chunk_size):
|
||||
end = min(start + chunk_size, total_rows)
|
||||
chunk = DataFrame(self.data.res_BCG.reshape(-1)).iloc[start:end]
|
||||
status, info = self.data.save_res_BCG(chunk)
|
||||
result = self.data.save_res_BCG(chunk)
|
||||
progress = int((end / total_rows) * 100)
|
||||
self.progressbar.setValue(progress)
|
||||
QApplication.processEvents()
|
||||
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(3/6)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(3/6)" + 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/6)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(3/6)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 保存切割后ECG
|
||||
PublicFunc.progressbar_update(self, 4, 6, Constants.PRECISELY_ALIGN_SAVING_CUT_ECG, 0)
|
||||
@ -867,18 +868,18 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
for start in range(0, total_rows, chunk_size):
|
||||
end = min(start + chunk_size, total_rows)
|
||||
chunk = DataFrame(self.data.cut_ECG.reshape(-1)).iloc[start:end]
|
||||
status, info = self.data.save_cut_ECG(chunk)
|
||||
result = self.data.save_cut_ECG(chunk)
|
||||
progress = int((end / total_rows) * 100)
|
||||
self.progressbar.setValue(progress)
|
||||
QApplication.processEvents()
|
||||
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(4/6)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(4/6)" + 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/6)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(4/6)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 保存切割后J峰
|
||||
PublicFunc.progressbar_update(self, 5, 6, Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK, 0)
|
||||
@ -889,18 +890,18 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
for start in range(0, total_rows, chunk_size):
|
||||
end = min(start + chunk_size, total_rows)
|
||||
chunk = DataFrame(self.data.cut_Jpeak.reshape(-1)).iloc[start:end]
|
||||
status, info = self.data.save_Jpeak(chunk)
|
||||
result = self.data.save_Jpeak(chunk)
|
||||
progress = int((end / total_rows) * 100)
|
||||
self.progressbar.setValue(progress)
|
||||
QApplication.processEvents()
|
||||
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(5/6)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(5/6)" + 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/6)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(5/6)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
# 保存切割后R峰
|
||||
PublicFunc.progressbar_update(self, 6, 6, Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK, 0)
|
||||
@ -911,20 +912,20 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
for start in range(0, total_rows, chunk_size):
|
||||
end = min(start + chunk_size, total_rows)
|
||||
chunk = DataFrame(self.data.cut_Rpeak.reshape(-1)).iloc[start:end]
|
||||
status, info = self.data.save_Rpeak(chunk)
|
||||
result = self.data.save_Rpeak(chunk)
|
||||
progress = int((end / total_rows) * 100)
|
||||
self.progressbar.setValue(progress)
|
||||
QApplication.processEvents()
|
||||
|
||||
if not status:
|
||||
PublicFunc.text_output(self.ui, "(6/6)" + info, Constants.TIPS_TYPE_ERROR)
|
||||
PublicFunc.msgbox_output(self, info, Constants.MSGBOX_TYPE_ERROR)
|
||||
if not result.status:
|
||||
PublicFunc.text_output(self.ui, "(6/6)" + 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/6)" + info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.msgbox_output(self, Constants.SAVING_FINISHED, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.text_output(self.ui, "(6/6)" + result.info, Constants.TIPS_TYPE_INFO)
|
||||
|
||||
PublicFunc.msgbox_output(self, result.info, Constants.TIPS_TYPE_INFO)
|
||||
PublicFunc.finish_operation(self, ButtonState)
|
||||
|
||||
def __update_coordinate__(self):
|
||||
@ -1065,10 +1066,9 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
self.ax2.set_ylim(self.ax2_ylime)
|
||||
|
||||
self.canvas.draw()
|
||||
return Result().success(info=Constants.DRAWING_FINISHED)
|
||||
|
||||
return True, Constants.DRAWING_FINISHED
|
||||
|
||||
return False, Constants.DRAWING_FAILURE
|
||||
return Result().failure(info=Constants.DRAWING_FAILURE)
|
||||
|
||||
def redraw_correlation_align(self, plot_element=None):
|
||||
if plot_element is not None and plot_element["mode"] == "select":
|
||||
@ -1103,10 +1103,9 @@ class MainWindow_precisely_align(QMainWindow):
|
||||
self.ax4.set_ylim(self.ax4_ylime)
|
||||
|
||||
self.canvas.draw()
|
||||
return Result().success(info=Constants.DRAWING_FINISHED)
|
||||
|
||||
return True, Constants.DRAWING_FINISHED
|
||||
|
||||
return False, Constants.DRAWING_FAILURE
|
||||
return Result().failure(info=Constants.DRAWING_FAILURE)
|
||||
|
||||
def toggle_home(self):
|
||||
if self.ax0 is not None:
|
||||
@ -1424,7 +1423,7 @@ class Data:
|
||||
or (not Path(Config["Path"]["Input_Jpeak"]).exists())
|
||||
or (not Path(Config["Path"]["Input_ECG"]).exists())
|
||||
or (not Path(Config["Path"]["Input_Rpeak"]).exists())):
|
||||
return False, Constants.INPUT_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Data_Path_Not_Exist"]
|
||||
return Result().failure(info=Constants.INPUT_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Data_Path_Not_Exist"])
|
||||
|
||||
try:
|
||||
self.raw_orgBcg = read_csv(Config["Path"]["Input_orgBcg"],
|
||||
@ -1445,15 +1444,13 @@ class Data:
|
||||
self.argmax_BCG = np_argmax(self.raw_BCG)
|
||||
self.argmax_ECG = np_argmax(self.raw_ECG)
|
||||
except Exception:
|
||||
return False, Constants.INPUT_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Read_Data_Exception"]
|
||||
return Result().failure(info=Constants.INPUT_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Read_Data_Exception"])
|
||||
|
||||
return True, Constants.INPUT_FINISHED
|
||||
return Result().success(info=Constants.INPUT_FINISHED)
|
||||
|
||||
def data_process_for_calculate_correlation(self):
|
||||
result = {}
|
||||
|
||||
if self.Jpeak is None or self.Rpeak is None:
|
||||
return False, Constants.PRECISELY_ALIGN_PROCESS_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Data_Not_Exist"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_PROCESS_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Data_Not_Exist"])
|
||||
|
||||
try:
|
||||
self.JJIs = diff(self.Jpeak)
|
||||
@ -1463,20 +1460,18 @@ class Data:
|
||||
|
||||
result = {"JJIVs": JJIVs, "RRIVs": RRIVs}
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_PROCESS_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Process_Data_Exception"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_PROCESS_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Process_Data_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_PROCESS_FINISHED, result
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_PROCESS_FINISHED, data=result)
|
||||
|
||||
def calculate_correlation_front(self, mode, shift_front=None):
|
||||
result = {}
|
||||
|
||||
if ((Config["IV_Coordinate"]["BCG_front_1"] == Config["IV_Coordinate"]["BCG_front_2"])
|
||||
or (Config["IV_Coordinate"]["ECG_front_1"] == Config["IV_Coordinate"]["ECG_front_2"])):
|
||||
return False, Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_FRONT + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Value_Equal"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_FRONT + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Value_Equal"])
|
||||
|
||||
if ((Config["IV_Coordinate"]["BCG_front_2"] - Config["IV_Coordinate"]["BCG_front_1"])
|
||||
>= (Config["IV_Coordinate"]["ECG_front_2"] - Config["IV_Coordinate"]["ECG_front_1"])):
|
||||
return False, Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_FRONT + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_JJIVRange_too_Large"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_FRONT + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_JJIVRange_too_Large"])
|
||||
|
||||
try:
|
||||
if mode == "init":
|
||||
@ -1530,20 +1525,18 @@ class Data:
|
||||
}
|
||||
}
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_FRONT + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Exception"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_FRONT + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_CALCULATE_FINISHED_FRONT, result
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_CALCULATE_FINISHED_FRONT, data=result)
|
||||
|
||||
def calculate_correlation_back(self, mode, shift_back=None):
|
||||
result = {}
|
||||
|
||||
if ((Config["IV_Coordinate"]["BCG_back_1"] == Config["IV_Coordinate"]["BCG_back_2"])
|
||||
or (Config["IV_Coordinate"]["ECG_back_1"] == Config["IV_Coordinate"]["ECG_back_2"])):
|
||||
return False, Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_BACK + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Value_Equal"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_BACK + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Value_Equal"])
|
||||
|
||||
if ((Config["IV_Coordinate"]["BCG_back_2"] - Config["IV_Coordinate"]["BCG_back_1"])
|
||||
>= (Config["IV_Coordinate"]["ECG_back_2"] - Config["IV_Coordinate"]["ECG_back_1"])):
|
||||
return False, Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_BACK + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_JJIVRange_too_Large"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_BACK + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_JJIVRange_too_Large"])
|
||||
|
||||
try:
|
||||
if mode == "init":
|
||||
@ -1597,13 +1590,11 @@ class Data:
|
||||
}
|
||||
}
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_BACK + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Exception"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_CALCULATE_FAILURE_BACK + Constants.PRECISELY_ALIGN_FAILURE_REASON["Calculate_Correlation_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_CALCULATE_FINISHED_BACK, result
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_CALCULATE_FINISHED_BACK, data=result)
|
||||
|
||||
def correlation_align(self, mode):
|
||||
result = {}
|
||||
|
||||
try:
|
||||
if mode == "init":
|
||||
anchor0 = [Config["front"]["anchor_R"], Config["front"]["anchor_J"]]
|
||||
@ -1683,9 +1674,9 @@ class Data:
|
||||
else:
|
||||
raise ValueError("模式不存在")
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_ALIGN_CORRELATION_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Correlation_Align_Exception"], result
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_ALIGN_CORRELATION_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Correlation_Align_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_ALIGN_CORRELATION_FINISHED, result
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_ALIGN_CORRELATION_FINISHED, data=result)
|
||||
|
||||
def data_postprocess(self):
|
||||
try:
|
||||
@ -1738,9 +1729,10 @@ class Data:
|
||||
Config["frontcut_index_ECG"] = frontcut_index_ECG
|
||||
Config["backcut_index_ECG"] = backcut_index_ECG
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_POSTPROCESS_VIEW_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["PostProcess_Align_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_POSTPROCESS_VIEW_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["PostProcess_Align_Exception"])
|
||||
|
||||
return True, f"{Constants.PRECISELY_ALIGN_POSTPROCESS_VIEW_FINISHED},BCG前后段被切割的坐标值为[{frontcut_index_BCG}, {backcut_index_BCG}],ECG前后段被切割的坐标值为[{frontcut_index_ECG}, {backcut_index_ECG}]"
|
||||
info = f"{Constants.PRECISELY_ALIGN_POSTPROCESS_VIEW_FINISHED},BCG前后段被切割的坐标值为[{frontcut_index_BCG}, {backcut_index_BCG}],ECG前后段被切割的坐标值为[{frontcut_index_ECG}, {backcut_index_ECG}]"
|
||||
return Result().success(info=info)
|
||||
|
||||
def save_alignInfo(self):
|
||||
try:
|
||||
@ -1778,64 +1770,64 @@ class Data:
|
||||
DataFrame(save_data).to_csv(Config["Path"]["Save_BCG_AlignInfo"], index=False, header=False)
|
||||
DataFrame(save_data).to_csv(Config["Path"]["Save_ECG_AlignInfo"], index=False, header=False)
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FINISHED
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_SAVING_ALIGNINFO_FINISHED)
|
||||
|
||||
def save_res_orgBcg(self, chunk):
|
||||
if self.res_orgBcg is None:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["res_orgBcg_Not_Exist"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["res_orgBcg_Not_Exist"])
|
||||
|
||||
try:
|
||||
chunk.to_csv(Config["Path"]["Save_orgBcg"], mode='a', index=False, header=False)
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FINISHED
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_SAVING_RES_ORGBCG_FINISHED)
|
||||
|
||||
def save_res_BCG(self, chunk):
|
||||
if self.res_BCG is None:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["res_BCG_Not_Exist"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["res_BCG_Not_Exist"])
|
||||
|
||||
try:
|
||||
chunk.to_csv(Config["Path"]["Save_BCG"], mode='a', index=False, header=False)
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FINISHED
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_SAVING_RES_BCG_FINISHED)
|
||||
|
||||
def save_cut_ECG(self, chunk):
|
||||
if self.cut_ECG is None:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["cut_ECG_Not_Exist"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["cut_ECG_Not_Exist"])
|
||||
|
||||
try:
|
||||
chunk.to_csv(Config["Path"]["Save_ECG"], mode='a', index=False, header=False)
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FINISHED
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_SAVING_CUT_ECG_FINISHED)
|
||||
|
||||
def save_Jpeak(self, chunk):
|
||||
if self.cut_Jpeak is None:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["cut_Jpeak_Not_Exist"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["cut_Jpeak_Not_Exist"])
|
||||
|
||||
try:
|
||||
chunk.to_csv(Config["Path"]["Save_Jpeak"], mode='a', index=False, header=False)
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FINISHED
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_SAVING_CUT_JPEAK_FINISHED)
|
||||
|
||||
def save_Rpeak(self, chunk):
|
||||
if self.cut_Rpeak is None:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["cut_Rpeak_Not_Exist"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["cut_Rpeak_Not_Exist"])
|
||||
|
||||
try:
|
||||
chunk.to_csv(Config["Path"]["Save_Rpeak"], mode='a', index=False, header=False)
|
||||
except Exception:
|
||||
return False, Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"]
|
||||
return Result().failure(info=Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FAILURE + Constants.PRECISELY_ALIGN_FAILURE_REASON["Save_Exception"])
|
||||
|
||||
return True, Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FINISHED
|
||||
return Result().success(info=Constants.PRECISELY_ALIGN_SAVING_CUT_RPEAK_FINISHED)
|
||||
|
||||
|
||||
class CustomNavigationToolbar(NavigationToolbar2QT):
|
||||
|
||||
Reference in New Issue
Block a user