优化<冗余数据切割和标签映射>的代码
删去了<冗余数据切割和标签映射>的自动最大化
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -64,7 +64,7 @@ class MainWindow_cut_PSG(QMainWindow):
|
|||||||
"Path": {
|
"Path": {
|
||||||
"InputFolder": str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT / Path(str(self.sampID))),
|
"InputFolder": str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT / Path(str(self.sampID))),
|
||||||
"SaveFolder": str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_ALIGNED / Path(str(self.sampID))),
|
"SaveFolder": str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_ALIGNED / Path(str(self.sampID))),
|
||||||
"InputAlignInfo": str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_LABEL / Path(str(self.sampID)) / (ConfigParams.CUT_PSG_SAVE_ECG_ALIGNINFO_FILENAME + ConfigParams.ENDSWITH_TXT))
|
"InputAlignInfo": str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_LABEL / Path(str(self.sampID)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ class MainWindow_cut_PSG(QMainWindow):
|
|||||||
def __slot_btn_execute__(self):
|
def __slot_btn_execute__(self):
|
||||||
PublicFunc.__disableAllButton__(self, ButtonState)
|
PublicFunc.__disableAllButton__(self, ButtonState)
|
||||||
|
|
||||||
self.data = Data()
|
self.data = Data(self.root_path, self.sampID)
|
||||||
Config["ECGFreq"] = self.ui.spinBox_ECGFreq.value()
|
Config["ECGFreq"] = self.ui.spinBox_ECGFreq.value()
|
||||||
|
|
||||||
# 检查文件是否存在并获取其数据采样率
|
# 检查文件是否存在并获取其数据采样率
|
||||||
@ -185,7 +185,7 @@ class MainWindow_cut_PSG(QMainWindow):
|
|||||||
|
|
||||||
class Data:
|
class Data:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, root_path, sampID):
|
||||||
self.alignInfo = None
|
self.alignInfo = None
|
||||||
|
|
||||||
self.raw = {key: array([]) for key in Config["ChannelInput"]}
|
self.raw = {key: array([]) for key in Config["ChannelInput"]}
|
||||||
@ -194,6 +194,9 @@ class Data:
|
|||||||
self.SALabel = None
|
self.SALabel = None
|
||||||
self.startTime = None
|
self.startTime = None
|
||||||
|
|
||||||
|
self.root_path = root_path
|
||||||
|
self.sampID = sampID
|
||||||
|
|
||||||
def get_file_and_freq(self):
|
def get_file_and_freq(self):
|
||||||
try:
|
try:
|
||||||
for file_path in Path(Config["Path"]["InputFolder"]).glob('*'):
|
for file_path in Path(Config["Path"]["InputFolder"]).glob('*'):
|
||||||
@ -206,22 +209,41 @@ class Data:
|
|||||||
freq = int(freq_str)
|
freq = int(freq_str)
|
||||||
self.freq[key] = freq
|
self.freq[key] = freq
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Filename_Format_not_Correct"])
|
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Filename_Format_not_Correct"])
|
||||||
for value in self.freq.values():
|
for value in self.freq.values():
|
||||||
if value == 0:
|
if value == 0:
|
||||||
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Filename_Format_not_Correct"])
|
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Filename_Format_not_Correct"])
|
||||||
if not any((Config["LabelInput"]["SA Label"] + Config["EndWith"]["SA Label"]) in str(file) for file in Path(Config["Path"]["InputFolder"]).glob('*')):
|
if not any((Config["LabelInput"]["SA Label"] + Config["EndWith"]["SA Label"]) in str(file) for file in Path(Config["Path"]["InputFolder"]).glob('*')):
|
||||||
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE + Constants.CUT_PSG_FAILURE_REASON["File_not_Exist"])
|
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["File_not_Exist"])
|
||||||
if not any((Config["StartTime"] + Config["EndWith"]["StartTime"]) in str(file) for file in Path(Config["Path"]["InputFolder"]).glob('*')):
|
if not any((Config["StartTime"] + Config["EndWith"]["StartTime"]) in str(file) for file in Path(Config["Path"]["InputFolder"]).glob('*')):
|
||||||
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE + Constants.CUT_PSG_FAILURE_REASON["File_not_Exist"])
|
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["File_not_Exist"])
|
||||||
if not Path(Config["Path"]["InputAlignInfo"]).exists():
|
if not Path(Config["Path"]["InputAlignInfo"]).exists():
|
||||||
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE + Constants.CUT_PSG_FAILURE_REASON["File_not_Exist"])
|
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["File_not_Exist"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE + Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE["Get_File_and_Freq_Excepetion"] + "\n" + format_exc())
|
return Result().failure(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Get_File_and_Freq_Excepetion"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FINISHED)
|
return Result().success(info=Constants.CUT_PSG_GET_FILE_AND_FREQ_FINISHED)
|
||||||
|
|
||||||
def open_file(self):
|
def open_file(self):
|
||||||
|
path = str(Path(self.root_path) / ConfigParams.PUBLIC_PATH_PSG_TEXT / Path(str(self.sampID)))
|
||||||
|
for value in Config["ChannelInput"].values():
|
||||||
|
result = PublicFunc.examine_file(path, value)
|
||||||
|
if not result.status:
|
||||||
|
return result
|
||||||
|
|
||||||
|
if Path(Config["Path"]["InputAlignInfo"]).is_file():
|
||||||
|
Config["Path"]["InputAlignInfo"] = str(Path(Config["Path"]["InputAlignInfo"]).parent)
|
||||||
|
|
||||||
|
Config["Path"]["InputAlignInfo"] = str(
|
||||||
|
Path(Config["Path"]["InputAlignInfo"]) / Path(
|
||||||
|
ConfigParams.PRECISELY_ALIGN_INFO + ConfigParams.ENDSWITH_TXT))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for key in Config["ChannelInput"].keys():
|
for key in Config["ChannelInput"].keys():
|
||||||
self.raw[key] = read_csv(Path(Config["Path"]["InputFolder"]) / Path((Config["ChannelInput"][key] + str(self.freq[key]) + Config["EndWith"][key])),
|
self.raw[key] = read_csv(Path(Config["Path"]["InputFolder"]) / Path((Config["ChannelInput"][key] + str(self.freq[key]) + Config["EndWith"][key])),
|
||||||
@ -237,7 +259,8 @@ class Data:
|
|||||||
header=None).to_numpy().reshape(-1)
|
header=None).to_numpy().reshape(-1)
|
||||||
self.alignInfo = literal_eval(self.alignInfo[0])
|
self.alignInfo = literal_eval(self.alignInfo[0])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.INPUT_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Read_Data_Exception"] + "\n" + format_exc())
|
return Result().failure(info=Constants.INPUT_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Open_Data_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.INPUT_FINISHED)
|
return Result().success(info=Constants.INPUT_FINISHED)
|
||||||
|
|
||||||
@ -255,9 +278,11 @@ class Data:
|
|||||||
# 切割信号
|
# 切割信号
|
||||||
self.raw[key] = self.raw[key][start_index_cut:end_index_cut]
|
self.raw[key] = self.raw[key][start_index_cut:end_index_cut]
|
||||||
except Exception:
|
except Exception:
|
||||||
return Result().failure(info=Constants.CUT_PSG_CUT_DATA_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Cut_Data_Length_not_Correct"])
|
return Result().failure(info=Constants.CUT_PSG_CUT_DATA_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Cut_Data_Length_not_Correct"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.CUT_PSG_CUT_DATA_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Cut_Data_Exception"] + "\n" + format_exc())
|
return Result().failure(info=Constants.CUT_PSG_CUT_DATA_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Cut_Data_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.CUT_PSG_CUT_DATA_FINISHED)
|
return Result().success(info=Constants.CUT_PSG_CUT_DATA_FINISHED)
|
||||||
|
|
||||||
@ -269,7 +294,8 @@ class Data:
|
|||||||
self.SALabel["Duration"] = self.SALabel["Duration"].astype(str)
|
self.SALabel["Duration"] = self.SALabel["Duration"].astype(str)
|
||||||
self.SALabel["Duration"] = self.SALabel["Duration"].str.replace(r' \(.*?\)', '', regex=True)
|
self.SALabel["Duration"] = self.SALabel["Duration"].str.replace(r' \(.*?\)', '', regex=True)
|
||||||
except Exception:
|
except Exception:
|
||||||
return Result().failure(info=Constants.CUT_PSG_ALIGN_LABEL_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Align_Label_SALabel_Format_not_Correct"])
|
return Result().failure(info=Constants.CUT_PSG_ALIGN_LABEL_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Align_Label_SALabel_Format_not_Correct"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 获取记录开始时间
|
# 获取记录开始时间
|
||||||
@ -290,14 +316,16 @@ class Data:
|
|||||||
self.SALabel = self.SALabel[self.SALabel["Start"] < ECG_length]
|
self.SALabel = self.SALabel[self.SALabel["Start"] < ECG_length]
|
||||||
self.SALabel.loc[self.SALabel["End"] >= ECG_length, "End"] = ECG_length - 1
|
self.SALabel.loc[self.SALabel["End"] >= ECG_length, "End"] = ECG_length - 1
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.CUT_PSG_ALIGN_LABEL_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Align_Label_Exception"] + "\n" + format_exc())
|
return Result().failure(info=Constants.CUT_PSG_ALIGN_LABEL_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Align_Label_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.CUT_PSG_ALIGN_LABEL_FINISHED)
|
return Result().success(info=Constants.CUT_PSG_ALIGN_LABEL_FINISHED)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
for raw in self.raw.values():
|
for raw in self.raw.values():
|
||||||
if len(raw) == 0:
|
if len(raw) == 0:
|
||||||
return Result().failure(info=Constants.SAVING_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Save_Data_not_Exist"])
|
return Result().failure(info=Constants.SAVING_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Data_not_Exist"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for key, raw in self.raw.items():
|
for key, raw in self.raw.items():
|
||||||
@ -307,7 +335,8 @@ class Data:
|
|||||||
index=False,
|
index=False,
|
||||||
encoding="gbk")
|
encoding="gbk")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.SAVING_FAILURE + Constants.CUT_PSG_FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
return Result().failure(info=Constants.SAVING_FAILURE +
|
||||||
|
Constants.FAILURE_REASON["Save_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.SAVING_FINISHED)
|
return Result().success(info=Constants.SAVING_FINISHED)
|
||||||
|
|
||||||
|
|||||||
@ -415,7 +415,7 @@ class Data:
|
|||||||
header=None).to_numpy().reshape(-1)
|
header=None).to_numpy().reshape(-1)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.INPUT_FAILURE +
|
return Result().failure(info=Constants.INPUT_FAILURE +
|
||||||
Constants.FAILURE_REASON["Read_Data_Exception"] + "\n" + format_exc())
|
Constants.FAILURE_REASON["Open_Data_Exception"] + "\n" + format_exc())
|
||||||
|
|
||||||
return Result().success(info=Constants.INPUT_FINISHED)
|
return Result().success(info=Constants.INPUT_FINISHED)
|
||||||
|
|
||||||
|
|||||||
@ -209,8 +209,6 @@ class MainWindow(QMainWindow, Ui_Signal_Label):
|
|||||||
if not self.check_sampID():
|
if not self.check_sampID():
|
||||||
return
|
return
|
||||||
self.cut_PSG.show(root_path, int(sampID))
|
self.cut_PSG.show(root_path, int(sampID))
|
||||||
# 默认最大化显示而非固定分辨率
|
|
||||||
self.cut_PSG.showMaximized()
|
|
||||||
|
|
||||||
def __slot_btn_artifact_label__(self):
|
def __slot_btn_artifact_label__(self):
|
||||||
self.artifact_label = MainWindow_artifact_label()
|
self.artifact_label = MainWindow_artifact_label()
|
||||||
|
|||||||
@ -35,6 +35,9 @@ class ConfigParams:
|
|||||||
ABD_RAW: str = "Effort Abd_Raw_"
|
ABD_RAW: str = "Effort Abd_Raw_"
|
||||||
FLOWT_RAW: str = "Flow T_Raw_"
|
FLOWT_RAW: str = "Flow T_Raw_"
|
||||||
FLOWP_RAW: str = "Flow P_Raw_"
|
FLOWP_RAW: str = "Flow P_Raw_"
|
||||||
|
SNORE_RAW: str = "Snore_Raw_"
|
||||||
|
SPO2_RAW: str = "SpO2_Raw_"
|
||||||
|
FIVE_CLASS_RAW: str = "5_class_Raw_"
|
||||||
BCG_FILTER: str = "BCG_Filter_"
|
BCG_FILTER: str = "BCG_Filter_"
|
||||||
ECG_FILTER: str = "ECG_Filter_"
|
ECG_FILTER: str = "ECG_Filter_"
|
||||||
JPEAK_REVISE: str = "Jpeak_revise_"
|
JPEAK_REVISE: str = "Jpeak_revise_"
|
||||||
@ -49,6 +52,9 @@ class ConfigParams:
|
|||||||
ABD_SYNC: str = "Effort Abd_Sync_"
|
ABD_SYNC: str = "Effort Abd_Sync_"
|
||||||
FLOWT_SYNC: str = "Flow T_Sync_"
|
FLOWT_SYNC: str = "Flow T_Sync_"
|
||||||
FLOWP_SYNC: str = "Flow P_Sync_"
|
FLOWP_SYNC: str = "Flow P_Sync_"
|
||||||
|
SNORE_SYNC: str = "Snore_Sync_"
|
||||||
|
SPO2_SYNC: str = "SpO2_Sync_"
|
||||||
|
FIVE_CLASS_SYNC: str = "5_class_Sync_"
|
||||||
BCG_SYNC: str = "BCG_Sync_"
|
BCG_SYNC: str = "BCG_Sync_"
|
||||||
ECG_SYNC: str = "ECG_Sync_"
|
ECG_SYNC: str = "ECG_Sync_"
|
||||||
JPEAK_SYNC: str = "Jpeak_Sync_"
|
JPEAK_SYNC: str = "Jpeak_Sync_"
|
||||||
@ -100,10 +106,6 @@ class ConfigParams:
|
|||||||
"ECGBandPassHigh": 25
|
"ECGBandPassHigh": 25
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PREPROCESS_INPUT_BCG_FILENAME: str = "OrgBCG_Raw_"
|
|
||||||
PREPROCESS_INPUT_ECG_FILENAME: str = "ECG II_Raw_"
|
|
||||||
PREPROCESS_SAVE_BCG_FILENAME: str = "BCG_Filter_"
|
|
||||||
PREPROCESS_SAVE_ECG_FILENAME: str = "ECG_Filter_"
|
|
||||||
PREPROCESS_SAVE_CHUNK_SIZE: int = 1000000
|
PREPROCESS_SAVE_CHUNK_SIZE: int = 1000000
|
||||||
|
|
||||||
# BCG的J峰算法定位
|
# BCG的J峰算法定位
|
||||||
@ -124,8 +126,6 @@ class ConfigParams:
|
|||||||
"UseCPU": False,
|
"UseCPU": False,
|
||||||
"DetectMethod": ""
|
"DetectMethod": ""
|
||||||
}
|
}
|
||||||
DETECT_JPEAK_INPUT_BCG_FILENAME: str = "BCG_Filter_"
|
|
||||||
DETECT_JPEAK_SAVE_FILENAME: str = "JPeak_revise"
|
|
||||||
DETECT_JPEAK_SAVE_CHUNK_SIZE: int = 100
|
DETECT_JPEAK_SAVE_CHUNK_SIZE: int = 100
|
||||||
|
|
||||||
# ECG的R峰算法定位
|
# ECG的R峰算法定位
|
||||||
@ -141,8 +141,6 @@ class ConfigParams:
|
|||||||
"PeaksValue": 200,
|
"PeaksValue": 200,
|
||||||
"DetectMethod": ""
|
"DetectMethod": ""
|
||||||
}
|
}
|
||||||
DETECT_RPEAK_INPUT_ECG_FILENAME: str = "ECG_Filter_"
|
|
||||||
DETECT_RPEAK_SAVE_FILENAME: str = "Rpeak_final"
|
|
||||||
DETECT_RPEAK_SAVE_CHUNK_SIZE: int = 100
|
DETECT_RPEAK_SAVE_CHUNK_SIZE: int = 100
|
||||||
|
|
||||||
# 人工纠正
|
# 人工纠正
|
||||||
@ -169,13 +167,6 @@ class ConfigParams:
|
|||||||
"MoveSpeed": 1000
|
"MoveSpeed": 1000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LABEL_CHECK_INPUT_BCG_FILENAME: str = "BCG_Filter_"
|
|
||||||
LABEL_CHECK_INPUT_JPEAK_FILENAME: str = "JPeak_revise"
|
|
||||||
LABEL_CHECK_SAVE_JPEAK_FILENAME: str = "JPeak_revise_corrected"
|
|
||||||
LABEL_CHECK_INPUT_ECG_FILENAME: str = "ECG_Filter_"
|
|
||||||
LABEL_CHECK_INPUT_RPEAK_FILENAME: str = "Rpeak_final"
|
|
||||||
LABEL_CHECK_SAVE_RPEAK_FILENAME: str = "Rpeak_final_corrected"
|
|
||||||
LABEL_CHECK_APPROXIMATELY_ALIGNINFO_FILENAME: str = "Approximately_Align_Info"
|
|
||||||
LABEL_CHECK_SAVE_CHUNK_SIZE: int = 100
|
LABEL_CHECK_SAVE_CHUNK_SIZE: int = 100
|
||||||
LABEL_CHECK_LABEL_TRANSPARENCY: float = 0.2
|
LABEL_CHECK_LABEL_TRANSPARENCY: float = 0.2
|
||||||
LABEL_CHECK_ACTION_LABEL_MULTIPLE_SHORTCUT_KEY: str = "Z"
|
LABEL_CHECK_ACTION_LABEL_MULTIPLE_SHORTCUT_KEY: str = "Z"
|
||||||
@ -190,18 +181,6 @@ class ConfigParams:
|
|||||||
"UseFreq": 1000
|
"UseFreq": 1000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PRECISELY_ALIGN_INPUT_ORGBCG_FILENAME: str = "OrgBCG_Raw_"
|
|
||||||
PRECISELY_ALIGN_INPUT_BCG_FILENAME: str = "BCG_Filter_"
|
|
||||||
PRECISELY_ALIGN_INPUT_JPEAK_FILENAME: str = "JPeak_revise_corrected"
|
|
||||||
PRECISELY_ALIGN_SAVE_ALIGNINFO_FILENAME: str = "Align_info"
|
|
||||||
PRECISELY_ALIGN_INPUT_ECG_FILENAME: str = "ECG_Filter_"
|
|
||||||
PRECISELY_ALIGN_INPUT_RPEAK_FILENAME: str = "Rpeak_final_corrected"
|
|
||||||
PRECISELY_ALIGN_SAVE_ORGBCG_FILENAME: str = "OrgBCG_Sync_"
|
|
||||||
PRECISELY_ALIGN_SAVE_BCG_FILENAME: str = "BCG_Sync_"
|
|
||||||
PRECISELY_ALIGN_SAVE_ECG_FILENAME: str = "ECG_Sync_"
|
|
||||||
PRECISELY_ALIGN_SAVE_JPEAK_FILENAME: str = "JPeak_Sync"
|
|
||||||
PRECISELY_ALIGN_SAVE_RPEAK_FILENAME: str = "Rpeak_Sync"
|
|
||||||
PRECISELY_ALIGN_APPROXIMATELY_ALIGNINFO_FILENAME: str = "Approximately_Align_Info"
|
|
||||||
PRECISELY_ALIGN_ACTION_GET_RANGE_SHORTCUT_KEY: str = "Z"
|
PRECISELY_ALIGN_ACTION_GET_RANGE_SHORTCUT_KEY: str = "Z"
|
||||||
PRECISELY_ALIGN_SAVE_CHUNK_SIZE: int = 1000000
|
PRECISELY_ALIGN_SAVE_CHUNK_SIZE: int = 1000000
|
||||||
PRECISELY_ALIGN_SAVE_PEAK_CHUNK_SIZE: int = 100
|
PRECISELY_ALIGN_SAVE_PEAK_CHUNK_SIZE: int = 100
|
||||||
@ -212,26 +191,26 @@ class ConfigParams:
|
|||||||
CUT_PSG_CONFIG_NEW_CONTENT: dict = {
|
CUT_PSG_CONFIG_NEW_CONTENT: dict = {
|
||||||
"ECGFreq": 1000,
|
"ECGFreq": 1000,
|
||||||
"ChannelInput": {
|
"ChannelInput": {
|
||||||
"Effort Tho": "Effort Tho_Raw_",
|
"Effort Tho": THO_RAW,
|
||||||
"Effort Abd": "Effort Abd_Raw_",
|
"Effort Abd": ABD_RAW,
|
||||||
"Flow T": "Flow T_Raw_",
|
"Flow T": FLOWT_RAW,
|
||||||
"Flow P": "Flow P_Raw_",
|
"Flow P": FLOWP_RAW,
|
||||||
"Snore": "Snore_Raw_",
|
"Snore": SNORE_RAW,
|
||||||
"SpO2": "SpO2_Raw_",
|
"SpO2": SPO2_RAW,
|
||||||
"5_class": "5_class_Raw_"
|
"5_class": FIVE_CLASS_RAW
|
||||||
},
|
},
|
||||||
"LabelInput": {
|
"LabelInput": {
|
||||||
"SA Label": "SA Label_Raw"
|
"SA Label": "SA Label_Raw"
|
||||||
},
|
},
|
||||||
"StartTime": "StartTime_Raw",
|
"StartTime": "StartTime_Raw",
|
||||||
"ChannelSave": {
|
"ChannelSave": {
|
||||||
"Effort Tho": "Effort Tho_Sync_",
|
"Effort Tho": THO_SYNC,
|
||||||
"Effort Abd": "Effort Abd_Sync_",
|
"Effort Abd": ABD_SYNC,
|
||||||
"Flow T": "Flow T_Sync_",
|
"Flow T": FLOWT_SYNC,
|
||||||
"Flow P": "Flow P_Sync_",
|
"Flow P": FLOWP_SYNC,
|
||||||
"Snore": "Snore_Sync_",
|
"Snore": SNORE_SYNC,
|
||||||
"SpO2": "SpO2_Sync_",
|
"SpO2": SPO2_SYNC,
|
||||||
"5_class": "5_class_Sync_"
|
"5_class": FIVE_CLASS_SYNC
|
||||||
},
|
},
|
||||||
"LabelSave": {
|
"LabelSave": {
|
||||||
"SA Label": "SA Label_Sync"
|
"SA Label": "SA Label_Sync"
|
||||||
@ -249,7 +228,6 @@ class ConfigParams:
|
|||||||
"StartTime": ENDSWITH_TXT
|
"StartTime": ENDSWITH_TXT
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
CUT_PSG_SAVE_ECG_ALIGNINFO_FILENAME: str = "Align_info"
|
|
||||||
CUT_PSG_SALABEL_EVENT: list = ["Hypopnea", "Central apnea", "Obstructive apnea", "Mixed apnea"]
|
CUT_PSG_SALABEL_EVENT: list = ["Hypopnea", "Central apnea", "Obstructive apnea", "Mixed apnea"]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -94,6 +94,10 @@ class Constants:
|
|||||||
"Frequency_Not_In_Filename": "(数据频率不在文件名中)",
|
"Frequency_Not_In_Filename": "(数据频率不在文件名中)",
|
||||||
"Data_Not_Exist": "(数据不存在)",
|
"Data_Not_Exist": "(数据不存在)",
|
||||||
"Model_File_Not_Exist": "(模型文件不存在)",
|
"Model_File_Not_Exist": "(模型文件不存在)",
|
||||||
|
"Cut_Data_Length_not_Correct": "(切割数据时长度不正确)",
|
||||||
|
"Align_Label_SALabel_Format_not_Correct": "(映射标签时SA Label中的文件格式不正确)",
|
||||||
|
"Filename_Format_not_Correct": "(文件名格式不正确)",
|
||||||
|
"Method_Not_Exist": "(检测方法不存在)",
|
||||||
|
|
||||||
"Open_Data_Exception": "(打开数据异常)",
|
"Open_Data_Exception": "(打开数据异常)",
|
||||||
"Process_Exception": "(处理异常)",
|
"Process_Exception": "(处理异常)",
|
||||||
@ -106,7 +110,9 @@ class Constants:
|
|||||||
"Calculate_Correlation_Exception": "(计算相关性异常)",
|
"Calculate_Correlation_Exception": "(计算相关性异常)",
|
||||||
"Correlation_Align_Exception": "(处理相关对齐异常)",
|
"Correlation_Align_Exception": "(处理相关对齐异常)",
|
||||||
"PostProcess_Align_Exception": "(数据后处理异常)",
|
"PostProcess_Align_Exception": "(数据后处理异常)",
|
||||||
|
"Cut_Data_Exception": "(切割数据异常)",
|
||||||
|
"Align_Label_Exception": "(映射标签异常)",
|
||||||
|
"Get_File_and_Freq_Excepetion": "(检查文件是否存在并获取其数据采样率异常)",
|
||||||
|
|
||||||
"res_orgBcg_Not_Exist": "(切割后orgBcg不存在)",
|
"res_orgBcg_Not_Exist": "(切割后orgBcg不存在)",
|
||||||
"res_BCG_Not_Exist": "(切割后BCG不存在)",
|
"res_BCG_Not_Exist": "(切割后BCG不存在)",
|
||||||
@ -145,19 +151,6 @@ class Constants:
|
|||||||
DETECT_RPEAK_PREDICT_FINISHED: str = "预测完成"
|
DETECT_RPEAK_PREDICT_FINISHED: str = "预测完成"
|
||||||
DETECT_RPEAK_PREDICT_FAILURE: str = "预测失败"
|
DETECT_RPEAK_PREDICT_FAILURE: str = "预测失败"
|
||||||
|
|
||||||
DETECT_RPEAK_FAILURE_REASON = {
|
|
||||||
"Data_Path_Not_Exist": "(数据路径不存在)",
|
|
||||||
"Read_Data_Exception": "(读取数据异常)",
|
|
||||||
"Method_Not_Exist": "(检测方法不存在)",
|
|
||||||
"Read_Method_Exception": "(读取方法异常)",
|
|
||||||
"Predict_Exception": "(峰值预测异常)",
|
|
||||||
"Raw_Data_Not_Exist": "(原始数据不存在)",
|
|
||||||
"Filter_Exception": "(滤波器异常)",
|
|
||||||
"Processed_Data_Not_Exist": "(处理后数据不存在)",
|
|
||||||
"Peak_Not_Exist": "(预测的峰值不存在)",
|
|
||||||
"Save_Exception": "(保存异常)"
|
|
||||||
}
|
|
||||||
|
|
||||||
DETECT_RPEAK_DATA_LENGTH_POINTS: str = "数据长度(点数):"
|
DETECT_RPEAK_DATA_LENGTH_POINTS: str = "数据长度(点数):"
|
||||||
DETECT_RPEAK_DURATION_MIN: str = "数据时长(分钟):"
|
DETECT_RPEAK_DURATION_MIN: str = "数据时长(分钟):"
|
||||||
DETECT_RPEAK_PEAK_AMOUNT: str = "R峰个数:"
|
DETECT_RPEAK_PEAK_AMOUNT: str = "R峰个数:"
|
||||||
@ -167,16 +160,6 @@ class Constants:
|
|||||||
DETECT_RPEAK_PLOT_LABEL_INTERVAL: str = "Interval"
|
DETECT_RPEAK_PLOT_LABEL_INTERVAL: str = "Interval"
|
||||||
|
|
||||||
# 人工纠正
|
# 人工纠正
|
||||||
LABEL_CHECK_FAILURE_REASON = {
|
|
||||||
"Data_Path_Not_Exist": "(数据路径不存在)",
|
|
||||||
"Read_Data_Exception": "(读取数据异常)",
|
|
||||||
"Raw_Data_Not_Exist": "(原始数据不存在)",
|
|
||||||
"Filter_Exception": "(滤波器异常)",
|
|
||||||
"Processed_Data_Not_Exist": "(处理后数据不存在)",
|
|
||||||
"Peak_Not_Exist": "(峰值不存在)",
|
|
||||||
"Save_Exception": "(保存异常)"
|
|
||||||
}
|
|
||||||
|
|
||||||
LABEL_CHECK_PLOT_LABEL_SIGNAL: str = "Data_Processed"
|
LABEL_CHECK_PLOT_LABEL_SIGNAL: str = "Data_Processed"
|
||||||
LABEL_CHECK_PLOT_LABEL_PEAK_ORIGINAL: str = "Peaks_Original"
|
LABEL_CHECK_PLOT_LABEL_PEAK_ORIGINAL: str = "Peaks_Original"
|
||||||
LABEL_CHECK_PLOT_LABEL_PEAK_CORRECTED: str = "Peaks_Corrected"
|
LABEL_CHECK_PLOT_LABEL_PEAK_CORRECTED: str = "Peaks_Corrected"
|
||||||
@ -250,6 +233,21 @@ class Constants:
|
|||||||
PRECISELY_ALIGN_RECOVER_SCALE: str = "尺度恢复"
|
PRECISELY_ALIGN_RECOVER_SCALE: str = "尺度恢复"
|
||||||
PRECISELY_ALIGN_ACTION_GET_RANGE_NAME: str = f"设置范围({ConfigParams.PRECISELY_ALIGN_ACTION_GET_RANGE_SHORTCUT_KEY})"
|
PRECISELY_ALIGN_ACTION_GET_RANGE_NAME: str = f"设置范围({ConfigParams.PRECISELY_ALIGN_ACTION_GET_RANGE_SHORTCUT_KEY})"
|
||||||
|
|
||||||
|
# 冗余数据切割和标签映射
|
||||||
|
CUT_PSG_GETTING_FILE_AND_FREQ: str = "正在获取文件及其采样率"
|
||||||
|
CUT_PSG_GET_FILE_AND_FREQ_FINISHED: str = "获取文件及其采样率完成"
|
||||||
|
CUT_PSG_GET_FILE_AND_FREQ_FAILURE: str = "获取文件及其采样率失败"
|
||||||
|
|
||||||
|
CUT_PSG_CUTTING_DATA: str = "正在切割数据"
|
||||||
|
CUT_PSG_CUT_DATA_FINISHED: str = "切割数据完成"
|
||||||
|
CUT_PSG_CUT_DATA_FAILURE: str = "切割数据失败"
|
||||||
|
|
||||||
|
CUT_PSG_ALIGNING_LABEL: str = "正在映射标签"
|
||||||
|
CUT_PSG_ALIGN_LABEL_FINISHED: str = "映射标签完成"
|
||||||
|
CUT_PSG_ALIGN_LABEL_FAILURE: str = "映射标签失败"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -315,32 +313,6 @@ class Constants:
|
|||||||
"Save_Exception": "(保存异常)"
|
"Save_Exception": "(保存异常)"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 冗余数据切割和标签映射
|
|
||||||
CUT_PSG_GETTING_FILE_AND_FREQ: str = "正在获取文件及其采样率"
|
|
||||||
CUT_PSG_GET_FILE_AND_FREQ_FINISHED: str = "获取文件及其采样率完成"
|
|
||||||
CUT_PSG_GET_FILE_AND_FREQ_FAILURE: str = "获取文件及其采样率失败"
|
|
||||||
|
|
||||||
CUT_PSG_CUTTING_DATA: str = "正在切割数据"
|
|
||||||
CUT_PSG_CUT_DATA_FINISHED: str = "切割数据完成"
|
|
||||||
CUT_PSG_CUT_DATA_FAILURE: str = "切割数据失败"
|
|
||||||
|
|
||||||
CUT_PSG_ALIGNING_LABEL: str = "正在映射标签"
|
|
||||||
CUT_PSG_ALIGN_LABEL_FINISHED: str = "映射标签完成"
|
|
||||||
CUT_PSG_ALIGN_LABEL_FAILURE: str = "映射标签失败"
|
|
||||||
|
|
||||||
CUT_PSG_FAILURE_REASON: str = {
|
|
||||||
"Filename_Format_not_Correct": "(文件名格式不正确)",
|
|
||||||
"File_not_Exist": "(需要处理的文件不存在)",
|
|
||||||
"Get_File_and_Freq_Excepetion": "(检查文件是否存在并获取其数据采样率异常)",
|
|
||||||
"Read_Data_Exception": "(读取数据异常)",
|
|
||||||
"Cut_Data_Length_not_Correct": "(切割数据时长度不正确)",
|
|
||||||
"Cut_Data_Exception": "(切割数据异常)",
|
|
||||||
"Align_Label_SALabel_Format_not_Correct": "(映射标签时SA Label中的文件格式不正确)",
|
|
||||||
"Align_Label_Exception": "(映射标签异常)",
|
|
||||||
"Save_Data_not_Exist": "(需要保存的数据不存在)",
|
|
||||||
"Save_Exception": "(保存异常)"
|
|
||||||
}
|
|
||||||
|
|
||||||
# 体动标注
|
# 体动标注
|
||||||
ARTIFACT_LABEL_LOADING_ARCHIVE: str = "正在获取历史存档"
|
ARTIFACT_LABEL_LOADING_ARCHIVE: str = "正在获取历史存档"
|
||||||
ARTIFACT_LABEL_ARCHIVE_EXIST: str = "找到历史存档,成功读取"
|
ARTIFACT_LABEL_ARCHIVE_EXIST: str = "找到历史存档,成功读取"
|
||||||
|
|||||||
Reference in New Issue
Block a user