尝试将数据结构化流程中的append.py步骤整合入此程序中

This commit is contained in:
Yorusora 2025-02-19 20:22:12 +08:00
parent ae57e9274b
commit bbe6abc57f
3 changed files with 129 additions and 76 deletions

View File

@ -21,8 +21,32 @@ class Ui_MainWindow(object):
self.gridLayout.setObjectName("gridLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.verticalLayout_left = QtWidgets.QVBoxLayout()
self.verticalLayout_left.setObjectName("verticalLayout_left")
self.gridLayout_left = QtWidgets.QGridLayout()
self.gridLayout_left.setObjectName("gridLayout_left")
self.pushButton_outputLabel = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_outputLabel.sizePolicy().hasHeightForWidth())
self.pushButton_outputLabel.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("黑体")
font.setPointSize(14)
self.pushButton_outputLabel.setFont(font)
self.pushButton_outputLabel.setObjectName("pushButton_outputLabel")
self.gridLayout_left.addWidget(self.pushButton_outputLabel, 6, 1, 1, 1)
self.pushButton_append = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_append.sizePolicy().hasHeightForWidth())
self.pushButton_append.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("黑体")
font.setPointSize(14)
self.pushButton_append.setFont(font)
self.pushButton_append.setObjectName("pushButton_append")
self.gridLayout_left.addWidget(self.pushButton_append, 6, 0, 1, 1)
self.groupBox_inputSetting = QtWidgets.QGroupBox(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
@ -493,9 +517,7 @@ class Ui_MainWindow(object):
self.pushButton_savepath_open.setObjectName("pushButton_savepath_open")
self.gridLayout_19.addWidget(self.pushButton_savepath_open, 0, 2, 1, 1)
self.gridLayout_4.addWidget(self.groupBox_save, 5, 0, 1, 5)
self.verticalLayout_left.addWidget(self.groupBox_inputSetting)
spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_left.addItem(spacerItem9)
self.gridLayout_left.addWidget(self.groupBox_inputSetting, 0, 0, 1, 2)
self.groupBox_autoplay = QtWidgets.QGroupBox(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
@ -843,9 +865,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_move_operate.addWidget(self.pushButton_right_move)
self.gridLayout_49.addLayout(self.horizontalLayout_move_operate, 0, 0, 1, 2)
self.gridLayout_6.addWidget(self.groupBox_move, 0, 0, 1, 1)
self.verticalLayout_left.addWidget(self.groupBox_autoplay)
spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_left.addItem(spacerItem10)
self.gridLayout_left.addWidget(self.groupBox_autoplay, 2, 0, 1, 2)
self.groupBox_findpeaks_options = QtWidgets.QGroupBox(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
@ -909,27 +929,19 @@ class Ui_MainWindow(object):
self.lineEdit_findpeaks_min_height.setPlaceholderText("")
self.lineEdit_findpeaks_min_height.setObjectName("lineEdit_findpeaks_min_height")
self.gridLayout_21.addWidget(self.lineEdit_findpeaks_min_height, 0, 3, 1, 1)
self.verticalLayout_left.addWidget(self.groupBox_findpeaks_options)
self.gridLayout_left.addWidget(self.groupBox_findpeaks_options, 4, 0, 1, 2)
spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_left.addItem(spacerItem9, 1, 0, 1, 2)
spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_left.addItem(spacerItem10, 5, 0, 1, 2)
spacerItem11 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_left.addItem(spacerItem11)
self.pushButton_outputLabel = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_outputLabel.sizePolicy().hasHeightForWidth())
self.pushButton_outputLabel.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("黑体")
font.setPointSize(14)
self.pushButton_outputLabel.setFont(font)
self.pushButton_outputLabel.setObjectName("pushButton_outputLabel")
self.verticalLayout_left.addWidget(self.pushButton_outputLabel)
self.verticalLayout_left.setStretch(0, 10)
self.verticalLayout_left.setStretch(1, 2)
self.verticalLayout_left.setStretch(2, 6)
self.verticalLayout_left.setStretch(3, 2)
self.verticalLayout_left.setStretch(6, 2)
self.horizontalLayout.addLayout(self.verticalLayout_left)
self.gridLayout_left.addItem(spacerItem11, 3, 0, 1, 2)
self.gridLayout_left.setRowStretch(0, 10)
self.gridLayout_left.setRowStretch(1, 2)
self.gridLayout_left.setRowStretch(2, 6)
self.gridLayout_left.setRowStretch(3, 2)
self.gridLayout_left.setRowStretch(6, 2)
self.horizontalLayout.addLayout(self.gridLayout_left)
self.verticalLayout_canvas = QtWidgets.QVBoxLayout()
self.verticalLayout_canvas.setObjectName("verticalLayout_canvas")
self.horizontalLayout.addLayout(self.verticalLayout_canvas)
@ -1136,6 +1148,8 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "ECG_Label_Check"))
self.pushButton_outputLabel.setText(_translate("MainWindow", "导出标签"))
self.pushButton_append.setText(_translate("MainWindow", "片段合并"))
self.groupBox_inputSetting.setTitle(_translate("MainWindow", "导入操作"))
self.lineEdit_rootpath.setPlaceholderText(_translate("MainWindow", "数据根目录路径"))
self.label_choose.setText(_translate("MainWindow", "数据和标签的序号选择:"))
@ -1211,7 +1225,6 @@ class Ui_MainWindow(object):
self.label_5.setText(_translate("MainWindow", "最小间隔:"))
self.lineEdit_findpeaks_min_interval.setText(_translate("MainWindow", "1000"))
self.lineEdit_findpeaks_min_height.setText(_translate("MainWindow", "0.5"))
self.pushButton_outputLabel.setText(_translate("MainWindow", "导出标签"))
self.groupBox_labelDisplay.setTitle(_translate("MainWindow", "标签"))
self.groupBox_info.setTitle(_translate("MainWindow", "信息"))
self.label_label2_length.setText(_translate("MainWindow", "0"))

