diff --git a/RespCoarseAlign.py b/RespCoarseAlign.py new file mode 100644 index 0000000..ef24701 --- /dev/null +++ b/RespCoarseAlign.py @@ -0,0 +1,317 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +""" +@author:andrew +@file:RespCoarseAlign.py +@email:admin@marques22.com +@email:2021022362@m.scnu.edu.cn +@time:2023/09/20 +""" + +import sys +from pathlib import Path +import mne +import numpy as np +import pandas as pd +from PySide6.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox +from PySide6.QtCore import QFile +from scipy import signal +from scipy.signal import butter + +from ui.Mian import Ui_mainWindow as Ui_respCoarseAlign +from ui.setings import Ui_MainWindow as Ui_Setting +import yaml + +Conf = { + "PSGConfig": { + "Path": "./Data/PSG/", + "Frequency": 100, + "THOChannel": { + "auto": True, + "Channel": 3, + }, + "ABDChannel": { + "auto": True, + "Channel": 4, + }, + }, + "XXConfig": { + "Path": "./Data/XX/", + "Frequency": 100, + }, + "RespFilterConfig": { + "LowPass": 0.01, + "HighPass": 0.7, + "order": 4 + }, + "ApplyFrequency": 5 +} + + +class SettingWindow(QMainWindow): + def __init__(self): + super(SettingWindow, self).__init__() + self.ui = Ui_Setting() + self.ui.setupUi(self) + self.__read_settings__() + + def __read_settings__(self): + with open("./config.yaml", "r") as f: + fileConfig = yaml.load(f.read(), Loader=yaml.FullLoader) + Conf.update(fileConfig) + # print(Conf) + self.ui.lineEdit_PSGFilePath.setText(Conf["PSGConfig"]["Path"]) + self.ui.lineEdit_XXFilePath.setText(Conf["XXConfig"]["Path"]) + self.ui.spinBox_PSGDefaultFreq.setValue(Conf["PSGConfig"]["Frequency"]) + self.ui.spinBox_XXDefaultFreq.setValue(Conf["XXConfig"]["Frequency"]) + self.ui.QSpinBox_ApplyFre.setValue(Conf["ApplyFrequency"]) + autoTHO = Conf["PSGConfig"]["THOChannel"]["auto"] + self.ui.checkBox_THOautoChannel.setChecked(2 if autoTHO else 0) + autoABD = Conf["PSGConfig"]["ABDChannel"]["auto"] + self.ui.checkBox_ABDautoChannel.setChecked(2 if autoABD else 0) + self.ui.spinBox_THOcustomChannel.setValue(Conf["PSGConfig"]["THOChannel"]["Channel"]) + self.ui.spinBox_ABDcustomChannel.setValue(Conf["PSGConfig"]["ABDChannel"]["Channel"]) + self.ui.doubleSpinBox_ButterLowPassFreq.setValue(Conf["RespFilterConfig"]["LowCut"]) + self.ui.doubleSpinBox_ButterHighPassFreq.setValue(Conf["RespFilterConfig"]["HighCut"]) + self.ui.spinBox_ButterOrder.setValue(Conf["RespFilterConfig"]["Order"]) + self.ui.spinBox_THOcustomChannel.setEnabled(not autoTHO) + self.ui.spinBox_ABDcustomChannel.setEnabled(not autoABD) + + # 绑定事件 + self.ui.toolButton_PSGFilePath.clicked.connect(self.__select_file__) + self.ui.toolButton_XXFilePath.clicked.connect(self.__select_file__) + + self.ui.pushButton_SaveConfig.clicked.connect(self.__write_settings__) + self.ui.pushButton_Cancel.clicked.connect(self.close) + + # ABD auto checkbox和SpinBox 互斥 + self.ui.checkBox_ABDautoChannel.stateChanged.connect(self.__ABDAutoChannel__) + self.ui.checkBox_THOautoChannel.stateChanged.connect(self.__THOAutoChannel__) + + def __ABDAutoChannel__(self, state): + if state == 2: + self.ui.spinBox_ABDcustomChannel.setEnabled(False) + else: + self.ui.spinBox_ABDcustomChannel.setEnabled(True) + + def __THOAutoChannel__(self, state): + if state == 2: + self.ui.spinBox_THOcustomChannel.setEnabled(False) + else: + self.ui.spinBox_THOcustomChannel.setEnabled(True) + + def __select_file__(self, event): + sender = self.sender() + if sender.objectName() == "toolButton_PSGFilePath": + path = QFileDialog.getExistingDirectory(self, "选择PSG数据文件夹", "./Data/PSG/") + self.ui.lineEdit_PSGFilePath.setText(path) + elif sender.objectName() == "toolButton_XXFilePath": + path = QFileDialog.getExistingDirectory(self, "选择XX数据文件夹", "./Data/XX/") + self.ui.lineEdit_XXFilePath.setText(path) + + def __write_settings__(self): + # 从界面读取配置 + Conf["PSGConfig"]["Path"] = self.ui.lineEdit_PSGFilePath.text() + Conf["XXConfig"]["Path"] = self.ui.lineEdit_XXFilePath.text() + Conf["PSGConfig"]["Frequency"] = self.ui.spinBox_PSGDefaultFreq.value() + Conf["XXConfig"]["Frequency"] = self.ui.spinBox_XXDefaultFreq.value() + Conf["ApplyFrequency"] = self.ui.QSpinBox_ApplyFre.value() + Conf["PSGConfig"]["THOChannel"]["auto"] = self.ui.checkBox_THOautoChannel.isChecked() + Conf["PSGConfig"]["ABDChannel"]["auto"] = self.ui.checkBox_ABDautoChannel.isChecked() + Conf["PSGConfig"]["THOChannel"]["Channel"] = self.ui.spinBox_THOcustomChannel.value() + Conf["PSGConfig"]["ABDChannel"]["Channel"] = self.ui.spinBox_ABDcustomChannel.value() + Conf["RespFilterConfig"]["LowCut"] = self.ui.doubleSpinBox_ButterLowPassFreq.value() + Conf["RespFilterConfig"]["HighCut"] = self.ui.doubleSpinBox_ButterHighPassFreq.value() + Conf["RespFilterConfig"]["Order"] = self.ui.spinBox_ButterOrder.value() + + with open("./config.yaml", "w") as f: + yaml.dump(Conf, f) + + self.close() + + +class Data: + def __init__(self, PSGDataPath, XXDataPath, sampNo, Config): + self.PSGDataPath = PSGDataPath / f"{sampNo}.edf" + if (XXDataPath / f"{sampNo}.npy").exists(): + self.XXDataPath = XXDataPath / f"{sampNo}.npy" + elif (XXDataPath / f"{sampNo}.txt").exists(): + self.XXDataPath = XXDataPath / f"{sampNo}.txt" + else: + self.XXDataPath = None + + self.Config = Config + + self.raw_THO = None + self.raw_ABD = None + self.raw_XX = None + + self.PSG_minutes = None + self.XX_minutes = None + + def OpenFile(self): + # 判断是edf还是npy或txt + if self.PSGDataPath.suffix == ".edf": + with mne.io.read_raw_edf(self.PSGDataPath) as PSG: + # read THO ABD + if self.Config["PSGConfig"]["THOChannel"]["auto"]: + self.raw_THO = PSG.pick_channels(["THO"]).get_data()[0] + else: + self.raw_THO = PSG.pick_channels([self.Config["PSGConfig"]["THOChannel"]["Channel"]]).get_data()[0] + if self.Config["PSGConfig"]["ABDChannel"]["auto"]: + self.raw_ABD = PSG.pick_channels(["ABD"]).get_data()[0] + else: + self.raw_ABD = PSG.pick_channels([self.Config["PSGConfig"]["ABDChannel"]["Channel"]]).get_data()[0] + else: + return False, "PSG文件格式错误" + + if self.XXDataPath.suffix == ".npy": + self.raw_XX = np.load(self.XXDataPath) + elif self.XXDataPath.suffix == ".txt": + self.raw_XX = pd.read_csv(self.XXDataPath, sep="\t", header=None).values + else: + return False, "XX文件格式错误" + + # 获取时长 + self.PSG_minutes = self.raw_THO.shape[0] / self.Config["PSGConfig"]["Frequency"] / 60 + self.XX_minutes = self.raw_XX.shape[0] / self.Config["XXConfig"]["Frequency"] / 60 + + return True, "读取成功" + + def __Filter__(self): + def butter_bandpass_filter(data, lowCut, highCut, fs, order): + low = lowCut / (fs * 0.5) + high = highCut / (fs * 0.5) + sos = signal.butter(order, [low, high], btype="bandpass", output='sos') + return signal.sosfilt(sos, data) + + # 滤波 + self.raw_THO = butter_bandpass_filter(self.raw_THO, self.Config["RespFilterConfig"]["LowCut"], + self.Config["RespFilterConfig"]["HighCut"], + self.Config["PSGConfig"]["Frequency"], + self.Config["RespFilterConfig"]["Order"]) + self.raw_ABD = butter_bandpass_filter(self.raw_ABD, self.Config["RespFilterConfig"]["LowCut"], + self.Config["RespFilterConfig"]["HighCut"], + self.Config["PSGConfig"]["Frequency"], + self.Config["RespFilterConfig"]["Order"]) + self.raw_XX = butter_bandpass_filter(self.raw_XX, self.Config["RespFilterConfig"]["LowCut"], + self.Config["RespFilterConfig"]["HighCut"], + self.Config["XXConfig"]["Frequency"], + self.Config["RespFilterConfig"]["Order"]) + + def Standardize(self): + if self.Config["RawSignal"]: + # 重采样 + self.raw_THO = signal.resample(self.raw_THO, int(self.PSG_minutes * 60 * self.Config["ApplyFrequency"])) + self.raw_ABD = signal.resample(self.raw_ABD, int(self.PSG_minutes * 60 * self.Config["ApplyFrequency"])) + self.raw_XX = signal.resample(self.raw_XX, int(self.XX_minutes * 60 * self.Config["ApplyFrequency"])) + else: + # 滤波 + self.__Filter__() + # 重采样 + self.raw_THO = signal.resample(self.raw_THO, int(self.PSG_minutes * 60 * self.Config["ApplyFrequency"])) + self.raw_ABD = signal.resample(self.raw_ABD, int(self.PSG_minutes * 60 * self.Config["ApplyFrequency"])) + self.raw_XX = signal.resample(self.raw_XX, int(self.XX_minutes * 60 * self.Config["ApplyFrequency"])) + + # 判断是否去基线 + # 判断是否标准化 + + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + self.ui = Ui_respCoarseAlign() + self.setting = SettingWindow() + self.ui.setupUi(self) + + self.ui.actionDefault_Configuration.triggered.connect(self.setting.show) + + # checkbox custom 和SpinBox 互斥 + self.ui.checkBox_custom.stateChanged.connect(self.__customChannel__) + + # 绑定事件 + # 刷新键分别获取PSG和XX文件夹里面的数据,获取所有编号显示在下拉框,比对编号同时存在的可选,仅存在一个文件夹的编号不可选 + self.ui.pushButton_Refresh.clicked.connect(self.__refresh__) + self.ui.pushButton_OpenFile.clicked.connect(self.__openFile__) + self.ui.pushButton_Standardize.clicked.connect(self.__standardize__) + + def __customChannel__(self, state): + if state == 2: + self.ui.spinBox_custom.setEnabled(True) + else: + self.ui.spinBox_custom.setEnabled(False) + + # 刷新键分别获取PSG和XX文件夹里面的数据,获取所有编号显示在下拉框,比对编号同时存在的可选,仅存在一个文件夹的编号不可选 + def __refresh__(self): + # 检查两文件夹是否存在 + PSGPath = Path(self.setting.ui.lineEdit_PSGFilePath.text()) + XXPath = Path(self.setting.ui.lineEdit_XXFilePath.text()) + if not PSGPath.exists(): + QMessageBox.warning(self, "警告", "PSG文件夹不存在") + return + if not XXPath.exists(): + QMessageBox.warning(self, "警告", "XX文件夹不存在") + return + + # 获取两文件夹下所有的txt和npy文件编号 + PSGFiles = [file.stem for file in PSGPath.glob("*.edf")] + XXFiles = [file.stem for file in XXPath.glob("*.txt")] + [file.stem for file in XXPath.glob("*.npy")] + # 获取两文件夹下同时存在的编号 + print(PSGFiles, XXFiles) + Files = list(set(PSGFiles).intersection(set(XXFiles))) + # 获取两文件夹下仅存在一个的编号 + FilesOnlyInPSG = list(set(PSGFiles).difference(set(XXFiles))) + FilesOnlyInXX = list(set(XXFiles).difference(set(PSGFiles))) + print(Files, FilesOnlyInPSG, FilesOnlyInXX) + # 均显示到下拉框 + self.ui.comboBox_SelectFile.clear() + self.ui.comboBox_SelectFile.addItems([file for file in Files]) + self.ui.comboBox_SelectFile.addItems([file + " (仅PSG)" for file in FilesOnlyInPSG]) + self.ui.comboBox_SelectFile.addItems([file + " (仅XX)" for file in FilesOnlyInXX]) + self.ui.comboBox_SelectFile.setCurrentIndex(0) + + # # 仅存在一个文件夹的编号不可选 + for file in FilesOnlyInPSG: + self.ui.comboBox_SelectFile.model().item(FilesOnlyInPSG.index(file) + len(Files)).setEnabled(False) + for file in FilesOnlyInXX: + self.ui.comboBox_SelectFile.model().item( + FilesOnlyInXX.index(file) + len(Files) + len(FilesOnlyInPSG)).setEnabled(False) + + def __openFile__(self): + # 获取checkbox状态 + self.data = Data(Path(self.setting.ui.lineEdit_PSGFilePath.text()), + Path(self.setting.ui.lineEdit_XXFilePath.text()), + self.ui.comboBox_SelectFile.currentText().split(" ")[0], + Conf) + opened, info = self.data.OpenFile() + if not opened: + QMessageBox.warning(self, "警告", info) + self.ui.label_Info.setText(info) + return + else: + self.ui.label_PSGmins.setText(str(self.data.PSG_minutes)) + self.ui.label_XXmins.setText(str(self.data.XX_minutes)) + self.ui.label_Info.setText(info) + + def __standardize__(self): + Conf2 = self.data.Config.copy() + Conf2["RawSignal"] = self.ui.checkBox_RawSignal.isChecked() + Conf2["PSGConfig"].update({ + "PSGDelBase": self.ui.checkBox_PSGDelBase.isChecked(), + "PSGZScore": self.ui.checkBox_PSGZScore.isChecked(), + "Frequency": self.ui.spinBox_PSGFreq.value(), + }) + Conf2["XXConfig"].update({ + "XXDelBase": self.ui.checkBox_XXDelBase.isChecked(), + "XXZScore": self.ui.checkBox_XXZScore.isChecked(), + "Frequency": self.ui.spinBox_XXFreq.value(), + }) + self.data.Config = Conf2 + self.data.Standardize() + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec()) diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..4ffe01b --- /dev/null +++ b/config.yaml @@ -0,0 +1,17 @@ +ApplyFrequency: 100 +PSGConfig: + ABDChannel: + Channel: 4 + auto: true + Frequency: 100 + Path: D:/code/RespCoarseAlignment/Data/PSG + THOChannel: + Channel: 3 + auto: true +RespFilterConfig: + HighCut: 0.71 + LowCut: 0.01 + Order: 4 +XXConfig: + Frequency: 100 + Path: D:/code/RespCoarseAlignment/Data/XX diff --git a/ui/Mian.py b/ui/Mian.py new file mode 100644 index 0000000..34df4db --- /dev/null +++ b/ui/Mian.py @@ -0,0 +1,744 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'Mian.ui' +## +## Created by: Qt User Interface Compiler version 6.5.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient, + QCursor, QFont, QFontDatabase, QGradient, + QIcon, QImage, QKeySequence, QLinearGradient, + QPainter, QPalette, QPixmap, QRadialGradient, + QTransform) +from PySide6.QtWidgets import (QAbstractSpinBox, QApplication, QCheckBox, QComboBox, + QFrame, QGroupBox, QHBoxLayout, QLabel, + QMainWindow, QMenu, QMenuBar, QProgressBar, + QPushButton, QSizePolicy, QSpacerItem, QSpinBox, + QStatusBar, QVBoxLayout, QWidget) + +class Ui_mainWindow(object): + def setupUi(self, mainWindow): + if not mainWindow.objectName(): + mainWindow.setObjectName(u"mainWindow") + mainWindow.resize(1200, 800) + sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(mainWindow.sizePolicy().hasHeightForWidth()) + mainWindow.setSizePolicy(sizePolicy) + mainWindow.setMinimumSize(QSize(1200, 800)) + mainWindow.setMaximumSize(QSize(1920, 1080)) + mainWindow.setSizeIncrement(QSize(4, 3)) + self.actionDefault_Configuration = QAction(mainWindow) + self.actionDefault_Configuration.setObjectName(u"actionDefault_Configuration") + self.centralwidget = QWidget(mainWindow) + self.centralwidget.setObjectName(u"centralwidget") + self.horizontalLayoutWidget = QWidget(self.centralwidget) + self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget") + self.horizontalLayoutWidget.setGeometry(QRect(10, 10, 1181, 741)) + self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget) + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout = QVBoxLayout() + self.verticalLayout.setObjectName(u"verticalLayout") + self.groupBox = QGroupBox(self.horizontalLayoutWidget) + self.groupBox.setObjectName(u"groupBox") + self.verticalLayoutWidget_7 = QWidget(self.groupBox) + self.verticalLayoutWidget_7.setObjectName(u"verticalLayoutWidget_7") + self.verticalLayoutWidget_7.setGeometry(QRect(10, 20, 274, 71)) + self.verticalLayout_8 = QVBoxLayout(self.verticalLayoutWidget_7) + self.verticalLayout_8.setObjectName(u"verticalLayout_8") + self.verticalLayout_8.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_3 = QHBoxLayout() + self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") + self.comboBox_SelectFile = QComboBox(self.verticalLayoutWidget_7) + self.comboBox_SelectFile.setObjectName(u"comboBox_SelectFile") + sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) + sizePolicy1.setHeightForWidth(self.comboBox_SelectFile.sizePolicy().hasHeightForWidth()) + self.comboBox_SelectFile.setSizePolicy(sizePolicy1) + + self.horizontalLayout_3.addWidget(self.comboBox_SelectFile) + + self.pushButton_Refresh = QPushButton(self.verticalLayoutWidget_7) + self.pushButton_Refresh.setObjectName(u"pushButton_Refresh") + self.pushButton_Refresh.setMaximumSize(QSize(60, 16777215)) + + self.horizontalLayout_3.addWidget(self.pushButton_Refresh) + + self.pushButton_OpenFile = QPushButton(self.verticalLayoutWidget_7) + self.pushButton_OpenFile.setObjectName(u"pushButton_OpenFile") + self.pushButton_OpenFile.setMaximumSize(QSize(60, 16777215)) + + self.horizontalLayout_3.addWidget(self.pushButton_OpenFile) + + self.horizontalLayout_3.setStretch(0, 4) + self.horizontalLayout_3.setStretch(2, 1) + + self.verticalLayout_8.addLayout(self.horizontalLayout_3) + + self.horizontalLayout_17 = QHBoxLayout() + self.horizontalLayout_17.setObjectName(u"horizontalLayout_17") + self.label = QLabel(self.verticalLayoutWidget_7) + self.label.setObjectName(u"label") + sizePolicy2 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) + sizePolicy2.setHorizontalStretch(0) + sizePolicy2.setVerticalStretch(0) + sizePolicy2.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) + self.label.setSizePolicy(sizePolicy2) + + self.horizontalLayout_17.addWidget(self.label) + + self.label_PSGmins = QLabel(self.verticalLayoutWidget_7) + self.label_PSGmins.setObjectName(u"label_PSGmins") + self.label_PSGmins.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.horizontalLayout_17.addWidget(self.label_PSGmins) + + self.label_8 = QLabel(self.verticalLayoutWidget_7) + self.label_8.setObjectName(u"label_8") + sizePolicy2.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth()) + self.label_8.setSizePolicy(sizePolicy2) + + self.horizontalLayout_17.addWidget(self.label_8) + + self.label_6 = QLabel(self.verticalLayoutWidget_7) + self.label_6.setObjectName(u"label_6") + sizePolicy2.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth()) + self.label_6.setSizePolicy(sizePolicy2) + + self.horizontalLayout_17.addWidget(self.label_6) + + self.label_XXmins = QLabel(self.verticalLayoutWidget_7) + self.label_XXmins.setObjectName(u"label_XXmins") + self.label_XXmins.setToolTipDuration(1) + self.label_XXmins.setLayoutDirection(Qt.LeftToRight) + self.label_XXmins.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.horizontalLayout_17.addWidget(self.label_XXmins) + + self.label_7 = QLabel(self.verticalLayoutWidget_7) + self.label_7.setObjectName(u"label_7") + sizePolicy2.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth()) + self.label_7.setSizePolicy(sizePolicy2) + + self.horizontalLayout_17.addWidget(self.label_7) + + + self.verticalLayout_8.addLayout(self.horizontalLayout_17) + + + self.verticalLayout.addWidget(self.groupBox) + + self.groupBox_3 = QGroupBox(self.horizontalLayoutWidget) + self.groupBox_3.setObjectName(u"groupBox_3") + self.verticalLayoutWidget_2 = QWidget(self.groupBox_3) + self.verticalLayoutWidget_2.setObjectName(u"verticalLayoutWidget_2") + self.verticalLayoutWidget_2.setGeometry(QRect(10, 20, 282, 91)) + self.verticalLayout_2 = QVBoxLayout(self.verticalLayoutWidget_2) + self.verticalLayout_2.setObjectName(u"verticalLayout_2") + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_4 = QHBoxLayout() + self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") + self.label_16 = QLabel(self.verticalLayoutWidget_2) + self.label_16.setObjectName(u"label_16") + sizePolicy3 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + sizePolicy3.setHorizontalStretch(0) + sizePolicy3.setVerticalStretch(0) + sizePolicy3.setHeightForWidth(self.label_16.sizePolicy().hasHeightForWidth()) + self.label_16.setSizePolicy(sizePolicy3) + self.label_16.setMaximumSize(QSize(65, 16777215)) + + self.horizontalLayout_4.addWidget(self.label_16) + + self.spinBox_PSGFreq = QSpinBox(self.verticalLayoutWidget_2) + self.spinBox_PSGFreq.setObjectName(u"spinBox_PSGFreq") + self.spinBox_PSGFreq.setMaximumSize(QSize(60, 16777215)) + self.spinBox_PSGFreq.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_PSGFreq.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_PSGFreq.setMinimum(1) + self.spinBox_PSGFreq.setMaximum(1000) + self.spinBox_PSGFreq.setValue(100) + + self.horizontalLayout_4.addWidget(self.spinBox_PSGFreq) + + self.label_17 = QLabel(self.verticalLayoutWidget_2) + self.label_17.setObjectName(u"label_17") + + self.horizontalLayout_4.addWidget(self.label_17) + + self.label_18 = QLabel(self.verticalLayoutWidget_2) + self.label_18.setObjectName(u"label_18") + sizePolicy4 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) + sizePolicy4.setHorizontalStretch(0) + sizePolicy4.setVerticalStretch(0) + sizePolicy4.setHeightForWidth(self.label_18.sizePolicy().hasHeightForWidth()) + self.label_18.setSizePolicy(sizePolicy4) + self.label_18.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_4.addWidget(self.label_18) + + self.spinBox_XXFreq = QSpinBox(self.verticalLayoutWidget_2) + self.spinBox_XXFreq.setObjectName(u"spinBox_XXFreq") + self.spinBox_XXFreq.setMaximumSize(QSize(60, 16777215)) + self.spinBox_XXFreq.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_XXFreq.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_XXFreq.setMinimum(1) + self.spinBox_XXFreq.setMaximum(1000) + self.spinBox_XXFreq.setValue(1000) + + self.horizontalLayout_4.addWidget(self.spinBox_XXFreq) + + self.label_19 = QLabel(self.verticalLayoutWidget_2) + self.label_19.setObjectName(u"label_19") + + self.horizontalLayout_4.addWidget(self.label_19) + + + self.verticalLayout_2.addLayout(self.horizontalLayout_4) + + self.horizontalLayout_15 = QHBoxLayout() + self.horizontalLayout_15.setObjectName(u"horizontalLayout_15") + self.checkBox_PSGDelBase = QCheckBox(self.verticalLayoutWidget_2) + self.checkBox_PSGDelBase.setObjectName(u"checkBox_PSGDelBase") + self.checkBox_PSGDelBase.setMinimumSize(QSize(85, 0)) + self.checkBox_PSGDelBase.setMaximumSize(QSize(85, 16777215)) + self.checkBox_PSGDelBase.setChecked(True) + + self.horizontalLayout_15.addWidget(self.checkBox_PSGDelBase) + + self.checkBox_XXDelBase = QCheckBox(self.verticalLayoutWidget_2) + self.checkBox_XXDelBase.setObjectName(u"checkBox_XXDelBase") + self.checkBox_XXDelBase.setMinimumSize(QSize(85, 0)) + self.checkBox_XXDelBase.setMaximumSize(QSize(85, 16777215)) + self.checkBox_XXDelBase.setChecked(True) + + self.horizontalLayout_15.addWidget(self.checkBox_XXDelBase) + + self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_15.addItem(self.horizontalSpacer_4) + + self.checkBox_RawSignal = QCheckBox(self.verticalLayoutWidget_2) + self.checkBox_RawSignal.setObjectName(u"checkBox_RawSignal") + self.checkBox_RawSignal.setMinimumSize(QSize(90, 0)) + self.checkBox_RawSignal.setMaximumSize(QSize(90, 16777215)) + + self.horizontalLayout_15.addWidget(self.checkBox_RawSignal) + + + self.verticalLayout_2.addLayout(self.horizontalLayout_15) + + self.horizontalLayout_5 = QHBoxLayout() + self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") + self.checkBox_PSGZScore = QCheckBox(self.verticalLayoutWidget_2) + self.checkBox_PSGZScore.setObjectName(u"checkBox_PSGZScore") + self.checkBox_PSGZScore.setMinimumSize(QSize(85, 0)) + self.checkBox_PSGZScore.setMaximumSize(QSize(85, 16777215)) + self.checkBox_PSGZScore.setChecked(True) + + self.horizontalLayout_5.addWidget(self.checkBox_PSGZScore) + + self.checkBox_XXZScore = QCheckBox(self.verticalLayoutWidget_2) + self.checkBox_XXZScore.setObjectName(u"checkBox_XXZScore") + self.checkBox_XXZScore.setMinimumSize(QSize(85, 0)) + self.checkBox_XXZScore.setMaximumSize(QSize(85, 16777215)) + self.checkBox_XXZScore.setChecked(True) + + self.horizontalLayout_5.addWidget(self.checkBox_XXZScore) + + self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_5.addItem(self.horizontalSpacer_5) + + self.pushButton_Standardize = QPushButton(self.verticalLayoutWidget_2) + self.pushButton_Standardize.setObjectName(u"pushButton_Standardize") + sizePolicy1.setHeightForWidth(self.pushButton_Standardize.sizePolicy().hasHeightForWidth()) + self.pushButton_Standardize.setSizePolicy(sizePolicy1) + self.pushButton_Standardize.setMinimumSize(QSize(90, 0)) + self.pushButton_Standardize.setMaximumSize(QSize(90, 16777215)) + + self.horizontalLayout_5.addWidget(self.pushButton_Standardize) + + + self.verticalLayout_2.addLayout(self.horizontalLayout_5) + + + self.verticalLayout.addWidget(self.groupBox_3) + + self.groupBox_5 = QGroupBox(self.horizontalLayoutWidget) + self.groupBox_5.setObjectName(u"groupBox_5") + self.verticalLayoutWidget_3 = QWidget(self.groupBox_5) + self.verticalLayoutWidget_3.setObjectName(u"verticalLayoutWidget_3") + self.verticalLayoutWidget_3.setGeometry(QRect(10, 20, 271, 91)) + self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_3) + self.verticalLayout_3.setObjectName(u"verticalLayout_3") + self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_6 = QHBoxLayout() + self.horizontalLayout_6.setObjectName(u"horizontalLayout_6") + self.label_24 = QLabel(self.verticalLayoutWidget_3) + self.label_24.setObjectName(u"label_24") + sizePolicy.setHeightForWidth(self.label_24.sizePolicy().hasHeightForWidth()) + self.label_24.setSizePolicy(sizePolicy) + self.label_24.setMaximumSize(QSize(65, 16777215)) + + self.horizontalLayout_6.addWidget(self.label_24) + + self.spinBox_PSGPre = QSpinBox(self.verticalLayoutWidget_3) + self.spinBox_PSGPre.setObjectName(u"spinBox_PSGPre") + sizePolicy1.setHeightForWidth(self.spinBox_PSGPre.sizePolicy().hasHeightForWidth()) + self.spinBox_PSGPre.setSizePolicy(sizePolicy1) + self.spinBox_PSGPre.setMinimumSize(QSize(60, 0)) + self.spinBox_PSGPre.setMaximumSize(QSize(100, 16777215)) + self.spinBox_PSGPre.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_PSGPre.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_PSGPre.setMinimum(0) + self.spinBox_PSGPre.setMaximum(1000) + self.spinBox_PSGPre.setValue(0) + + self.horizontalLayout_6.addWidget(self.spinBox_PSGPre) + + self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_6.addItem(self.horizontalSpacer) + + self.label_22 = QLabel(self.verticalLayoutWidget_3) + self.label_22.setObjectName(u"label_22") + sizePolicy.setHeightForWidth(self.label_22.sizePolicy().hasHeightForWidth()) + self.label_22.setSizePolicy(sizePolicy) + self.label_22.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_6.addWidget(self.label_22) + + self.spinBox_PSGAft = QSpinBox(self.verticalLayoutWidget_3) + self.spinBox_PSGAft.setObjectName(u"spinBox_PSGAft") + sizePolicy1.setHeightForWidth(self.spinBox_PSGAft.sizePolicy().hasHeightForWidth()) + self.spinBox_PSGAft.setSizePolicy(sizePolicy1) + self.spinBox_PSGAft.setMinimumSize(QSize(60, 0)) + self.spinBox_PSGAft.setMaximumSize(QSize(100, 16777215)) + self.spinBox_PSGAft.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_PSGAft.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_PSGAft.setMinimum(0) + self.spinBox_PSGAft.setMaximum(1000) + self.spinBox_PSGAft.setValue(0) + + self.horizontalLayout_6.addWidget(self.spinBox_PSGAft) + + + self.verticalLayout_3.addLayout(self.horizontalLayout_6) + + self.horizontalLayout_7 = QHBoxLayout() + self.horizontalLayout_7.setObjectName(u"horizontalLayout_7") + self.label_21 = QLabel(self.verticalLayoutWidget_3) + self.label_21.setObjectName(u"label_21") + sizePolicy.setHeightForWidth(self.label_21.sizePolicy().hasHeightForWidth()) + self.label_21.setSizePolicy(sizePolicy) + self.label_21.setMaximumSize(QSize(65, 16777215)) + + self.horizontalLayout_7.addWidget(self.label_21) + + self.spinBox_XXPre = QSpinBox(self.verticalLayoutWidget_3) + self.spinBox_XXPre.setObjectName(u"spinBox_XXPre") + sizePolicy1.setHeightForWidth(self.spinBox_XXPre.sizePolicy().hasHeightForWidth()) + self.spinBox_XXPre.setSizePolicy(sizePolicy1) + self.spinBox_XXPre.setMinimumSize(QSize(60, 0)) + self.spinBox_XXPre.setMaximumSize(QSize(100, 16777215)) + self.spinBox_XXPre.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_XXPre.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_XXPre.setMinimum(0) + self.spinBox_XXPre.setMaximum(0) + self.spinBox_XXPre.setValue(0) + + self.horizontalLayout_7.addWidget(self.spinBox_XXPre) + + self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_7.addItem(self.horizontalSpacer_2) + + self.label_23 = QLabel(self.verticalLayoutWidget_3) + self.label_23.setObjectName(u"label_23") + sizePolicy.setHeightForWidth(self.label_23.sizePolicy().hasHeightForWidth()) + self.label_23.setSizePolicy(sizePolicy) + self.label_23.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_7.addWidget(self.label_23) + + self.spinBox_XXAft = QSpinBox(self.verticalLayoutWidget_3) + self.spinBox_XXAft.setObjectName(u"spinBox_XXAft") + sizePolicy1.setHeightForWidth(self.spinBox_XXAft.sizePolicy().hasHeightForWidth()) + self.spinBox_XXAft.setSizePolicy(sizePolicy1) + self.spinBox_XXAft.setMinimumSize(QSize(60, 0)) + self.spinBox_XXAft.setMaximumSize(QSize(60, 16777215)) + self.spinBox_XXAft.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_XXAft.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_XXAft.setMinimum(0) + self.spinBox_XXAft.setMaximum(1000) + self.spinBox_XXAft.setValue(0) + + self.horizontalLayout_7.addWidget(self.spinBox_XXAft) + + + self.verticalLayout_3.addLayout(self.horizontalLayout_7) + + self.horizontalLayout_8 = QHBoxLayout() + self.horizontalLayout_8.setObjectName(u"horizontalLayout_8") + self.pushButton_GetPos = QPushButton(self.verticalLayoutWidget_3) + self.pushButton_GetPos.setObjectName(u"pushButton_GetPos") + sizePolicy1.setHeightForWidth(self.pushButton_GetPos.sizePolicy().hasHeightForWidth()) + self.pushButton_GetPos.setSizePolicy(sizePolicy1) + + self.horizontalLayout_8.addWidget(self.pushButton_GetPos) + + self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_8.addItem(self.horizontalSpacer_3) + + self.pushButton_CutOff = QPushButton(self.verticalLayoutWidget_3) + self.pushButton_CutOff.setObjectName(u"pushButton_CutOff") + sizePolicy1.setHeightForWidth(self.pushButton_CutOff.sizePolicy().hasHeightForWidth()) + self.pushButton_CutOff.setSizePolicy(sizePolicy1) + self.pushButton_CutOff.setMinimumSize(QSize(85, 0)) + self.pushButton_CutOff.setMaximumSize(QSize(85, 16777215)) + + self.horizontalLayout_8.addWidget(self.pushButton_CutOff) + + + self.verticalLayout_3.addLayout(self.horizontalLayout_8) + + + self.verticalLayout.addWidget(self.groupBox_5) + + self.groupBox_4 = QGroupBox(self.horizontalLayoutWidget) + self.groupBox_4.setObjectName(u"groupBox_4") + self.verticalLayoutWidget_4 = QWidget(self.groupBox_4) + self.verticalLayoutWidget_4.setObjectName(u"verticalLayoutWidget_4") + self.verticalLayoutWidget_4.setGeometry(QRect(10, 20, 271, 91)) + self.verticalLayout_4 = QVBoxLayout(self.verticalLayoutWidget_4) + self.verticalLayout_4.setObjectName(u"verticalLayout_4") + self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_9 = QHBoxLayout() + self.horizontalLayout_9.setObjectName(u"horizontalLayout_9") + self.checkBox_PTHO = QCheckBox(self.verticalLayoutWidget_4) + self.checkBox_PTHO.setObjectName(u"checkBox_PTHO") + self.checkBox_PTHO.setAutoExclusive(True) + + self.horizontalLayout_9.addWidget(self.checkBox_PTHO) + + self.checkBox_NTHO = QCheckBox(self.verticalLayoutWidget_4) + self.checkBox_NTHO.setObjectName(u"checkBox_NTHO") + self.checkBox_NTHO.setAutoExclusive(True) + + self.horizontalLayout_9.addWidget(self.checkBox_NTHO) + + self.checkBox_PABD = QCheckBox(self.verticalLayoutWidget_4) + self.checkBox_PABD.setObjectName(u"checkBox_PABD") + self.checkBox_PABD.setAutoExclusive(True) + + self.horizontalLayout_9.addWidget(self.checkBox_PABD) + + + self.verticalLayout_4.addLayout(self.horizontalLayout_9) + + self.horizontalLayout_11 = QHBoxLayout() + self.horizontalLayout_11.setObjectName(u"horizontalLayout_11") + self.checkBox_NABD = QCheckBox(self.verticalLayoutWidget_4) + self.checkBox_NABD.setObjectName(u"checkBox_NABD") + self.checkBox_NABD.setAutoExclusive(True) + + self.horizontalLayout_11.addWidget(self.checkBox_NABD) + + self.checkBox_custom = QCheckBox(self.verticalLayoutWidget_4) + self.checkBox_custom.setObjectName(u"checkBox_custom") + self.checkBox_custom.setAutoExclusive(True) + + self.horizontalLayout_11.addWidget(self.checkBox_custom) + + self.spinBox_custom = QSpinBox(self.verticalLayoutWidget_4) + self.spinBox_custom.setObjectName(u"spinBox_custom") + self.spinBox_custom.setEnabled(False) + self.spinBox_custom.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_custom.setButtonSymbols(QAbstractSpinBox.NoButtons) + + self.horizontalLayout_11.addWidget(self.spinBox_custom) + + + self.verticalLayout_4.addLayout(self.horizontalLayout_11) + + self.horizontalLayout_10 = QHBoxLayout() + self.horizontalLayout_10.setObjectName(u"horizontalLayout_10") + self.label_2 = QLabel(self.verticalLayoutWidget_4) + self.label_2.setObjectName(u"label_2") + sizePolicy5 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) + sizePolicy5.setHorizontalStretch(0) + sizePolicy5.setVerticalStretch(0) + sizePolicy5.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) + self.label_2.setSizePolicy(sizePolicy5) + + self.horizontalLayout_10.addWidget(self.label_2) + + self.label_3 = QLabel(self.verticalLayoutWidget_4) + self.label_3.setObjectName(u"label_3") + self.label_3.setMinimumSize(QSize(40, 0)) + self.label_3.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.horizontalLayout_10.addWidget(self.label_3) + + self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_10.addItem(self.horizontalSpacer_7) + + self.pushButton_Align = QPushButton(self.verticalLayoutWidget_4) + self.pushButton_Align.setObjectName(u"pushButton_Align") + self.pushButton_Align.setMinimumSize(QSize(85, 0)) + + self.horizontalLayout_10.addWidget(self.pushButton_Align) + + + self.verticalLayout_4.addLayout(self.horizontalLayout_10) + + + self.verticalLayout.addWidget(self.groupBox_4) + + self.groupBox_6 = QGroupBox(self.horizontalLayoutWidget) + self.groupBox_6.setObjectName(u"groupBox_6") + self.verticalLayoutWidget_5 = QWidget(self.groupBox_6) + self.verticalLayoutWidget_5.setObjectName(u"verticalLayoutWidget_5") + self.verticalLayoutWidget_5.setGeometry(QRect(10, 20, 271, 92)) + self.verticalLayout_5 = QVBoxLayout(self.verticalLayoutWidget_5) + self.verticalLayout_5.setObjectName(u"verticalLayout_5") + self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_13 = QHBoxLayout() + self.horizontalLayout_13.setObjectName(u"horizontalLayout_13") + self.label_4 = QLabel(self.verticalLayoutWidget_5) + self.label_4.setObjectName(u"label_4") + sizePolicy5.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth()) + self.label_4.setSizePolicy(sizePolicy5) + + self.horizontalLayout_13.addWidget(self.label_4) + + self.spinBox_SelectEpoch = QSpinBox(self.verticalLayoutWidget_5) + self.spinBox_SelectEpoch.setObjectName(u"spinBox_SelectEpoch") + sizePolicy1.setHeightForWidth(self.spinBox_SelectEpoch.sizePolicy().hasHeightForWidth()) + self.spinBox_SelectEpoch.setSizePolicy(sizePolicy1) + self.spinBox_SelectEpoch.setMinimumSize(QSize(60, 0)) + self.spinBox_SelectEpoch.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_SelectEpoch.setButtonSymbols(QAbstractSpinBox.NoButtons) + + self.horizontalLayout_13.addWidget(self.spinBox_SelectEpoch) + + self.horizontalSpacer_6 = QSpacerItem(30, 20, QSizePolicy.Minimum, QSizePolicy.Minimum) + + self.horizontalLayout_13.addItem(self.horizontalSpacer_6) + + self.pushButton_JUMP = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_JUMP.setObjectName(u"pushButton_JUMP") + sizePolicy.setHeightForWidth(self.pushButton_JUMP.sizePolicy().hasHeightForWidth()) + self.pushButton_JUMP.setSizePolicy(sizePolicy) + self.pushButton_JUMP.setMaximumSize(QSize(85, 16777215)) + + self.horizontalLayout_13.addWidget(self.pushButton_JUMP) + + + self.verticalLayout_5.addLayout(self.horizontalLayout_13) + + self.horizontalLayout_14 = QHBoxLayout() + self.horizontalLayout_14.setObjectName(u"horizontalLayout_14") + self.pushButton_EM1 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EM1.setObjectName(u"pushButton_EM1") + + self.horizontalLayout_14.addWidget(self.pushButton_EM1) + + self.pushButton_EM10 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EM10.setObjectName(u"pushButton_EM10") + + self.horizontalLayout_14.addWidget(self.pushButton_EM10) + + self.pushButton_EM100 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EM100.setObjectName(u"pushButton_EM100") + + self.horizontalLayout_14.addWidget(self.pushButton_EM100) + + + self.verticalLayout_5.addLayout(self.horizontalLayout_14) + + self.horizontalLayout_12 = QHBoxLayout() + self.horizontalLayout_12.setObjectName(u"horizontalLayout_12") + self.pushButton_EP1 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EP1.setObjectName(u"pushButton_EP1") + + self.horizontalLayout_12.addWidget(self.pushButton_EP1) + + self.pushButton_EP10 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EP10.setObjectName(u"pushButton_EP10") + + self.horizontalLayout_12.addWidget(self.pushButton_EP10) + + self.pushButton_EP100 = QPushButton(self.verticalLayoutWidget_5) + self.pushButton_EP100.setObjectName(u"pushButton_EP100") + + self.horizontalLayout_12.addWidget(self.pushButton_EP100) + + + self.verticalLayout_5.addLayout(self.horizontalLayout_12) + + + self.verticalLayout.addWidget(self.groupBox_6) + + self.groupBox_2 = QGroupBox(self.horizontalLayoutWidget) + self.groupBox_2.setObjectName(u"groupBox_2") + self.pushButton_SaveInfo = QPushButton(self.groupBox_2) + self.pushButton_SaveInfo.setObjectName(u"pushButton_SaveInfo") + self.pushButton_SaveInfo.setGeometry(QRect(40, 20, 75, 24)) + self.pushButton_Exit = QPushButton(self.groupBox_2) + self.pushButton_Exit.setObjectName(u"pushButton_Exit") + self.pushButton_Exit.setGeometry(QRect(160, 20, 75, 24)) + + self.verticalLayout.addWidget(self.groupBox_2) + + self.verticalLayout_6 = QVBoxLayout() + self.verticalLayout_6.setObjectName(u"verticalLayout_6") + self.progressBar = QProgressBar(self.horizontalLayoutWidget) + self.progressBar.setObjectName(u"progressBar") + self.progressBar.setValue(0) + + self.verticalLayout_6.addWidget(self.progressBar) + + self.label_Info = QLabel(self.horizontalLayoutWidget) + self.label_Info.setObjectName(u"label_Info") + + self.verticalLayout_6.addWidget(self.label_Info) + + self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) + + self.verticalLayout_6.addItem(self.verticalSpacer) + + + self.verticalLayout.addLayout(self.verticalLayout_6) + + self.verticalLayout.setStretch(0, 3) + self.verticalLayout.setStretch(1, 4) + self.verticalLayout.setStretch(2, 4) + self.verticalLayout.setStretch(3, 4) + self.verticalLayout.setStretch(4, 4) + self.verticalLayout.setStretch(5, 2) + self.verticalLayout.setStretch(6, 3) + + self.horizontalLayout.addLayout(self.verticalLayout) + + self.line = QFrame(self.horizontalLayoutWidget) + self.line.setObjectName(u"line") + self.line.setFrameShape(QFrame.VLine) + self.line.setFrameShadow(QFrame.Sunken) + + self.horizontalLayout.addWidget(self.line) + + self.verticalLayout_9 = QVBoxLayout() + self.verticalLayout_9.setObjectName(u"verticalLayout_9") + self.label_SPic = QLabel(self.horizontalLayoutWidget) + self.label_SPic.setObjectName(u"label_SPic") + self.label_SPic.setMaximumSize(QSize(16777215, 100)) + + self.verticalLayout_9.addWidget(self.label_SPic) + + self.line_2 = QFrame(self.horizontalLayoutWidget) + self.line_2.setObjectName(u"line_2") + self.line_2.setFrameShape(QFrame.HLine) + self.line_2.setFrameShadow(QFrame.Sunken) + + self.verticalLayout_9.addWidget(self.line_2) + + self.label_Pic = QLabel(self.horizontalLayoutWidget) + self.label_Pic.setObjectName(u"label_Pic") + + self.verticalLayout_9.addWidget(self.label_Pic) + + self.verticalLayout_9.setStretch(0, 2) + self.verticalLayout_9.setStretch(2, 6) + + self.horizontalLayout.addLayout(self.verticalLayout_9) + + self.horizontalLayout.setStretch(0, 2) + self.horizontalLayout.setStretch(2, 6) + mainWindow.setCentralWidget(self.centralwidget) + self.menubar = QMenuBar(mainWindow) + self.menubar.setObjectName(u"menubar") + self.menubar.setGeometry(QRect(0, 0, 1200, 22)) + self.menu = QMenu(self.menubar) + self.menu.setObjectName(u"menu") + mainWindow.setMenuBar(self.menubar) + self.statusbar = QStatusBar(mainWindow) + self.statusbar.setObjectName(u"statusbar") + mainWindow.setStatusBar(self.statusbar) + + self.menubar.addAction(self.menu.menuAction()) + self.menu.addAction(self.actionDefault_Configuration) + + self.retranslateUi(mainWindow) + + QMetaObject.connectSlotsByName(mainWindow) + # setupUi + + def retranslateUi(self, mainWindow): + mainWindow.setWindowTitle(QCoreApplication.translate("mainWindow", u"\u547c\u5438\u4fe1\u53f7\u7c97\u5bf9\u9f50\u7a0b\u5e8f", None)) + self.actionDefault_Configuration.setText(QCoreApplication.translate("mainWindow", u"Default Configuration", None)) + self.groupBox.setTitle(QCoreApplication.translate("mainWindow", u"\u6253\u5f00", None)) + self.pushButton_Refresh.setText(QCoreApplication.translate("mainWindow", u"\u5237\u65b0", None)) + self.pushButton_OpenFile.setText(QCoreApplication.translate("mainWindow", u"\u6253\u5f00", None)) + self.label.setText(QCoreApplication.translate("mainWindow", u"PSG\u65f6\u957f", None)) + self.label_PSGmins.setText(QCoreApplication.translate("mainWindow", u"0", None)) + self.label_8.setText(QCoreApplication.translate("mainWindow", u"mins", None)) + self.label_6.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653\u65f6\u957f", None)) + self.label_XXmins.setText(QCoreApplication.translate("mainWindow", u"0", None)) + self.label_7.setText(QCoreApplication.translate("mainWindow", u"mins", None)) + self.groupBox_3.setTitle(QCoreApplication.translate("mainWindow", u"\u6807\u51c6\u5316", None)) + self.label_16.setText(QCoreApplication.translate("mainWindow", u"PSG\u91c7\u6837\u7387:", None)) + self.label_17.setText(QCoreApplication.translate("mainWindow", u"Hz", None)) + self.label_18.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653\u91c7\u6837\u7387:", None)) + self.label_19.setText(QCoreApplication.translate("mainWindow", u"Hz", None)) + self.checkBox_PSGDelBase.setText(QCoreApplication.translate("mainWindow", u"PSG\u53bb\u57fa\u7ebf", None)) + self.checkBox_XXDelBase.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653\u53bb\u57fa\u7ebf", None)) + self.checkBox_RawSignal.setText(QCoreApplication.translate("mainWindow", u"\u539f\u59cb\u4fe1\u53f7", None)) + self.checkBox_PSGZScore.setText(QCoreApplication.translate("mainWindow", u"PSG\u6807\u51c6\u5316", None)) + self.checkBox_XXZScore.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653\u6807\u51c6\u5316", None)) + self.pushButton_Standardize.setText(QCoreApplication.translate("mainWindow", u"\u5e94\u7528", None)) + self.groupBox_5.setTitle(QCoreApplication.translate("mainWindow", u"\u622a\u65ad", None)) + self.label_24.setText(QCoreApplication.translate("mainWindow", u"PSG_PRE:", None)) + self.label_22.setText(QCoreApplication.translate("mainWindow", u"PSG_AFT", None)) + self.label_21.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653_PRE:", None)) + self.label_23.setText(QCoreApplication.translate("mainWindow", u"\u5fc3\u6653_AFT", None)) + self.pushButton_GetPos.setText(QCoreApplication.translate("mainWindow", u"\u83b7\u53d6\u5bf9\u9f50\u4f4d\u7f6e", None)) + self.pushButton_CutOff.setText(QCoreApplication.translate("mainWindow", u"\u5e94\u7528", None)) + self.groupBox_4.setTitle(QCoreApplication.translate("mainWindow", u"\u5bf9\u9f50\u8d77\u59cb\u4f4d\u7f6e", None)) + self.checkBox_PTHO.setText(QCoreApplication.translate("mainWindow", u"\u5907\u90091", None)) + self.checkBox_NTHO.setText(QCoreApplication.translate("mainWindow", u"\u5907\u90092", None)) + self.checkBox_PABD.setText(QCoreApplication.translate("mainWindow", u"\u5907\u90093", None)) + self.checkBox_NABD.setText(QCoreApplication.translate("mainWindow", u"\u5907\u90094", None)) + self.checkBox_custom.setText(QCoreApplication.translate("mainWindow", u"\u81ea\u5b9a\u4e49", None)) + self.label_2.setText(QCoreApplication.translate("mainWindow", u"\u63a8\u8350\u67e5\u770bEpoch:", None)) + self.label_3.setText(QCoreApplication.translate("mainWindow", u"0", None)) + self.pushButton_Align.setText(QCoreApplication.translate("mainWindow", u"\u786e\u5b9a", None)) + self.groupBox_6.setTitle(QCoreApplication.translate("mainWindow", u"\u5c40\u90e8\u89c2\u6d4b", None)) + self.label_4.setText(QCoreApplication.translate("mainWindow", u"Epoch:", None)) + self.pushButton_JUMP.setText(QCoreApplication.translate("mainWindow", u"\u8df3\u8f6c", None)) + self.pushButton_EM1.setText(QCoreApplication.translate("mainWindow", u"Epoch-1", None)) + self.pushButton_EM10.setText(QCoreApplication.translate("mainWindow", u"Epoch-10", None)) + self.pushButton_EM100.setText(QCoreApplication.translate("mainWindow", u"Epoch-100", None)) + self.pushButton_EP1.setText(QCoreApplication.translate("mainWindow", u"Epoch+1", None)) + self.pushButton_EP10.setText(QCoreApplication.translate("mainWindow", u"Epoch+10", None)) + self.pushButton_EP100.setText(QCoreApplication.translate("mainWindow", u"Epoch+100", None)) + self.groupBox_2.setTitle(QCoreApplication.translate("mainWindow", u"\u4fdd\u5b58", None)) + self.pushButton_SaveInfo.setText(QCoreApplication.translate("mainWindow", u"\u4fdd\u5b58\u53c2\u6570", None)) + self.pushButton_Exit.setText(QCoreApplication.translate("mainWindow", u"\u9000\u51fa", None)) + self.label_Info.setText(QCoreApplication.translate("mainWindow", u"Info", None)) + self.label_SPic.setText(QCoreApplication.translate("mainWindow", u"TextLabel", None)) + self.label_Pic.setText(QCoreApplication.translate("mainWindow", u"TextLabel", None)) + self.menu.setTitle(QCoreApplication.translate("mainWindow", u"\u9ed8\u8ba4\u8bbe\u7f6e", None)) + # retranslateUi + diff --git a/ui/Mian.ui b/ui/Mian.ui new file mode 100644 index 0000000..5020de6 --- /dev/null +++ b/ui/Mian.ui @@ -0,0 +1,1242 @@ + + + mainWindow + + + + 0 + 0 + 1200 + 800 + + + + + 0 + 0 + + + + + 1200 + 800 + + + + + 1920 + 1080 + + + + + 4 + 3 + + + + 呼吸信号粗对齐程序 + + + + + + 10 + 10 + 1181 + 741 + + + + + + + + + 打开 + + + + + 10 + 20 + 274 + 71 + + + + + + + + + + 0 + 0 + + + + + + + + + 60 + 16777215 + + + + 刷新 + + + + + + + + 60 + 16777215 + + + + 打开 + + + + + + + + + + + + 0 + 0 + + + + PSG时长 + + + + + + + 0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + mins + + + + + + + + 0 + 0 + + + + 心晓时长 + + + + + + + 1 + + + Qt::LeftToRight + + + 0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + mins + + + + + + + + + + + + + 标准化 + + + + + 10 + 20 + 282 + 91 + + + + + + + + + + 0 + 0 + + + + + 65 + 16777215 + + + + PSG采样率: + + + + + + + + 60 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 1 + + + 1000 + + + 100 + + + + + + + Hz + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + 心晓采样率: + + + + + + + + 60 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 1 + + + 1000 + + + 1000 + + + + + + + Hz + + + + + + + + + + + + 85 + 0 + + + + + 85 + 16777215 + + + + PSG去基线 + + + true + + + + + + + + 85 + 0 + + + + + 85 + 16777215 + + + + 心晓去基线 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 原始信号 + + + + + + + + + + + + 85 + 0 + + + + + 85 + 16777215 + + + + PSG标准化 + + + true + + + + + + + + 85 + 0 + + + + + 85 + 16777215 + + + + 心晓标准化 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 应用 + + + + + + + + + + + + + 截断 + + + + + 10 + 20 + 271 + 91 + + + + + + + + + + 0 + 0 + + + + + 65 + 16777215 + + + + PSG_PRE: + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 100 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 0 + + + 1000 + + + 0 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + PSG_AFT + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 100 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 0 + + + 1000 + + + 0 + + + + + + + + + + + + 0 + 0 + + + + + 65 + 16777215 + + + + 心晓_PRE: + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 100 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 0 + + + 0 + + + 0 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + 心晓_AFT + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 60 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 0 + + + 1000 + + + 0 + + + + + + + + + + + + 0 + 0 + + + + 获取对齐位置 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 85 + 0 + + + + + 85 + 16777215 + + + + 应用 + + + + + + + + + + + + + 对齐起始位置 + + + + + 10 + 20 + 271 + 91 + + + + + + + + + 备选1 + + + true + + + + + + + 备选2 + + + true + + + + + + + 备选3 + + + true + + + + + + + + + + + 备选4 + + + true + + + + + + + 自定义 + + + true + + + + + + + false + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + + + + + + + + + + 0 + 0 + + + + 推荐查看Epoch: + + + + + + + + 40 + 0 + + + + 0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 85 + 0 + + + + 确定 + + + + + + + + + + + + + 局部观测 + + + + + 10 + 20 + 271 + 92 + + + + + + + + + + 0 + 0 + + + + Epoch: + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 30 + 20 + + + + + + + + + 0 + 0 + + + + + 85 + 16777215 + + + + 跳转 + + + + + + + + + + + Epoch-1 + + + + + + + Epoch-10 + + + + + + + Epoch-100 + + + + + + + + + + + Epoch+1 + + + + + + + Epoch+10 + + + + + + + Epoch+100 + + + + + + + + + + + + + 保存 + + + + + 40 + 20 + 75 + 24 + + + + 保存参数 + + + + + + 160 + 20 + 75 + 24 + + + + 退出 + + + + + + + + + + 0 + + + + + + + Info + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + Qt::Vertical + + + + + + + + + + 16777215 + 100 + + + + TextLabel + + + + + + + Qt::Horizontal + + + + + + + TextLabel + + + + + + + + + + + + 0 + 0 + 1200 + 22 + + + + + 默认设置 + + + + + + + + + Default Configuration + + + + + + diff --git a/ui/setings.py b/ui/setings.py new file mode 100644 index 0000000..97be965 --- /dev/null +++ b/ui/setings.py @@ -0,0 +1,411 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'setings.ui' +## +## Created by: Qt User Interface Compiler version 6.5.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QAbstractSpinBox, QApplication, QCheckBox, QDoubleSpinBox, + QGridLayout, QGroupBox, QHBoxLayout, QLabel, + QLineEdit, QMainWindow, QMenuBar, QPushButton, + QSizePolicy, QSpacerItem, QSpinBox, QStatusBar, + QToolButton, QWidget) + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + if not MainWindow.objectName(): + MainWindow.setObjectName(u"MainWindow") + MainWindow.resize(600, 380) + MainWindow.setMinimumSize(QSize(600, 380)) + MainWindow.setMaximumSize(QSize(600, 380)) + self.centralwidget = QWidget(MainWindow) + self.centralwidget.setObjectName(u"centralwidget") + self.pushButton_SaveConfig = QPushButton(self.centralwidget) + self.pushButton_SaveConfig.setObjectName(u"pushButton_SaveConfig") + self.pushButton_SaveConfig.setGeometry(QRect(180, 310, 75, 24)) + self.pushButton_Cancel = QPushButton(self.centralwidget) + self.pushButton_Cancel.setObjectName(u"pushButton_Cancel") + self.pushButton_Cancel.setGeometry(QRect(340, 310, 75, 24)) + self.gridLayoutWidget = QWidget(self.centralwidget) + self.gridLayoutWidget.setObjectName(u"gridLayoutWidget") + self.gridLayoutWidget.setGeometry(QRect(20, 10, 561, 281)) + self.gridLayout = QGridLayout(self.gridLayoutWidget) + self.gridLayout.setObjectName(u"gridLayout") + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.groupBox_2 = QGroupBox(self.gridLayoutWidget) + self.groupBox_2.setObjectName(u"groupBox_2") + self.gridLayoutWidget_2 = QWidget(self.groupBox_2) + self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2") + self.gridLayoutWidget_2.setGeometry(QRect(10, 20, 541, 61)) + self.gridLayout_3 = QGridLayout(self.gridLayoutWidget_2) + self.gridLayout_3.setObjectName(u"gridLayout_3") + self.gridLayout_3.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_3 = QHBoxLayout() + self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") + self.label_2 = QLabel(self.gridLayoutWidget_2) + self.label_2.setObjectName(u"label_2") + sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) + self.label_2.setSizePolicy(sizePolicy) + self.label_2.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_3.addWidget(self.label_2) + + self.spinBox_PSGDefaultFreq = QSpinBox(self.gridLayoutWidget_2) + self.spinBox_PSGDefaultFreq.setObjectName(u"spinBox_PSGDefaultFreq") + self.spinBox_PSGDefaultFreq.setMaximumSize(QSize(60, 16777215)) + self.spinBox_PSGDefaultFreq.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_PSGDefaultFreq.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_PSGDefaultFreq.setMinimum(1) + self.spinBox_PSGDefaultFreq.setMaximum(1000) + self.spinBox_PSGDefaultFreq.setValue(100) + + self.horizontalLayout_3.addWidget(self.spinBox_PSGDefaultFreq) + + self.label_3 = QLabel(self.gridLayoutWidget_2) + self.label_3.setObjectName(u"label_3") + + self.horizontalLayout_3.addWidget(self.label_3) + + self.horizontalSpacer_3 = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum) + + self.horizontalLayout_3.addItem(self.horizontalSpacer_3) + + self.label_4 = QLabel(self.gridLayoutWidget_2) + self.label_4.setObjectName(u"label_4") + sizePolicy1 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) + sizePolicy1.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth()) + self.label_4.setSizePolicy(sizePolicy1) + self.label_4.setMaximumSize(QSize(50, 16777215)) + + self.horizontalLayout_3.addWidget(self.label_4) + + self.checkBox_THOautoChannel = QCheckBox(self.gridLayoutWidget_2) + self.checkBox_THOautoChannel.setObjectName(u"checkBox_THOautoChannel") + self.checkBox_THOautoChannel.setMaximumSize(QSize(45, 16777215)) + self.checkBox_THOautoChannel.setChecked(True) + + self.horizontalLayout_3.addWidget(self.checkBox_THOautoChannel) + + self.spinBox_THOcustomChannel = QSpinBox(self.gridLayoutWidget_2) + self.spinBox_THOcustomChannel.setObjectName(u"spinBox_THOcustomChannel") + self.spinBox_THOcustomChannel.setEnabled(False) + self.spinBox_THOcustomChannel.setMaximumSize(QSize(40, 16777215)) + font = QFont() + font.setUnderline(True) + self.spinBox_THOcustomChannel.setFont(font) + self.spinBox_THOcustomChannel.setAlignment(Qt.AlignCenter) + self.spinBox_THOcustomChannel.setReadOnly(True) + self.spinBox_THOcustomChannel.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_THOcustomChannel.setAccelerated(True) + self.spinBox_THOcustomChannel.setValue(3) + + self.horizontalLayout_3.addWidget(self.spinBox_THOcustomChannel) + + self.horizontalSpacer = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum) + + self.horizontalLayout_3.addItem(self.horizontalSpacer) + + self.label_5 = QLabel(self.gridLayoutWidget_2) + self.label_5.setObjectName(u"label_5") + sizePolicy1.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth()) + self.label_5.setSizePolicy(sizePolicy1) + self.label_5.setMaximumSize(QSize(50, 16777215)) + + self.horizontalLayout_3.addWidget(self.label_5) + + self.checkBox_ABDautoChannel = QCheckBox(self.gridLayoutWidget_2) + self.checkBox_ABDautoChannel.setObjectName(u"checkBox_ABDautoChannel") + self.checkBox_ABDautoChannel.setMaximumSize(QSize(45, 16777215)) + self.checkBox_ABDautoChannel.setChecked(True) + + self.horizontalLayout_3.addWidget(self.checkBox_ABDautoChannel) + + self.spinBox_ABDcustomChannel = QSpinBox(self.gridLayoutWidget_2) + self.spinBox_ABDcustomChannel.setObjectName(u"spinBox_ABDcustomChannel") + self.spinBox_ABDcustomChannel.setEnabled(False) + self.spinBox_ABDcustomChannel.setMaximumSize(QSize(40, 16777215)) + self.spinBox_ABDcustomChannel.setFont(font) + self.spinBox_ABDcustomChannel.setAlignment(Qt.AlignCenter) + self.spinBox_ABDcustomChannel.setReadOnly(True) + self.spinBox_ABDcustomChannel.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_ABDcustomChannel.setValue(4) + + self.horizontalLayout_3.addWidget(self.spinBox_ABDcustomChannel) + + self.horizontalSpacer_2 = QSpacerItem(30, 20, QSizePolicy.Minimum, QSizePolicy.Minimum) + + self.horizontalLayout_3.addItem(self.horizontalSpacer_2) + + + self.gridLayout_3.addLayout(self.horizontalLayout_3, 2, 2, 1, 1) + + self.horizontalLayout_2 = QHBoxLayout() + self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") + self.label = QLabel(self.gridLayoutWidget_2) + self.label.setObjectName(u"label") + sizePolicy1.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) + self.label.setSizePolicy(sizePolicy1) + self.label.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_2.addWidget(self.label) + + self.lineEdit_PSGFilePath = QLineEdit(self.gridLayoutWidget_2) + self.lineEdit_PSGFilePath.setObjectName(u"lineEdit_PSGFilePath") + + self.horizontalLayout_2.addWidget(self.lineEdit_PSGFilePath) + + self.toolButton_PSGFilePath = QToolButton(self.gridLayoutWidget_2) + self.toolButton_PSGFilePath.setObjectName(u"toolButton_PSGFilePath") + self.toolButton_PSGFilePath.setMinimumSize(QSize(30, 0)) + self.toolButton_PSGFilePath.setMaximumSize(QSize(16777215, 16777215)) + + self.horizontalLayout_2.addWidget(self.toolButton_PSGFilePath) + + + self.gridLayout_3.addLayout(self.horizontalLayout_2, 1, 2, 1, 1) + + + self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1) + + self.groupBox_3 = QGroupBox(self.gridLayoutWidget) + self.groupBox_3.setObjectName(u"groupBox_3") + self.gridLayoutWidget_3 = QWidget(self.groupBox_3) + self.gridLayoutWidget_3.setObjectName(u"gridLayoutWidget_3") + self.gridLayoutWidget_3.setGeometry(QRect(10, 20, 541, 61)) + self.gridLayout_4 = QGridLayout(self.gridLayoutWidget_3) + self.gridLayout_4.setObjectName(u"gridLayout_4") + self.gridLayout_4.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_5 = QHBoxLayout() + self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") + self.label_7 = QLabel(self.gridLayoutWidget_3) + self.label_7.setObjectName(u"label_7") + sizePolicy2 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) + sizePolicy2.setHorizontalStretch(0) + sizePolicy2.setVerticalStretch(0) + sizePolicy2.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth()) + self.label_7.setSizePolicy(sizePolicy2) + self.label_7.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_5.addWidget(self.label_7) + + self.spinBox_XXDefaultFreq = QSpinBox(self.gridLayoutWidget_3) + self.spinBox_XXDefaultFreq.setObjectName(u"spinBox_XXDefaultFreq") + self.spinBox_XXDefaultFreq.setMaximumSize(QSize(60, 16777215)) + self.spinBox_XXDefaultFreq.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_XXDefaultFreq.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_XXDefaultFreq.setMinimum(1) + self.spinBox_XXDefaultFreq.setMaximum(1000) + self.spinBox_XXDefaultFreq.setValue(1000) + + self.horizontalLayout_5.addWidget(self.spinBox_XXDefaultFreq) + + self.label_8 = QLabel(self.gridLayoutWidget_3) + self.label_8.setObjectName(u"label_8") + + self.horizontalLayout_5.addWidget(self.label_8) + + + self.gridLayout_4.addLayout(self.horizontalLayout_5, 2, 2, 1, 1) + + self.horizontalLayout_4 = QHBoxLayout() + self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") + self.label_6 = QLabel(self.gridLayoutWidget_3) + self.label_6.setObjectName(u"label_6") + sizePolicy1.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth()) + self.label_6.setSizePolicy(sizePolicy1) + self.label_6.setMaximumSize(QSize(72, 16777215)) + + self.horizontalLayout_4.addWidget(self.label_6) + + self.lineEdit_XXFilePath = QLineEdit(self.gridLayoutWidget_3) + self.lineEdit_XXFilePath.setObjectName(u"lineEdit_XXFilePath") + + self.horizontalLayout_4.addWidget(self.lineEdit_XXFilePath) + + self.toolButton_XXFilePath = QToolButton(self.gridLayoutWidget_3) + self.toolButton_XXFilePath.setObjectName(u"toolButton_XXFilePath") + self.toolButton_XXFilePath.setMinimumSize(QSize(30, 0)) + + self.horizontalLayout_4.addWidget(self.toolButton_XXFilePath) + + + self.gridLayout_4.addLayout(self.horizontalLayout_4, 1, 2, 1, 1) + + + self.gridLayout.addWidget(self.groupBox_3, 1, 0, 1, 1) + + self.groupBox = QGroupBox(self.gridLayoutWidget) + self.groupBox.setObjectName(u"groupBox") + self.horizontalLayoutWidget_4 = QWidget(self.groupBox) + self.horizontalLayoutWidget_4.setObjectName(u"horizontalLayoutWidget_4") + self.horizontalLayoutWidget_4.setGeometry(QRect(10, 10, 541, 31)) + self.horizontalLayout_6 = QHBoxLayout(self.horizontalLayoutWidget_4) + self.horizontalLayout_6.setObjectName(u"horizontalLayout_6") + self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) + self.label_14 = QLabel(self.horizontalLayoutWidget_4) + self.label_14.setObjectName(u"label_14") + + self.horizontalLayout_6.addWidget(self.label_14) + + self.QSpinBox_ApplyFre = QSpinBox(self.horizontalLayoutWidget_4) + self.QSpinBox_ApplyFre.setObjectName(u"QSpinBox_ApplyFre") + self.QSpinBox_ApplyFre.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.QSpinBox_ApplyFre.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.QSpinBox_ApplyFre.setMaximum(100) + self.QSpinBox_ApplyFre.setValue(5) + + self.horizontalLayout_6.addWidget(self.QSpinBox_ApplyFre) + + self.label_15 = QLabel(self.horizontalLayoutWidget_4) + self.label_15.setObjectName(u"label_15") + + self.horizontalLayout_6.addWidget(self.label_15) + + self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout_6.addItem(self.horizontalSpacer_8) + + + self.gridLayout.addWidget(self.groupBox, 3, 0, 1, 1) + + self.groupBox_4 = QGroupBox(self.gridLayoutWidget) + self.groupBox_4.setObjectName(u"groupBox_4") + self.horizontalLayoutWidget = QWidget(self.groupBox_4) + self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget") + self.horizontalLayoutWidget.setGeometry(QRect(10, 20, 541, 31)) + self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget) + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer_6) + + self.label_11 = QLabel(self.horizontalLayoutWidget) + self.label_11.setObjectName(u"label_11") + + self.horizontalLayout.addWidget(self.label_11) + + self.spinBox_ButterOrder = QSpinBox(self.horizontalLayoutWidget) + self.spinBox_ButterOrder.setObjectName(u"spinBox_ButterOrder") + self.spinBox_ButterOrder.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.spinBox_ButterOrder.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.spinBox_ButterOrder.setMaximum(10) + self.spinBox_ButterOrder.setValue(4) + + self.horizontalLayout.addWidget(self.spinBox_ButterOrder) + + self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer_4) + + self.label_10 = QLabel(self.horizontalLayoutWidget) + self.label_10.setObjectName(u"label_10") + + self.horizontalLayout.addWidget(self.label_10) + + self.doubleSpinBox_ButterLowPassFreq = QDoubleSpinBox(self.horizontalLayoutWidget) + self.doubleSpinBox_ButterLowPassFreq.setObjectName(u"doubleSpinBox_ButterLowPassFreq") + self.doubleSpinBox_ButterLowPassFreq.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.doubleSpinBox_ButterLowPassFreq.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.doubleSpinBox_ButterLowPassFreq.setMaximum(10.000000000000000) + self.doubleSpinBox_ButterLowPassFreq.setValue(0.010000000000000) + + self.horizontalLayout.addWidget(self.doubleSpinBox_ButterLowPassFreq) + + self.label_12 = QLabel(self.horizontalLayoutWidget) + self.label_12.setObjectName(u"label_12") + + self.horizontalLayout.addWidget(self.label_12) + + self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer_5) + + self.label_9 = QLabel(self.horizontalLayoutWidget) + self.label_9.setObjectName(u"label_9") + + self.horizontalLayout.addWidget(self.label_9) + + self.doubleSpinBox_ButterHighPassFreq = QDoubleSpinBox(self.horizontalLayoutWidget) + self.doubleSpinBox_ButterHighPassFreq.setObjectName(u"doubleSpinBox_ButterHighPassFreq") + self.doubleSpinBox_ButterHighPassFreq.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.doubleSpinBox_ButterHighPassFreq.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.doubleSpinBox_ButterHighPassFreq.setMaximum(10.000000000000000) + self.doubleSpinBox_ButterHighPassFreq.setValue(0.700000000000000) + + self.horizontalLayout.addWidget(self.doubleSpinBox_ButterHighPassFreq) + + self.label_13 = QLabel(self.horizontalLayoutWidget) + self.label_13.setObjectName(u"label_13") + + self.horizontalLayout.addWidget(self.label_13) + + self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer_7) + + + self.gridLayout.addWidget(self.groupBox_4, 2, 0, 1, 1) + + self.gridLayout.setRowStretch(0, 3) + self.gridLayout.setRowStretch(1, 3) + self.gridLayout.setRowStretch(2, 2) + self.gridLayout.setRowStretch(3, 2) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QMenuBar(MainWindow) + self.menubar.setObjectName(u"menubar") + self.menubar.setGeometry(QRect(0, 0, 600, 21)) + MainWindow.setMenuBar(self.menubar) + self.statusbar = QStatusBar(MainWindow) + self.statusbar.setObjectName(u"statusbar") + MainWindow.setStatusBar(self.statusbar) + + self.retranslateUi(MainWindow) + + QMetaObject.connectSlotsByName(MainWindow) + # setupUi + + def retranslateUi(self, MainWindow): + MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) + self.pushButton_SaveConfig.setText(QCoreApplication.translate("MainWindow", u"\u4fdd\u5b58", None)) + self.pushButton_Cancel.setText(QCoreApplication.translate("MainWindow", u"\u53d6\u6d88", None)) + self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow", u"PSG\u8bbe\u7f6e", None)) + self.label_2.setText(QCoreApplication.translate("MainWindow", u"\u9ed8\u8ba4\u91c7\u6837\u7387:", None)) + self.label_3.setText(QCoreApplication.translate("MainWindow", u"Hz", None)) + self.label_4.setText(QCoreApplication.translate("MainWindow", u"THO\u4fe1\u9053", None)) + self.checkBox_THOautoChannel.setText(QCoreApplication.translate("MainWindow", u"auto", None)) + self.label_5.setText(QCoreApplication.translate("MainWindow", u"ABD\u4fe1\u9053", None)) + self.checkBox_ABDautoChannel.setText(QCoreApplication.translate("MainWindow", u"auto", None)) + self.label.setText(QCoreApplication.translate("MainWindow", u"PSG\u6587\u4ef6\u5939\uff1a", None)) + self.toolButton_PSGFilePath.setText(QCoreApplication.translate("MainWindow", u"...", None)) + self.groupBox_3.setTitle(QCoreApplication.translate("MainWindow", u"\u5fc3\u6653\u8bbe\u7f6e", None)) + self.label_7.setText(QCoreApplication.translate("MainWindow", u"\u9ed8\u8ba4\u91c7\u6837\u7387:", None)) + self.label_8.setText(QCoreApplication.translate("MainWindow", u"Hz", None)) + self.label_6.setText(QCoreApplication.translate("MainWindow", u"\u5fc3\u6653\u6587\u4ef6\u5939\uff1a", None)) + self.toolButton_XXFilePath.setText(QCoreApplication.translate("MainWindow", u"...", None)) + self.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"\u663e\u793a\u8bbe\u7f6e", None)) + self.label_14.setText(QCoreApplication.translate("MainWindow", u"\u663e\u793a\u6570\u636e\u9891\u7387\uff1a", None)) + self.label_15.setText(QCoreApplication.translate("MainWindow", u"Hz", None)) + self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow", u"\u547c\u5438\u63d0\u53d6\u6ee4\u6ce2\u5668\u8bbe\u7f6e", None)) + self.label_11.setText(QCoreApplication.translate("MainWindow", u"\u9636\u6570", None)) + self.label_10.setText(QCoreApplication.translate("MainWindow", u"\u4f4e\u901a\u622a\u6b62\u9891\u7387", None)) + self.label_12.setText(QCoreApplication.translate("MainWindow", u"Hz", None)) + self.label_9.setText(QCoreApplication.translate("MainWindow", u"\u9ad8\u901a\u622a\u6b62\u9891\u7387", None)) + self.label_13.setText(QCoreApplication.translate("MainWindow", u"Hz", None)) + # retranslateUi + diff --git a/ui/setings.ui b/ui/setings.ui new file mode 100644 index 0000000..3700c09 --- /dev/null +++ b/ui/setings.ui @@ -0,0 +1,711 @@ + + + MainWindow + + + + 0 + 0 + 600 + 380 + + + + + 600 + 380 + + + + + 600 + 380 + + + + MainWindow + + + + + + 180 + 310 + 75 + 24 + + + + 保存 + + + + + + 340 + 310 + 75 + 24 + + + + 取消 + + + + + + 20 + 10 + 561 + 281 + + + + + + + PSG设置 + + + + + 10 + 20 + 541 + 61 + + + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + 默认采样率: + + + + + + + + 60 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 1 + + + 1000 + + + 100 + + + + + + + Hz + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + THO信道 + + + + + + + + 45 + 16777215 + + + + auto + + + true + + + + + + + false + + + + 40 + 16777215 + + + + + true + + + + Qt::AlignCenter + + + true + + + QAbstractSpinBox::NoButtons + + + true + + + 3 + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + ABD信道 + + + + + + + + 45 + 16777215 + + + + auto + + + true + + + + + + + false + + + + 40 + 16777215 + + + + + true + + + + Qt::AlignCenter + + + true + + + QAbstractSpinBox::NoButtons + + + 4 + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 30 + 20 + + + + + + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + PSG文件夹: + + + + + + + + + + + 30 + 0 + + + + + 16777215 + 16777215 + + + + ... + + + + + + + + + + + + + 心晓设置 + + + + + 10 + 20 + 541 + 61 + + + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + 默认采样率: + + + + + + + + 60 + 16777215 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 1 + + + 1000 + + + 1000 + + + + + + + Hz + + + + + + + + + + + + 0 + 0 + + + + + 72 + 16777215 + + + + 心晓文件夹: + + + + + + + + + + + 30 + 0 + + + + ... + + + + + + + + + + + + + 显示设置 + + + + + 10 + 10 + 541 + 31 + + + + + + + 显示数据频率: + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 100 + + + 5 + + + + + + + Hz + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 呼吸提取滤波器设置 + + + + + 10 + 20 + 541 + 31 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 阶数 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 10 + + + 4 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 低通截止频率 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 10.000000000000000 + + + 0.010000000000000 + + + + + + + Hz + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 高通截止频率 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::NoButtons + + + 10.000000000000000 + + + 0.700000000000000 + + + + + + + Hz + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + 0 + 0 + 600 + 21 + + + + + + + +