优化数据处理逻辑,新增sanitize_data方法以转换NumPy类型为原生Python类型,修正数据保存格式
This commit is contained in:
@ -1,10 +1,10 @@
|
||||
import re
|
||||
import traceback
|
||||
from ast import literal_eval
|
||||
from gc import collect
|
||||
from math import floor, ceil
|
||||
from pathlib import Path
|
||||
from traceback import format_exc
|
||||
|
||||
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
|
||||
from numpy import array
|
||||
from overrides import overrides
|
||||
@ -399,7 +399,8 @@ class Data:
|
||||
self.alignInfo = read_csv(Path(Config["Path"]["InputAlignInfo"]),
|
||||
encoding=Params.UTF8_ENCODING,
|
||||
header=None).to_numpy().reshape(-1)
|
||||
self.alignInfo = literal_eval(self.alignInfo[0])
|
||||
cleaned_str = re.sub(r'np\.(int64|float64|float32|int32)\((.*?)\)', r'\2', self.alignInfo[0])
|
||||
self.alignInfo = literal_eval(cleaned_str)
|
||||
|
||||
except Exception as e:
|
||||
return Result().failure(info=Constants.INPUT_FAILURE +
|
||||
|
||||
@ -2292,7 +2292,7 @@ class Data:
|
||||
"back_ECG": Config["backcut_index_ECG"]
|
||||
}
|
||||
}
|
||||
save_data = [str(save_data)]
|
||||
save_data = [str(PublicFunc.sanitize_data(save_data))]
|
||||
DataFrame(save_data).to_csv(Config["Path"]["Save_AlignInfo"], index=False, header=False)
|
||||
except PermissionError as e:
|
||||
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
||||
|
||||
@ -8,7 +8,7 @@ from PySide6.QtWidgets import QMessageBox, QWidget, QPushButton, QProgressBar, Q
|
||||
from func.utils.Constants import Constants
|
||||
from func.utils.CustomException import TipsTypeValueNotExistError, MsgBoxTypeValueNotExistError
|
||||
from func.utils.Result import Result
|
||||
|
||||
import numpy as np
|
||||
|
||||
class PublicFunc:
|
||||
|
||||
@ -308,3 +308,21 @@ class PublicFunc:
|
||||
unit_data = artifact[i:i + 4]
|
||||
if len(unit_data) < 4:
|
||||
break
|
||||
|
||||
@staticmethod
|
||||
def sanitize_data(obj):
|
||||
"""
|
||||
递归将对象中的 NumPy 类型转换为 Python 原生类型
|
||||
"""
|
||||
if isinstance(obj, dict):
|
||||
return {k: PublicFunc._sanitize_data(v) for k, v in obj.items()}
|
||||
elif isinstance(obj, (list, tuple)):
|
||||
return [PublicFunc._sanitize_data(i) for i in obj]
|
||||
elif isinstance(obj, (np.integer, np.int64)):
|
||||
return int(obj)
|
||||
elif isinstance(obj, (np.floating, np.float64)):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return obj
|
||||
|
||||
Reference in New Issue
Block a user