删除了所有使用PSG_label的操作,所有标签将仅使用BCG_label进行操作。PSG_label_2_BCG_label在之后可整合到主程序中。

This commit is contained in:
Yorusora 2025-01-09 13:59:03 +08:00
parent 4108c18f12
commit f5386bb0b3
4 changed files with 483 additions and 580 deletions

View File

@ -255,80 +255,6 @@ class Ui_MainWindow(object):
self.groupBox_4.setObjectName("groupBox_4")
self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_4)
self.gridLayout_2.setObjectName("gridLayout_2")
self.lineEdit_remark = QtWidgets.QLineEdit(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_remark.sizePolicy().hasHeightForWidth())
self.lineEdit_remark.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.lineEdit_remark.setFont(font)
self.lineEdit_remark.setObjectName("lineEdit_remark")
self.gridLayout_2.addWidget(self.lineEdit_remark, 5, 2, 1, 3)
self.pushButton_left = QtWidgets.QPushButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_left.sizePolicy().hasHeightForWidth())
self.pushButton_left.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.pushButton_left.setFont(font)
self.pushButton_left.setObjectName("pushButton_left")
self.gridLayout_2.addWidget(self.pushButton_left, 15, 0, 1, 1)
self.lineEdit_correctStart = QtWidgets.QLineEdit(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_correctStart.sizePolicy().hasHeightForWidth())
self.lineEdit_correctStart.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.lineEdit_correctStart.setFont(font)
self.lineEdit_correctStart.setObjectName("lineEdit_correctStart")
self.gridLayout_2.addWidget(self.lineEdit_correctStart, 7, 2, 1, 3)
self.label_correctStart = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_correctStart.sizePolicy().hasHeightForWidth())
self.label_correctStart.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_correctStart.setFont(font)
self.label_correctStart.setObjectName("label_correctStart")
self.gridLayout_2.addWidget(self.label_correctStart, 7, 0, 1, 1)
self.checkBox_examineLabeled = QtWidgets.QCheckBox(self.groupBox_4)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.checkBox_examineLabeled.setFont(font)
self.checkBox_examineLabeled.setObjectName("checkBox_examineLabeled")
self.gridLayout_2.addWidget(self.checkBox_examineLabeled, 0, 0, 1, 4)
self.label_quick_remark_input = QtWidgets.QLabel(self.groupBox_4)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_quick_remark_input.setFont(font)
self.label_quick_remark_input.setObjectName("label_quick_remark_input")
self.gridLayout_2.addWidget(self.label_quick_remark_input, 6, 0, 1, 1)
self.lineEdit_correctEnd = QtWidgets.QLineEdit(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_correctEnd.sizePolicy().hasHeightForWidth())
self.lineEdit_correctEnd.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.lineEdit_correctEnd.setFont(font)
self.lineEdit_correctEnd.setObjectName("lineEdit_correctEnd")
self.gridLayout_2.addWidget(self.lineEdit_correctEnd, 9, 2, 1, 3)
self.label_correctEnd = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@ -340,7 +266,84 @@ class Ui_MainWindow(object):
font.setPointSize(14)
self.label_correctEnd.setFont(font)
self.label_correctEnd.setObjectName("label_correctEnd")
self.gridLayout_2.addWidget(self.label_correctEnd, 9, 0, 1, 1)
self.gridLayout_2.addWidget(self.label_correctEnd, 8, 0, 1, 1)
self.lineEdit_correctEnd = QtWidgets.QLineEdit(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_correctEnd.sizePolicy().hasHeightForWidth())
self.lineEdit_correctEnd.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.lineEdit_correctEnd.setFont(font)
self.lineEdit_correctEnd.setObjectName("lineEdit_correctEnd")
self.gridLayout_2.addWidget(self.lineEdit_correctEnd, 8, 2, 1, 3)
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
self.label_score = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_score.sizePolicy().hasHeightForWidth())
self.label_score.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_score.setFont(font)
self.label_score.setObjectName("label_score")
self.horizontalLayout_12.addWidget(self.label_score)
self.radioButton_1_class = QtWidgets.QRadioButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.radioButton_1_class.sizePolicy().hasHeightForWidth())
self.radioButton_1_class.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.radioButton_1_class.setFont(font)
self.radioButton_1_class.setObjectName("radioButton_1_class")
self.horizontalLayout_12.addWidget(self.radioButton_1_class)
self.radioButton_2_class = QtWidgets.QRadioButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.radioButton_2_class.sizePolicy().hasHeightForWidth())
self.radioButton_2_class.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.radioButton_2_class.setFont(font)
self.radioButton_2_class.setObjectName("radioButton_2_class")
self.horizontalLayout_12.addWidget(self.radioButton_2_class)
self.radioButton_3_class = QtWidgets.QRadioButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.radioButton_3_class.sizePolicy().hasHeightForWidth())
self.radioButton_3_class.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.radioButton_3_class.setFont(font)
self.radioButton_3_class.setObjectName("radioButton_3_class")
self.horizontalLayout_12.addWidget(self.radioButton_3_class)
self.gridLayout_2.addLayout(self.horizontalLayout_12, 3, 0, 1, 5)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_2.addItem(spacerItem3, 14, 1, 1, 1)
self.lineEdit_correctStart = QtWidgets.QLineEdit(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_correctStart.sizePolicy().hasHeightForWidth())
self.lineEdit_correctStart.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.lineEdit_correctStart.setFont(font)
self.lineEdit_correctStart.setObjectName("lineEdit_correctStart")
self.gridLayout_2.addWidget(self.lineEdit_correctStart, 6, 2, 1, 3)
self.label_BCG_event = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@ -356,14 +359,47 @@ class Ui_MainWindow(object):
self.label_BCG_event.setText("")
self.label_BCG_event.setAlignment(QtCore.Qt.AlignCenter)
self.label_BCG_event.setObjectName("label_BCG_event")
self.gridLayout_2.addWidget(self.label_BCG_event, 2, 0, 1, 5)
self.gridLayout_2.addWidget(self.label_BCG_event, 1, 0, 1, 5)
self.pushButton_quick_remark_input_waitingForTalk = QtWidgets.QPushButton(self.groupBox_4)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.pushButton_quick_remark_input_waitingForTalk.setFont(font)
self.pushButton_quick_remark_input_waitingForTalk.setObjectName("pushButton_quick_remark_input_waitingForTalk")
self.gridLayout_2.addWidget(self.pushButton_quick_remark_input_waitingForTalk, 6, 2, 1, 3)
self.gridLayout_2.addWidget(self.pushButton_quick_remark_input_waitingForTalk, 5, 2, 1, 3)
self.pushButton_right = QtWidgets.QPushButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_right.sizePolicy().hasHeightForWidth())
self.pushButton_right.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.pushButton_right.setFont(font)
self.pushButton_right.setObjectName("pushButton_right")
self.gridLayout_2.addWidget(self.pushButton_right, 15, 0, 1, 1)
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_2.addItem(spacerItem4, 15, 1, 1, 1)
self.label_remark = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_remark.sizePolicy().hasHeightForWidth())
self.label_remark.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_remark.setFont(font)
self.label_remark.setObjectName("label_remark")
self.gridLayout_2.addWidget(self.label_remark, 4, 0, 1, 1)
self.label_quick_remark_input = QtWidgets.QLabel(self.groupBox_4)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_quick_remark_input.setFont(font)
self.label_quick_remark_input.setObjectName("label_quick_remark_input")
self.gridLayout_2.addWidget(self.label_quick_remark_input, 5, 0, 1, 1)
self.horizontalLayout_radioButton = QtWidgets.QHBoxLayout()
self.horizontalLayout_radioButton.setObjectName("horizontalLayout_radioButton")
self.label_events = QtWidgets.QLabel(self.groupBox_4)
@ -426,98 +462,38 @@ class Ui_MainWindow(object):
self.radioButton_HPY.setFont(font)
self.radioButton_HPY.setObjectName("radioButton_HPY")
self.horizontalLayout_radioButton.addWidget(self.radioButton_HPY)
self.gridLayout_2.addLayout(self.horizontalLayout_radioButton, 3, 0, 1, 5)
self.label_PSG_event = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
self.gridLayout_2.addLayout(self.horizontalLayout_radioButton, 2, 0, 1, 5)
self.lineEdit_remark = QtWidgets.QLineEdit(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_PSG_event.sizePolicy().hasHeightForWidth())
self.label_PSG_event.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setWeight(50)
self.label_PSG_event.setFont(font)
self.label_PSG_event.setText("")
self.label_PSG_event.setAlignment(QtCore.Qt.AlignCenter)
self.label_PSG_event.setObjectName("label_PSG_event")
self.gridLayout_2.addWidget(self.label_PSG_event, 1, 0, 1, 5)
self.label_remark = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_remark.sizePolicy().hasHeightForWidth())
self.label_remark.setSizePolicy(sizePolicy)
sizePolicy.setHeightForWidth(self.lineEdit_remark.sizePolicy().hasHeightForWidth())
self.lineEdit_remark.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_remark.setFont(font)
self.label_remark.setObjectName("label_remark")
self.gridLayout_2.addWidget(self.label_remark, 5, 0, 1, 1)
self.pushButton_right = QtWidgets.QPushButton(self.groupBox_4)
self.lineEdit_remark.setFont(font)
self.lineEdit_remark.setObjectName("lineEdit_remark")
self.gridLayout_2.addWidget(self.lineEdit_remark, 4, 2, 1, 3)
self.pushButton_left = QtWidgets.QPushButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_right.sizePolicy().hasHeightForWidth())
self.pushButton_right.setSizePolicy(sizePolicy)
sizePolicy.setHeightForWidth(self.pushButton_left.sizePolicy().hasHeightForWidth())
self.pushButton_left.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.pushButton_right.setFont(font)
self.pushButton_right.setObjectName("pushButton_right")
self.gridLayout_2.addWidget(self.pushButton_right, 16, 0, 1, 1)
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
self.label_score = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_score.sizePolicy().hasHeightForWidth())
self.label_score.setSizePolicy(sizePolicy)
self.pushButton_left.setFont(font)
self.pushButton_left.setObjectName("pushButton_left")
self.gridLayout_2.addWidget(self.pushButton_left, 14, 0, 1, 1)
self.checkBox_examineLabeled = QtWidgets.QCheckBox(self.groupBox_4)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_score.setFont(font)
self.label_score.setObjectName("label_score")
self.horizontalLayout_12.addWidget(self.label_score)
self.radioButton_1_class = QtWidgets.QRadioButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.radioButton_1_class.sizePolicy().hasHeightForWidth())
self.radioButton_1_class.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.radioButton_1_class.setFont(font)
self.radioButton_1_class.setObjectName("radioButton_1_class")
self.horizontalLayout_12.addWidget(self.radioButton_1_class)
self.radioButton_2_class = QtWidgets.QRadioButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.radioButton_2_class.sizePolicy().hasHeightForWidth())
self.radioButton_2_class.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.radioButton_2_class.setFont(font)
self.radioButton_2_class.setObjectName("radioButton_2_class")
self.horizontalLayout_12.addWidget(self.radioButton_2_class)
self.radioButton_3_class = QtWidgets.QRadioButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.radioButton_3_class.sizePolicy().hasHeightForWidth())
self.radioButton_3_class.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.radioButton_3_class.setFont(font)
self.radioButton_3_class.setObjectName("radioButton_3_class")
self.horizontalLayout_12.addWidget(self.radioButton_3_class)
self.gridLayout_2.addLayout(self.horizontalLayout_12, 4, 0, 1, 5)
self.checkBox_examineLabeled.setFont(font)
self.checkBox_examineLabeled.setObjectName("checkBox_examineLabeled")
self.gridLayout_2.addWidget(self.checkBox_examineLabeled, 0, 0, 1, 4)
self.pushButton_confirmLabel = QtWidgets.QPushButton(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@ -529,11 +505,19 @@ class Ui_MainWindow(object):
font.setPointSize(14)
self.pushButton_confirmLabel.setFont(font)
self.pushButton_confirmLabel.setObjectName("pushButton_confirmLabel")
self.gridLayout_2.addWidget(self.pushButton_confirmLabel, 15, 2, 2, 3)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_2.addItem(spacerItem3, 16, 1, 1, 1)
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_2.addItem(spacerItem4, 15, 1, 1, 1)
self.gridLayout_2.addWidget(self.pushButton_confirmLabel, 14, 2, 2, 3)
self.label_correctStart = QtWidgets.QLabel(self.groupBox_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_correctStart.sizePolicy().hasHeightForWidth())
self.label_correctStart.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
self.label_correctStart.setFont(font)
self.label_correctStart.setObjectName("label_correctStart")
self.gridLayout_2.addWidget(self.label_correctStart, 6, 0, 1, 1)
self.verticalLayout_left.addWidget(self.groupBox_4)
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_left.addItem(spacerItem5)
@ -739,14 +723,20 @@ class Ui_MainWindow(object):
self.lineEdit_back_add_second.setText(_translate("MainWindow", "60"))
self.lineEdit_back_add_second.setPlaceholderText(_translate("MainWindow", "信号显示事件后多少秒"))
self.groupBox_4.setTitle(_translate("MainWindow", "打标操作"))
self.pushButton_left.setText(_translate("MainWindow", "上一个事件(A)"))
self.pushButton_left.setShortcut(_translate("MainWindow", "A"))
self.label_correctStart.setText(_translate("MainWindow", "修正后起始时间(s)"))
self.checkBox_examineLabeled.setText(_translate("MainWindow", "仅检查未确定打标参数的事件"))
self.label_quick_remark_input.setText(_translate("MainWindow", "快速备注输入"))
self.label_correctEnd.setText(_translate("MainWindow", "修正后终止时间(s)"))
self.label_score.setText(_translate("MainWindow", "标签类型"))
self.radioButton_1_class.setText(_translate("MainWindow", "一类(U)"))
self.radioButton_1_class.setShortcut(_translate("MainWindow", "U"))
self.radioButton_2_class.setText(_translate("MainWindow", "二类(I)"))
self.radioButton_2_class.setShortcut(_translate("MainWindow", "I"))
self.radioButton_3_class.setText(_translate("MainWindow", "删除(O)"))
self.radioButton_3_class.setShortcut(_translate("MainWindow", "O"))
self.pushButton_quick_remark_input_waitingForTalk.setText(_translate("MainWindow", "待讨论(J)"))
self.pushButton_quick_remark_input_waitingForTalk.setShortcut(_translate("MainWindow", "J"))
self.pushButton_right.setText(_translate("MainWindow", "下一个事件(D)"))
self.pushButton_right.setShortcut(_translate("MainWindow", "D"))
self.label_remark.setText(_translate("MainWindow", "备注"))
self.label_quick_remark_input.setText(_translate("MainWindow", "快速备注输入"))
self.label_events.setText(_translate("MainWindow", "事件类型"))
self.radioButton_OSA.setText(_translate("MainWindow", "OSA"))
self.radioButton_OSA.setShortcut(_translate("MainWindow", "1"))
@ -756,17 +746,11 @@ class Ui_MainWindow(object):
self.radioButton_MSA.setShortcut(_translate("MainWindow", "3"))
self.radioButton_HPY.setText(_translate("MainWindow", "HPY"))
self.radioButton_HPY.setShortcut(_translate("MainWindow", "4"))
self.label_remark.setText(_translate("MainWindow", "备注"))
self.pushButton_right.setText(_translate("MainWindow", "下一个事件(D)"))
self.pushButton_right.setShortcut(_translate("MainWindow", "D"))
self.label_score.setText(_translate("MainWindow", "标签类型"))
self.radioButton_1_class.setText(_translate("MainWindow", "一类(U)"))
self.radioButton_1_class.setShortcut(_translate("MainWindow", "U"))
self.radioButton_2_class.setText(_translate("MainWindow", "二类(I)"))
self.radioButton_2_class.setShortcut(_translate("MainWindow", "I"))
self.radioButton_3_class.setText(_translate("MainWindow", "删除(O)"))
self.radioButton_3_class.setShortcut(_translate("MainWindow", "O"))
self.pushButton_left.setText(_translate("MainWindow", "上一个事件(A)"))
self.pushButton_left.setShortcut(_translate("MainWindow", "A"))
self.checkBox_examineLabeled.setText(_translate("MainWindow", "仅检查未确定打标参数的事件"))
self.pushButton_confirmLabel.setText(_translate("MainWindow", "确定打标参数(S)"))
self.label_correctStart.setText(_translate("MainWindow", "修正后起始时间(s)"))
self.groupBox_5.setTitle(_translate("MainWindow", "逐帧检查"))
self.pushButton_next10s.setText(_translate("MainWindow", "+10s"))
self.pushButton_previous10s.setText(_translate("MainWindow", "-10s"))

View File

@ -437,122 +437,7 @@
<string>打标操作</string>
</property>
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,0,0,0">
<item row="5" column="2" colspan="3">
<widget class="QLineEdit" name="lineEdit_remark">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
</widget>
</item>
<item row="15" column="0">
<widget class="QPushButton" name="pushButton_left">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>上一个事件(A)</string>
</property>
<property name="shortcut">
<string>A</string>
</property>
</widget>
</item>
<item row="7" column="2" colspan="3">
<widget class="QLineEdit" name="lineEdit_correctStart">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_correctStart">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>修正后起始时间(s)</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="4">
<widget class="QCheckBox" name="checkBox_examineLabeled">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>仅检查未确定打标参数的事件</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_quick_remark_input">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>快速备注输入</string>
</property>
</widget>
</item>
<item row="9" column="2" colspan="3">
<widget class="QLineEdit" name="lineEdit_correctEnd">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
</widget>
</item>
<item row="9" column="0">
<item row="8" column="0">
<widget class="QLabel" name="label_correctEnd">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@ -571,7 +456,141 @@
</property>
</widget>
</item>
<item row="2" column="0" colspan="5">
<item row="8" column="2" colspan="3">
<widget class="QLineEdit" name="lineEdit_correctEnd">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
</widget>
</item>
<item row="3" column="0" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_score">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>标签类型</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_1_class">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>一类(U)</string>
</property>
<property name="shortcut">
<string>U</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_2_class">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>二类(I)</string>
</property>
<property name="shortcut">
<string>I</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_3_class">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>删除(O)</string>
</property>
<property name="shortcut">
<string>O</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="14" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="2" colspan="3">
<widget class="QLineEdit" name="lineEdit_correctStart">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
</widget>
</item>
<item row="1" column="0" colspan="5">
<widget class="QLabel" name="label_BCG_event">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@ -595,7 +614,7 @@
</property>
</widget>
</item>
<item row="6" column="2" colspan="3">
<item row="5" column="2" colspan="3">
<widget class="QPushButton" name="pushButton_quick_remark_input_waitingForTalk">
<property name="font">
<font>
@ -611,7 +630,74 @@
</property>
</widget>
</item>
<item row="3" column="0" colspan="5">
<item row="15" column="0">
<widget class="QPushButton" name="pushButton_right">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>下一个事件(D)</string>
</property>
<property name="shortcut">
<string>D</string>
</property>
</widget>
</item>
<item row="15" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_remark">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>备注</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_quick_remark_input">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>快速备注输入</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout_radioButton">
<item>
<widget class="QLabel" name="label_events">
@ -722,34 +808,10 @@
</item>
</layout>
</item>
<item row="1" column="0" colspan="5">
<widget class="QLabel" name="label_PSG_event">
<item row="4" column="2" colspan="3">
<widget class="QLineEdit" name="lineEdit_remark">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_remark">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -760,13 +822,10 @@
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>备注</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QPushButton" name="pushButton_right">
<item row="14" column="0">
<widget class="QPushButton" name="pushButton_left">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
@ -780,103 +839,27 @@
</font>
</property>
<property name="text">
<string>下一个事件(D)</string>
<string>上一个事件(A)</string>
</property>
<property name="shortcut">
<string>D</string>
<string>A</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_score">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>标签类型</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_1_class">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>一类(U)</string>
</property>
<property name="shortcut">
<string>U</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_2_class">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>二类(I)</string>
</property>
<property name="shortcut">
<string>I</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_3_class">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>删除(O)</string>
</property>
<property name="shortcut">
<string>O</string>
</property>
</widget>
</item>
</layout>
<item row="0" column="0" colspan="4">
<widget class="QCheckBox" name="checkBox_examineLabeled">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>仅检查未确定打标参数的事件</string>
</property>
</widget>
</item>
<item row="15" column="2" rowspan="2" colspan="3">
<item row="14" column="2" rowspan="2" colspan="3">
<widget class="QPushButton" name="pushButton_confirmLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
@ -895,31 +878,24 @@
</property>
</widget>
</item>
<item row="16" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="6" column="0">
<widget class="QLabel" name="label_correctStart">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
</font>
</property>
</spacer>
</item>
<item row="15" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<property name="text">
<string>修正后起始时间(s)</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</widget>
</item>
</layout>
</widget>

View File

@ -157,12 +157,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if self.dir_path:
logging.info("Loading Data Path...")
self.PSG_Data_Path = Path(os.path.join(self.dir_path, "PSG"))
self.PSG_Label_Path = Path(os.path.join(self.dir_path, "PSG_label"))
self.BCG_Data_Path = Path(os.path.join(self.dir_path, "BCG"))
self.BCG_Label_Path = Path(os.path.join(self.dir_path, "BCG_label"))
self.Artifact_Label_Path = Path(os.path.join(self.dir_path, "Artifact_label"))
self.Artifact_Offset_Path = Path(os.path.join(self.dir_path, "Artifact_label", "20220421Artifact_offset_value.xlsx"))
if self.PSG_Data_Path.exists() and self.PSG_Label_Path.exists() and self.BCG_Data_Path.exists() and self.BCG_Label_Path.exists() and self.Artifact_Label_Path.exists() and self.Artifact_Label_Path.exists():
if self.PSG_Data_Path.exists() and self.BCG_Data_Path.exists() and self.BCG_Label_Path.exists() and self.Artifact_Label_Path.exists() and self.Artifact_Label_Path.exists():
sampIDs = os.listdir(self.BCG_Data_Path)
sampID_for_comboBox = []
for sampID in sampIDs:
@ -171,7 +170,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
bcg_path = self.BCG_Data_Path / f"{sampID}samp.npy"
ecg_path = self.PSG_Data_Path / f"A{str(sampID).rjust(7, '0')}.edf"
bcg_label_path = self.BCG_Label_Path / f"export{sampID}_all.csv"
ecg_label_path = self.PSG_Label_Path / f"export{sampID}.csv"
if not bcg_path.exists():
logging.error(f"Can't find {bcg_path}!")
self.msgBox.setText(f"找不到数据{bcg_path}")
@ -190,12 +188,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.msgBox.setIcon(QMessageBox.Critical)
self.msgBox.exec()
return
if not ecg_label_path.exists():
logging.error(f"Can't find {ecg_label_path}!")
self.msgBox.setText(f"找不到数据{ecg_label_path}")
self.msgBox.setIcon(QMessageBox.Critical)
self.msgBox.exec()
return
self.comboBox_sampID.setEnabled(True)
self.lineEdit_start_bcg_index.setEnabled(True)
self.comboBox_sampID.addItems(sampID_for_comboBox)
@ -307,7 +299,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.msgBox.setIcon(QMessageBox.Information)
self.msgBox.exec()
self.pd.to_csv(Path(os.path.join(self.BCG_Label_Path, f"export{self.comboBox_sampID.currentText()}_all.csv")), mode='w', index=None, encoding="gbk")
self.show_one_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second, back_add_second=self.back_add_second)
self.show_one_event(self.plotEventIndex, front_add_second=self.front_add_second, back_add_second=self.back_add_second)
if not str(self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "remark"]) == "nan":
self.lineEdit_remark.setText(str(self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "remark"]))
else:
@ -329,7 +321,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if self.checkBox_examineLabeled.isChecked() == True:
while self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "isLabeled"] == 1 and self.plotEventIndex > self.start_bcg_index:
self.plotEventIndex = self.plotEventIndex - 1
self.show_one_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_one_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second)
if not str(self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "remark"]) == "nan":
self.lineEdit_remark.setText(str(self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "remark"]))
@ -362,7 +354,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if self.checkBox_examineLabeled.isChecked() == True:
while self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "isLabeled"] == 1 and self.plotEventIndex < len(self.bcg_event_label_filtered_df) - 1:
self.plotEventIndex = self.plotEventIndex + 1
self.show_one_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_one_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second)
if not str(self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "remark"]) == "nan":
self.lineEdit_remark.setText(str(self.pd.at[self.bcg_event_label_index_list[self.plotEventIndex], "remark"]))
@ -459,7 +451,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("操作向前10秒")
self.radioButton_OSA.setChecked(True)
self.time_move_count = self.time_move_count - 10
self.show_new_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_new_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second, time_move_count = self.time_move_count)
# -30s的槽函数
@ -469,7 +461,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("操作向前30秒")
self.radioButton_OSA.setChecked(True)
self.time_move_count = self.time_move_count - 30
self.show_new_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_new_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second, time_move_count = self.time_move_count)
# -60s的槽函数
@ -479,7 +471,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("操作向前60秒")
self.radioButton_OSA.setChecked(True)
self.time_move_count = self.time_move_count - 60
self.show_new_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_new_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second, time_move_count = self.time_move_count)
# +10s的槽函数
@ -489,7 +481,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("操作向后10秒")
self.radioButton_OSA.setChecked(True)
self.time_move_count = self.time_move_count + 10
self.show_new_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_new_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second, time_move_count = self.time_move_count)
# +30s的槽函数
@ -499,7 +491,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("操作向后30秒")
self.radioButton_OSA.setChecked(True)
self.time_move_count = self.time_move_count + 30
self.show_new_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_new_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second, time_move_count = self.time_move_count)
# +30s的槽函数
@ -509,7 +501,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("操作向后60秒")
self.radioButton_OSA.setChecked(True)
self.time_move_count = self.time_move_count + 60
self.show_new_event(self.plotEventIndex, self.plotEventIndex, front_add_second=self.front_add_second,
self.show_new_event(self.plotEventIndex, front_add_second=self.front_add_second,
back_add_second=self.back_add_second, time_move_count = self.time_move_count)
# +60s的槽函数
@ -603,20 +595,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.start_bcg_index = int(self.lineEdit_start_bcg_index.text())
self.plotEventIndex = self.start_bcg_index
self.ecg_start_time = None
# 用来显示颜色时按点匹配事件
self.ecg_event_label = None
self.bcg_event_label = None
self.spo2_event_label = None
self.artifact_event_label = None
# 仅包含关注暂停事件的列表
self.ecg_event_label_filtered_df = None
self.bcg_event_label_filtered_df = None
# 所有事件列表
self.ecg_event_label_df = None
self.bcg_event_label_df = None
# 各通道信号
@ -659,13 +645,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
signal_label = file.getSignalLabels()
logging.debug(f"{self.sampNo} EDF file signal label : {signal_label}")
self.ecg_start_time = file.getStartdatetime()
# 根据PSG记录长度生成事件表
self.ecg_event_label = np.zeros(
int(file.getFileDuration()) * self.frequency + self.extend_second * self.frequency)
self.spo2_event_label = np.zeros(
int(file.getFileDuration()) * self.frequency + self.extend_second * self.frequency)
# 打印PSG信息
file.file_info_long()
@ -723,56 +702,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def read_event(self):
bcg_label_path = self.BCG_Label_Path / f"export{self.sampNo}_all.csv"
ecg_label_path = self.PSG_Label_Path / f"export{self.sampNo}.csv"
if not bcg_label_path.exists():
logging.error(f"Can't find {bcg_label_path} !")
raise FileNotFoundError(f"Can't find {bcg_label_path} !")
if not ecg_label_path.exists():
logging.error(f"Can't find {ecg_label_path} !")
raise FileNotFoundError(f"Can't find {ecg_label_path} !")
df = pd.read_csv(ecg_label_path, encoding="gbk")
self.ecg_event_label_df = df
# 过滤不关注的事件
df2 = df[df["Event type"].isin(self.focus_event_list)]
# 根据epoch进行排列方便索引
df2 = df2.sort_values(by='Epoch')
self.ecg_event_label_filtered_df = df2
logging.info("Traversaling PSG events...")
self.textBrowser_update("提示正在遍历PSG事件")
for one_data in tqdm(df.index, ncols=80):
one_data = df.loc[one_data]
# 通过开始时间推算事件起始点与结束点
event_start_time = datetime.strptime(one_data["Date"] + " " + one_data["Time"], '%Y/%m/%d %H:%M:%S')
SP = (event_start_time - self.ecg_start_time).seconds
# 对括号进行切分避免Duration 20 (20) 这种带括号的问题
EP = int(SP + float(one_data["Duration"].split("(")[0]))
SP *= self.frequency
EP *= self.frequency
# 对事件重新编码并存到事件记录表中
if one_data["Event type"] == "Hypopnea":
self.ecg_event_label[SP:EP] = 1
elif one_data["Event type"] == "Central apnea":
self.ecg_event_label[SP:EP] = 2
elif one_data["Event type"] == "Obstructive apnea":
self.ecg_event_label[SP:EP] = 3
elif one_data["Event type"] == "Mixed apnea":
self.ecg_event_label[SP:EP] = 4
elif one_data["Event type"] == "Desaturation":
self.spo2_event_label[SP:EP] = 5
logging.info("Finished Traversal PSG events")
self.textBrowser_update("提示完成遍历PSG事件")
# 读取心晓事件
df = pd.read_csv(bcg_label_path, encoding="gbk")
df["new_start"] = df["new_start"].astype("int")
df["new_end"] = df["new_end"].astype("int")
df["Start"] = df["Start"].astype("int")
df["End"] = df["End"].astype("int")
self.bcg_event_label_df = df
# 过滤不关注事件
@ -784,8 +722,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.textBrowser_update("提示:正在遍历心晓事件")
for one_data in tqdm(df.index):
one_data = df.loc[one_data]
SP = one_data["new_start"] * self.frequency
EP = one_data["new_end"] * self.frequency
SP = one_data["Start"] * self.frequency
EP = one_data["End"] * self.frequency
if one_data["Event type"] == "Hypopnea":
self.bcg_event_label[SP:EP] = 1
@ -820,53 +758,32 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.artifact_event_label[SP:EP] = artifact_type
# assert len(self.ecg_event_label_filtered_df) == len(self.bcg_event_label_filtered_df), \
# f"PSG与心晓事件数量不一致, PSG事件数量{len(self.ecg_event_label_filtered_df)},
# 心晓事件数量{len(self.bcg_event_label_filtered_df)}"
def show_one_event(self, bcg_index: int, ecg_index: int, front_add_second: int, back_add_second: int):
def show_one_event(self, bcg_index: int, front_add_second: int, back_add_second: int):
"""
:param bcg_index: 心晓事件在csv中行号
:param ecg_index: PSG事件在csv中序号
:param front_add_second: 向前延伸时间
:param back_add_second: 向后延伸时间
:return:
"""
# 获取事件实际在csv文件中的序号
bcg_real_index = self.bcg_event_label_filtered_df.index[bcg_index],
ecg_real_index = self.ecg_event_label_filtered_df.index[ecg_index],
one_bcg_data = self.bcg_event_label_df.loc[bcg_real_index]
one_ecg_data = self.ecg_event_label_df.loc[ecg_real_index]
# 获取ECG事件开始与结束时间
event_start_time = datetime.strptime(one_ecg_data["Date"] + " " + one_ecg_data["Time"], '%Y/%m/%d %H:%M:%S')
ecg_SP = (event_start_time - self.ecg_start_time).seconds
ecg_duration = int(float(str(one_ecg_data["Duration"]).split("(")[0]) + 0.5)
ecg_EP = ecg_SP + ecg_duration
# 获取BCG事件开始与结束时间
bcg_SP = one_bcg_data["new_start"]
bcg_EP = one_bcg_data["new_end"]
bcg_SP = one_bcg_data["Start"]
bcg_EP = one_bcg_data["End"]
self.bcg_SP = bcg_SP
self.bcg_EP = bcg_EP
bcg_duration = bcg_EP - bcg_SP
logging.info(f"sampNo:{self.sampNo} "
f"bcg[index:{bcg_index} epoch:{one_bcg_data['Epoch']} event:{one_bcg_data['Event type']}] "
f"ecg:[index:{ecg_index} epoch:{one_ecg_data['Epoch']} event:{one_ecg_data['Event type']}]")
if one_bcg_data['Event type'] != one_ecg_data['Event type']:
logging.error(f"sampNo:{self.sampNo} PSG事件与心晓时间不一致请排查"
f"bcg[index:{bcg_index} epoch:{one_bcg_data['Epoch']} event:{one_bcg_data['Event type']}] "
f"ecg:[index:{ecg_index} epoch:{one_ecg_data['Epoch']} event:{one_ecg_data['Event type']}]")
raise ValueError()
f"ecg:[index:{bcg_index} epoch:{one_bcg_data['Epoch']} event:{one_bcg_data['Event type']}]")
self.lineEdit_correctStart.setText(str(self.bcg_SP))
self.lineEdit_correctEnd.setText(str(self.bcg_EP))
# 进行向两边延展
ecg_SP = ecg_SP - front_add_second
ecg_EP = ecg_EP + back_add_second
bcg_SP = bcg_SP - front_add_second
bcg_EP = bcg_EP + back_add_second
@ -880,20 +797,20 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 绘制 Flow1
self.ax0 = self.figure.add_subplot(gs[0])
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Flow T")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Flow T")
# 绘制 Flow2
self.ax1 = self.figure.add_subplot(gs[1], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Flow P")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Flow P")
self.ax2 = self.figure.add_subplot(gs[2], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Effort Tho")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Effort Tho")
self.ax3 = self.figure.add_subplot(gs[3], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Effort Abd")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Effort Abd")
self.ax4 = self.figure.add_subplot(gs[4], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="SpO2", event_code=[5])
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="SpO2", event_code=[5])
self.ax5 = self.figure.add_subplot(gs[5], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="orgdata",
@ -906,9 +823,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
event_show_under=False,
title=f"sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)}")
self.label_PSG_event.setText(f"PSG sampNo:{self.sampNo} Index:{ecg_index + 1}/{len(self.ecg_event_label_filtered_df)} "
f"Epoch:{one_ecg_data['Epoch']} Duration:{ecg_duration}s")
self.label_BCG_event.setText(f"心晓 sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)} "
self.label_BCG_event.setText(f"sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)} "
f"Epoch:{one_bcg_data['Epoch']} Duration:{bcg_duration}s")
# figManager = plt.get_current_fig_manager()
@ -939,7 +854,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
for j in event_code:
if channel == "SpO2":
mask = self.spo2_event_label[SP * self.frequency:EP * self.frequency] == j
mask = self.bcg_event_label[SP * self.frequency:EP * self.frequency] == j
elif channel == "orgdata" or channel == "0.7lowpass_resp":
if j <= 5:
mask = self.bcg_event_label[SP * self.frequency:EP * self.frequency] == j
@ -947,7 +862,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
mask = self.artifact_event_label[SP * self.frequency:EP * self.frequency] == j
linestyle = "-"
else:
mask = self.ecg_event_label[SP * self.frequency:EP * self.frequency] == j
mask = self.bcg_event_label[SP * self.frequency:EP * self.frequency] == j
if event_show_under:
min_point = self.signal_select[channel][SP * self.frequency:EP * self.frequency].min()
@ -973,10 +888,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# print(xticks)
# plt_.xticks(*xticks) # 去掉x轴
def show_new_event(self, bcg_index: int, ecg_index: int, front_add_second: int, back_add_second: int, time_move_count: int):
def show_new_event(self, bcg_index: int, front_add_second: int, back_add_second: int, time_move_count: int):
"""
:param bcg_index: 心晓事件在csv中行号
:param ecg_index: PSG事件在csv中序号
:param front_add_second: 向前延伸时间
:param back_add_second: 向后延伸时间
:param time_move_count: 时间轴移动的时间
@ -984,34 +898,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
"""
# 获取事件实际在csv文件中的序号
bcg_real_index = self.bcg_event_label_filtered_df.index[bcg_index],
ecg_real_index = self.ecg_event_label_filtered_df.index[ecg_index],
one_bcg_data = self.bcg_event_label_df.loc[bcg_real_index]
one_ecg_data = self.ecg_event_label_df.loc[ecg_real_index]
# 获取ECG事件开始与结束时间
event_start_time = datetime.strptime(one_ecg_data["Date"] + " " + one_ecg_data["Time"], '%Y/%m/%d %H:%M:%S')
ecg_SP = (event_start_time - self.ecg_start_time).seconds
ecg_duration = int(float(str(one_ecg_data["Duration"]).split("(")[0]) + 0.5)
ecg_EP = ecg_SP + ecg_duration
# 获取BCG事件开始与结束时间
bcg_SP = one_bcg_data["new_start"]
bcg_EP = one_bcg_data["new_end"]
bcg_SP = one_bcg_data["Start"]
bcg_EP = one_bcg_data["End"]
bcg_duration = bcg_EP - bcg_SP
logging.info(f"sampNo:{self.sampNo} "
f"bcg[index:{bcg_index} epoch:{one_bcg_data['Epoch']} event:{one_bcg_data['Event type']}] "
f"ecg:[index:{ecg_index} epoch:{one_ecg_data['Epoch']} event:{one_ecg_data['Event type']}]")
if one_bcg_data['Event type'] != one_ecg_data['Event type']:
logging.error(f"sampNo:{self.sampNo} PSG事件与心晓时间不一致请排查"
f"bcg[index:{bcg_index} epoch:{one_bcg_data['Epoch']} event:{one_bcg_data['Event type']}] "
f"ecg:[index:{ecg_index} epoch:{one_ecg_data['Epoch']} event:{one_ecg_data['Event type']}]")
raise ValueError()
f"ecg:[index:{bcg_index} epoch:{one_bcg_data['Epoch']} event:{one_bcg_data['Event type']}]")
# 进行向两边延展
ecg_SP = ecg_SP - front_add_second + time_move_count
ecg_EP = ecg_EP + back_add_second + time_move_count
bcg_SP = bcg_SP - front_add_second + time_move_count
bcg_EP = bcg_EP + back_add_second + time_move_count
@ -1030,20 +928,20 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 绘制 Flow1
self.ax0 = self.figure.add_subplot(gs[0])
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Flow T")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Flow T")
# 绘制 Flow2
self.ax1 = self.figure.add_subplot(gs[1], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Flow P")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Flow P")
self.ax2 = self.figure.add_subplot(gs[2], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Effort Tho")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Effort Tho")
self.ax3 = self.figure.add_subplot(gs[3], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="Effort Abd")
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="Effort Abd")
self.ax4 = self.figure.add_subplot(gs[4], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=ecg_SP, EP=ecg_EP, channel="SpO2", event_code=[5])
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="SpO2", event_code=[5])
self.ax5 = self.figure.add_subplot(gs[5], sharex=self.ax0)
self.plt_channel(plt_=plt, SP=bcg_SP, EP=bcg_EP, channel="orgdata",
@ -1056,11 +954,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
event_show_under=False,
title=f"sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)}")
self.label_PSG_event.setText(
f"PSG sampNo:{self.sampNo} Index:{ecg_index + 1}/{len(self.ecg_event_label_filtered_df)} "
f"Epoch:{one_ecg_data['Epoch']} Duration:{ecg_duration}s")
self.label_BCG_event.setText(
f"心晓 sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)} "
f"sampNo:{self.sampNo} Index:{bcg_index + 1}/{len(self.bcg_event_label_filtered_df)} "
f"Epoch:{one_bcg_data['Epoch']} Duration:{bcg_duration}s")
# figManager = plt.get_current_fig_manager()