View File

@ -18,8 +18,46 @@
<item row="0" column="0" rowspan="3" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="5,20,3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_left" stretch="10,2,6,2,0,0,2">
<item>
<layout class="QGridLayout" name="gridLayout_left" rowstretch="10,2,6,2,0,0,2">
<item row="6" column="1">
<widget class="QPushButton" name="pushButton_outputLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>导出标签</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_append">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>片段合并</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_inputSetting">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@ -849,20 +887,7 @@
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="2" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_autoplay">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@ -1444,20 +1469,7 @@
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="4" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_findpeaks_options">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@ -1560,7 +1572,20 @@
</layout>
</widget>
</item>
<item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0" colspan="2">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -1573,24 +1598,18 @@
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_outputLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item row="3" column="0" colspan="2">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>14</pointsize>
</font>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
<property name="text">
<string>导出标签</string>
</property>
</widget>
</spacer>
</item>
</layout>
</item>

View File

@ -113,6 +113,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.pushButton_label1path_open.clicked.connect(self.slot_btn_selectPath)
self.pushButton_label2path_open.clicked.connect(self.slot_btn_selectPath)
self.pushButton_dataInput.clicked.connect(self.slot_btn_dataInput)
self.pushButton_append.clicked.connect(self.slot_btn_append)
self.pushButton_outputLabel.clicked.connect(self.slot_btn_outputLabel)
self.comboBox_choose.currentTextChanged.connect(self.slot_comboBox_textChanged)
self.radioButton_inputMode_auto.clicked.connect(self.slot_radioBtn_inputMode_auto)
@ -152,6 +153,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.radioButton_data1_fillterMode.setChecked(True)
self.radioButton_data2_fillterMode.setChecked(True)
self.radioButton_move_preset_1.setChecked(True)
self.pushButton_append.setEnabled(False)
self.pushButton_outputLabel.setEnabled(False)
self.figToolbar.action_Label_Single.setEnabled(False)
self.figToolbar.action_Label_Multiple.setEnabled(False)
@ -360,6 +362,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 更新界面
self.groupBox_inputSetting.setEnabled(False)
self.groupBox_autoplay.setEnabled(True)
self.pushButton_append.setEnabled(True)
self.pushButton_outputLabel.setEnabled(True)
self.figToolbar.action_Label_Single.setEnabled(True)
self.figToolbar.action_Label_Multiple.setEnabled(True)
@ -570,6 +573,24 @@ class MainWindow(QMainWindow, Ui_MainWindow):
info(f"Jumped to x_axis: {str(int(x))}.")
self.textBrowser_update(f"操作跳转到x坐标: {str(int(x))}")
def slot_btn_append(self):
# TODO
reply = QMessageBox.question(self, "警告:确认操作", f"你正在执行<片段合并>,请确保需要被合并的片段已完成标注工作。你确定要将片段合并,并将结果保存到{self.lineEdit_resample1000Hz_save_path.text()}", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
for idx in range(len(self.ecg_seq)):
DataFrame(self.ecg_seq[idx].reshape(-1)).to_csv(
str(Path(self.lineEdit_detect_Rpeaks_save_path.text()) / f"{idx + 1}ecg.txt"), index=False,
header=None)
DataFrame(self.R_peak_seq[idx].reshape(-1)).to_csv(
str(Path(self.lineEdit_detect_Rpeaks_save_path.text()) / f"{idx + 1}Rpeak.txt"), index=False,
header=None)
info(f"Saved Data {idx + 1} to Directory {self.lineEdit_detect_Rpeaks_save_path.text()}.")
self.textBrowser_update(
f"提示:保存片段{idx + 1}成功至文件夹{self.lineEdit_detect_Rpeaks_save_path.text()}")
self.msgBox.setText(f"保存成功至{self.lineEdit_detect_Rpeaks_save_path.text()}")
self.msgBox.setIcon(QMessageBox.Information)
self.msgBox.exec()
def slot_btn_outputLabel(self):
np.savetxt(Path(self.lineEdit_savepath.text()), self.label2, fmt='%d', newline='\n')
info(f"Manually Saved Data to: {str(Path(self.lineEdit_savepath.text()))}.")