1、为<人工纠正>和<数据精同步>加入了<数据粗同步>获取到的粗同步坐标绘制的虚线

This commit is contained in:
2025-05-11 11:13:48 +08:00
parent f01e23f4bb
commit 0c7a76ccb3
8 changed files with 283 additions and 148 deletions

View File

@ -89,6 +89,9 @@ class SettingWindow(QMainWindow):
"Input_Peak": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_INPUT_JPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT))),
"Input_Approximately_Align": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_APPROXIMATELY_ALIGNINFO_FILENAME +
ConfigParams.ENDSWITH_CSV))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_SAVE_JPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT)))
@ -105,6 +108,9 @@ class SettingWindow(QMainWindow):
"Input_Peak": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_INPUT_RPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT))),
"Input_Approximately_Align": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_APPROXIMATELY_ALIGNINFO_FILENAME +
ConfigParams.ENDSWITH_CSV))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.LABEL_CHECK_SAVE_RPEAK_FILENAME +
ConfigParams.ENDSWITH_TXT)))
@ -118,6 +124,7 @@ class SettingWindow(QMainWindow):
self.ui.spinBox_input_freq_signal.setValue(Config["InputConfig"]["Freq"])
self.ui.plainTextEdit_file_path_input_signal.setPlainText(Config["Path"]["Input_Signal"])
self.ui.plainTextEdit_file_path_input_peak.setPlainText(Config["Path"]["Input_Peak"])
self.ui.plainTextEdit_file_path_input_approximately_align.setPlainText(Config["Path"]["Input_Approximately_Align"])
self.ui.plainTextEdit_file_path_save.setPlainText(Config["Path"]["Save"])
if Config["Mode"] == "BCG":
self.ui.spinBox_bandPassOrder.setValue(Config["Filter"]["BCGBandPassOrder"])
@ -135,6 +142,7 @@ class SettingWindow(QMainWindow):
Config["InputConfig"]["Freq"] = self.ui.spinBox_input_freq_signal.value()
Config["Path"]["Input_Signal"] = self.ui.plainTextEdit_file_path_input_signal.toPlainText()
Config["Path"]["Input_Peak"] = self.ui.plainTextEdit_file_path_input_peak.toPlainText()
Config["Path"]["Input_Approximately_Align"] = self.ui.plainTextEdit_file_path_input_approximately_align.toPlainText()
Config["Path"]["Save"] = self.ui.plainTextEdit_file_path_save.toPlainText()
if Config["Mode"] == "BCG":
Config["Filter"]["BCGBandPassOrder"] = self.ui.spinBox_bandPassOrder.value()
@ -354,6 +362,10 @@ class MainWindow_label_check(QMainWindow):
self.ax1.plot(self.data.processed_data,
label=Constants.LABEL_CHECK_PLOT_LABEL_SIGNAL,
color=Constants.PLOT_COLOR_BLUE)
self.ax0.axvline(x=self.data.approximately_align_pos, color=Constants.PLOT_COLOR_BLACK, linestyle="--",
label="Start Line")
self.ax1.axvline(x=self.data.approximately_align_pos, color=Constants.PLOT_COLOR_BLACK, linestyle="--",
label="Start Line")
self.ax0.legend(loc=Constants.PLOT_UPPER_RIGHT)
self.ax1.legend(loc=Constants.PLOT_UPPER_RIGHT)
self.canvas.draw()
@ -873,6 +885,7 @@ class Data:
self.original_peak_y = None
self.corrected_peak = None
self.corrected_peak_y = None
self.approximately_align_pos = None
def open_file(self):
if (not Path(Config["Path"]["Input_Signal"]).exists()) or (not Path(Config["Path"]["Input_Peak"]).exists()):
@ -888,6 +901,24 @@ class Data:
except Exception:
return Result().failure(info=Constants.INPUT_FAILURE + Constants.LABEL_CHECK_FAILURE_REASON["Read_Data_Exception"])
try:
df = read_csv(Config["Path"]["Input_Approximately_Align"])
pos = df["pos"].values[-1]
ApplyFrequency = df["ApplyFrequency"].values[-1]
self.approximately_align_pos = int(pos * (Config["InputConfig"]["Freq"] / ApplyFrequency))
if Config["Mode"] == "BCG":
if self.approximately_align_pos > 0:
self.approximately_align_pos = 0
else:
self.approximately_align_pos = - self.approximately_align_pos
elif Config["Mode"] == "ECG":
if self.approximately_align_pos < 0:
self.approximately_align_pos = 0
else:
raise ValueError("模式不存在")
except Exception:
self.approximately_align_pos = 0
return Result().success(info=Constants.INPUT_FINISHED)
def get_archive(self):