48
PSG_label_2_BCG_label.py Normal file
View File

@ -0,0 +1,48 @@
import os
import pandas as pd
import pyedflib
from pathlib import Path
def get_time_to_seconds(time_str):
h, m, s = map(int, time_str.split(":"))
return h * 3600 + m * 60 + s
base_event = ["Hypopnea", "Central apnea", "Obstructive apnea", "Mixed apnea"]
# 输入设置
sampID = 888
dir_path = r"E:\data_annotation\6SleepApnea_annotation_GUI_demo\data"
# 数据路径设置
PSG_Data_Path = Path(os.path.join(dir_path, "PSG"))
PSG_Label_Path = Path(os.path.join(dir_path, "PSG_label"))
BCG_Data_Path = Path(os.path.join(dir_path, "BCG"))
BCG_Label_Path = Path(os.path.join(dir_path, "BCG_label"))
# Artifact_Label_Path = Path(os.path.join(dir_path, "Artifact_label"))
# Artifact_Offset_Path = Path(os.path.join(dir_path, "Artifact_label", "20220421Artifact_offset_value.xlsx"))
# 读取PSG标签
df_PSG_label = pd.read_csv(PSG_Label_Path / (f"export" + str(sampID) + ".csv"), encoding="gbk")
df_PSG_label = df_PSG_label.loc[:, ~df_PSG_label.columns.str.contains('^Unnamed')]
df_PSG_label = df_PSG_label[df_PSG_label["Event type"].isin(base_event)]
df_PSG_label['Duration'] = df_PSG_label['Duration'].str.replace(r' \(.*?\)', '', regex=True)
# 读取EDF文件
edf_File = pyedflib.EdfReader(str(PSG_Data_Path / f"A{str(sampID).rjust(7, '0')}.edf"))
# 获取PSG记录开始时间
start_time = str(edf_File.getStartdatetime()).split(" ")[1]
start_time_abs = get_time_to_seconds(start_time)
# 计算起始时间秒数和终止时间秒数
df_PSG_label['Start'] = (df_PSG_label['Time'].apply(get_time_to_seconds) - start_time_abs).apply(lambda x: x + 24 * 3600 if x < 0 else x).astype(int)
df_PSG_label['End'] = df_PSG_label['Start'] + df_PSG_label['Duration'].astype(float).round(0).astype(int)
# 打印结果
print(df_PSG_label)
# 写入csv文件
df_PSG_label.to_csv(r"E:\data_annotation\6SleepApnea_annotation_GUI_demo\data\BCG_label\export" + str(sampID) + "_all.csv", index=False, encoding="gbk")
# 打印结果
print("sampID_" + str(sampID) + "写入csv成功")