Source code for toor.TORFilesReader.torfiles
import numpy as np
import pickle
[docs]
class ToRFile:
def __init__(self, filepath=None, file_with_calibrations=True):
if filepath is None:
raise FileNotFoundError("Filepath is required")
self._systemInfoSize = None
self._filePath = filepath
self._version = "1.0"
self._acquisitionInfo = None
self._systemInfo = None
self._fileBodyData = None
self._calibrations = None
self._fileWithCalibrationData = file_with_calibrations
[docs]
def read(self, filePath=None):
print("Reading file: {}".format(filePath) if filePath is not None else "Reading file: {}".format(self._filePath))
if filePath is None:
filePath = self._filePath
with open(filePath, 'rb') as input_file:
self._systemInfo = pickle.load(input_file)
self._acquisitionInfo = pickle.load(input_file)
if self._fileWithCalibrationData:
try:
self._calibrations = pickle.load(input_file)
except EOFError:
print("No calibration data found in file")
self._calibrations = None
else:
self._calibrations = None
# read the calibration data
self._fileBodyData = pickle.load(input_file)
input_file.close()
[docs]
def write(self):
# records = np.rec.fromarrays((self._fileBodyData), names=self._listModeFields)
with open(self._filePath, 'wb') as output_file:
# size_acquisition_info = np.fromfile(output_file, dtype=np.int32, count=1)
# self._listModeFields.tofile(output_file)
pickle.dump(self._systemInfo, output_file)
pickle.dump(self._acquisitionInfo, output_file)
if self._fileWithCalibrationData:
pickle.dump(self._calibrations, output_file)
else:
self._calibrations = None
# self._fileBodyData.tofile(output_file, dtype=[('energyA', np.float64), ('energyB', np.float64),
# ('IDA', np.float64), ('IDB', np.float64),
# ('AXIAL_MOTOR', np.float64), ('FAN_MOTOR', np.float64),
# ('TIME', np.float64)])
pickle.dump(self._fileBodyData, output_file)
# self._version.tofile(output_file)
# self._sizeHeader.tofile(output_file)
# self._acquisitionInfoSize.tofile(output_file)
# self._systemInfoSize.tofile(output_file)
# self._acquisitionInfo.tofile(output_file)
# self._systemInfo.tofile(output_file)
output_file.close()
@property
def version(self):
return self._version
@property
def systemInfo(self):
return self._systemInfo
@property
def fileBodyData(self):
return self._fileBodyData
@property
def acquisitionInfo(self):
return self._acquisitionInfo
[docs]
def setAcquisitionInfo(self, acquisitionInfo):
self._acquisitionInfo = acquisitionInfo
@property
def calibrations(self):
return self._calibrations
[docs]
def setCalibrations(self, calibrations):
self._calibrations = calibrations
[docs]
def setSystemInfo(self, systemInfo):
self._systemInfo = systemInfo
[docs]
def setfileBodyData(self, data):
self._fileBodyData = data