diff --git a/func/Module_preprocess.py b/func/Module_preprocess.py
index 723f0ea..85ba8e0 100644
--- a/func/Module_preprocess.py
+++ b/func/Module_preprocess.py
@@ -8,6 +8,7 @@ from matplotlib.backends.backend_qt import NavigationToolbar2QT
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
from overrides import overrides
from pandas import read_csv, DataFrame
+from scipy.signal import resample
from yaml import dump, load, FullLoader
from func.utils.PublicFunc import PublicFunc
@@ -54,6 +55,7 @@ class SettingWindow(QMainWindow):
self.__read_config__()
self.ui.spinBox_input_freq.valueChanged.connect(self.__update_ui__)
+ self.ui.spinBox_output_freq.valueChanged.connect(self.__update_ui__)
self.ui.pushButton_confirm.clicked.connect(self.__write_config__)
self.ui.pushButton_cancel.clicked.connect(self.__rollback_config__)
self.ui.pushButton_cancel.clicked.connect(self.close)
@@ -78,7 +80,7 @@ class SettingWindow(QMainWindow):
ConfigParams.ENDSWITH_TXT))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.PREPROCESS_SAVE_BCG_FILENAME +
- str(Config["InputConfig"]["Freq"]) +
+ str(Config["OutputConfig"]["Freq"]) +
ConfigParams.ENDSWITH_TXT)))
},
"Mode": self.mode
@@ -92,7 +94,7 @@ class SettingWindow(QMainWindow):
ConfigParams.ENDSWITH_TXT))),
"Save": str((Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) / Path(ConfigParams.PREPROCESS_SAVE_ECG_FILENAME +
- str(Config["InputConfig"]["Freq"]) +
+ str(Config["OutputConfig"]["Freq"]) +
ConfigParams.ENDSWITH_TXT)))
},
"Mode": self.mode
@@ -100,6 +102,7 @@ class SettingWindow(QMainWindow):
# 数据回显
self.ui.spinBox_input_freq.setValue(Config["InputConfig"]["Freq"])
+ self.ui.spinBox_output_freq.setValue(Config["OutputConfig"]["Freq"])
self.ui.plainTextEdit_file_path_input.setPlainText(Config["Path"]["Input"])
self.ui.plainTextEdit_file_path_save.setPlainText(Config["Path"]["Save"])
@@ -107,11 +110,13 @@ class SettingWindow(QMainWindow):
# 从界面写入配置
Config["InputConfig"]["Freq"] = self.ui.spinBox_input_freq.value()
+ Config["OutputConfig"]["Freq"] = self.ui.spinBox_output_freq.value()
Config["Path"]["Input"] = self.ui.plainTextEdit_file_path_input.toPlainText()
Config["Path"]["Save"] = self.ui.plainTextEdit_file_path_save.toPlainText()
# 保存配置到文件
self.config["InputConfig"]["Freq"] = self.ui.spinBox_input_freq.value()
+ self.config["OutputConfig"]["Freq"] = self.ui.spinBox_output_freq.value()
with open(ConfigParams.PREPROCESS_CONFIG_FILE_PATH, "w") as f:
dump(self.config, f)
@@ -137,7 +142,7 @@ class SettingWindow(QMainWindow):
ConfigParams.PUBLIC_PATH_ORGBCG_TEXT /
Path(str(self.sampID)) /
Path(ConfigParams.PREPROCESS_SAVE_BCG_FILENAME +
- str(self.ui.spinBox_input_freq.value()) +
+ str(self.ui.spinBox_output_freq.value()) +
ConfigParams.ENDSWITH_TXT))))
else:
self.ui.plainTextEdit_file_path_input.setPlainText(
@@ -152,7 +157,7 @@ class SettingWindow(QMainWindow):
ConfigParams.PUBLIC_PATH_PSG_TEXT /
Path(str(self.sampID)) /
Path(ConfigParams.PREPROCESS_SAVE_ECG_FILENAME +
- str(self.ui.spinBox_input_freq.value()) +
+ str(self.ui.spinBox_output_freq.value()) +
ConfigParams.ENDSWITH_TXT))))
@@ -491,18 +496,22 @@ class Data:
return False, Constants.PREPROCESS_PROCESS_FAILURE + Constants.PREPROCESS_FAILURE_REASON["Raw_Data_Not_Exist"]
try:
+ if Config["InputConfig"]["Freq"] != Config["OutputConfig"]["Freq"]:
+ self.raw_data = resample(self.raw_data,
+ int(len(self.raw_data) *
+ (Config["OutputConfig"]["Freq"] / Config["InputConfig"]["Freq"])))
if Config["Mode"] == "BCG":
self.processed_data = Butterworth_for_BCG_PreProcess(self.raw_data, type='bandpass',
low_cut=Config["Filter"]["BCGBandPassLow"],
high_cut=Config["Filter"]["BCGBandPassHigh"],
order=Config["Filter"]["BCGBandPassOrder"],
- sample_rate=Config["InputConfig"]["Freq"])
+ sample_rate=Config["OutputConfig"]["Freq"])
else:
self.processed_data = Butterworth_for_ECG_PreProcess(self.raw_data, type='bandpass',
low_cut=Config["Filter"]["ECGBandPassLow"],
high_cut=Config["Filter"]["ECGBandPassHigh"],
order=Config["Filter"]["ECGBandPassOrder"],
- sample_rate=Config["InputConfig"]["Freq"])
+ sample_rate=Config["OutputConfig"]["Freq"])
except Exception:
return False, Constants.PREPROCESS_PROCESS_FAILURE + Constants.PREPROCESS_FAILURE_REASON["Filter_Exception"]
diff --git a/func/utils/ConfigParams.py b/func/utils/ConfigParams.py
index 8605a96..6656b2e 100644
--- a/func/utils/ConfigParams.py
+++ b/func/utils/ConfigParams.py
@@ -36,6 +36,9 @@ class ConfigParams:
"InputConfig": {
"Freq": 1000
},
+ "OutputConfig": {
+ "Freq": 1000
+ },
"Filter": {
"BCGBandPassOrder": 4,
"BCGBandPassLow": 2,
diff --git a/ui/setting/preprocess_input_setting.py b/ui/setting/preprocess_input_setting.py
index 509af36..72bc244 100644
--- a/ui/setting/preprocess_input_setting.py
+++ b/ui/setting/preprocess_input_setting.py
@@ -23,7 +23,7 @@ class Ui_MainWindow_preprocess_input_setting(object):
def setupUi(self, MainWindow_preprocess_input_setting):
if not MainWindow_preprocess_input_setting.objectName():
MainWindow_preprocess_input_setting.setObjectName(u"MainWindow_preprocess_input_setting")
- MainWindow_preprocess_input_setting.resize(480, 320)
+ MainWindow_preprocess_input_setting.resize(480, 440)
self.centralwidget = QWidget(MainWindow_preprocess_input_setting)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
@@ -80,6 +80,25 @@ class Ui_MainWindow_preprocess_input_setting(object):
self.groupBox_file_path_save.setObjectName(u"groupBox_file_path_save")
self.verticalLayout_4 = QVBoxLayout(self.groupBox_file_path_save)
self.verticalLayout_4.setObjectName(u"verticalLayout_4")
+ self.horizontalLayout_2 = QHBoxLayout()
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.label_2 = QLabel(self.groupBox_file_path_save)
+ self.label_2.setObjectName(u"label_2")
+ self.label_2.setFont(font)
+
+ self.horizontalLayout_2.addWidget(self.label_2)
+
+ self.spinBox_output_freq = QSpinBox(self.groupBox_file_path_save)
+ self.spinBox_output_freq.setObjectName(u"spinBox_output_freq")
+ self.spinBox_output_freq.setFont(font)
+ self.spinBox_output_freq.setMinimum(1)
+ self.spinBox_output_freq.setMaximum(1000000)
+
+ self.horizontalLayout_2.addWidget(self.spinBox_output_freq)
+
+
+ self.verticalLayout_4.addLayout(self.horizontalLayout_2)
+
self.plainTextEdit_file_path_save = QPlainTextEdit(self.groupBox_file_path_save)
self.plainTextEdit_file_path_save.setObjectName(u"plainTextEdit_file_path_save")
@@ -88,6 +107,8 @@ class Ui_MainWindow_preprocess_input_setting(object):
self.verticalLayout_2.addWidget(self.groupBox_file_path_save)
+ self.verticalLayout_2.setStretch(0, 1)
+ self.verticalLayout_2.setStretch(1, 1)
self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 4)
@@ -113,6 +134,7 @@ class Ui_MainWindow_preprocess_input_setting(object):
self.plainTextEdit_file_path_input.setPlainText("")
self.plainTextEdit_file_path_input.setPlaceholderText(QCoreApplication.translate("MainWindow_preprocess_input_setting", u"\u6587\u4ef6\u8def\u5f84", None))
self.groupBox_file_path_save.setTitle(QCoreApplication.translate("MainWindow_preprocess_input_setting", u"\u6ee4\u6ce2\u540e\u4fdd\u5b58\u8def\u5f84", None))
+ self.label_2.setText(QCoreApplication.translate("MainWindow_preprocess_input_setting", u"\u91c7\u6837\u7387(Hz)\uff1a", None))
self.plainTextEdit_file_path_save.setPlaceholderText(QCoreApplication.translate("MainWindow_preprocess_input_setting", u"\u4fdd\u5b58\u8def\u5f84", None))
self.pushButton_confirm.setText(QCoreApplication.translate("MainWindow_preprocess_input_setting", u"\u786e\u5b9a", None))
# retranslateUi
diff --git a/ui/setting/preprocess_input_setting.ui b/ui/setting/preprocess_input_setting.ui
index 718c3a8..7676023 100644
--- a/ui/setting/preprocess_input_setting.ui
+++ b/ui/setting/preprocess_input_setting.ui
@@ -7,7 +7,7 @@
0
0
480
- 320
+ 440
@@ -37,7 +37,7 @@
文件路径
-
+
-
@@ -94,6 +94,37 @@
滤波后保存路径
+
-
+
+
-
+
+
+
+ 12
+
+
+
+ 采样率(Hz):
+
+
+
+ -
+
+
+
+ 12
+
+
+
+ 1
+
+
+ 1000000
+
+
+
+
+
-