优化数据处理逻辑,新增sanitize_data方法以转换NumPy类型为原生Python类型,修正数据保存格式
This commit is contained in:
@ -1,10 +1,10 @@
|
|||||||
|
import re
|
||||||
import traceback
|
import traceback
|
||||||
from ast import literal_eval
|
from ast import literal_eval
|
||||||
from gc import collect
|
from gc import collect
|
||||||
from math import floor, ceil
|
from math import floor, ceil
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from traceback import format_exc
|
from traceback import format_exc
|
||||||
|
|
||||||
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
|
from PySide6.QtWidgets import QMessageBox, QMainWindow, QApplication
|
||||||
from numpy import array
|
from numpy import array
|
||||||
from overrides import overrides
|
from overrides import overrides
|
||||||
@ -399,7 +399,8 @@ class Data:
|
|||||||
self.alignInfo = read_csv(Path(Config["Path"]["InputAlignInfo"]),
|
self.alignInfo = read_csv(Path(Config["Path"]["InputAlignInfo"]),
|
||||||
encoding=Params.UTF8_ENCODING,
|
encoding=Params.UTF8_ENCODING,
|
||||||
header=None).to_numpy().reshape(-1)
|
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:
|
except Exception as e:
|
||||||
return Result().failure(info=Constants.INPUT_FAILURE +
|
return Result().failure(info=Constants.INPUT_FAILURE +
|
||||||
|
|||||||
@ -2292,7 +2292,7 @@ class Data:
|
|||||||
"back_ECG": Config["backcut_index_ECG"]
|
"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)
|
DataFrame(save_data).to_csv(Config["Path"]["Save_AlignInfo"], index=False, header=False)
|
||||||
except PermissionError as e:
|
except PermissionError as e:
|
||||||
return Result().failure(info=Constants.SAVE_FAILURE + Constants.FAILURE_REASON["Save_Permission_Denied"])
|
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.Constants import Constants
|
||||||
from func.utils.CustomException import TipsTypeValueNotExistError, MsgBoxTypeValueNotExistError
|
from func.utils.CustomException import TipsTypeValueNotExistError, MsgBoxTypeValueNotExistError
|
||||||
from func.utils.Result import Result
|
from func.utils.Result import Result
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
class PublicFunc:
|
class PublicFunc:
|
||||||
|
|
||||||
@ -308,3 +308,21 @@ class PublicFunc:
|
|||||||
unit_data = artifact[i:i + 4]
|
unit_data = artifact[i:i + 4]
|
||||||
if len(unit_data) < 4:
|
if len(unit_data) < 4:
|
||||||
break
|
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