import h5py
from .slapROI import slapROI
[docs]
class AcquisitionContainer():
"""
A class used to load a SLAP2 binary metadatafile for data processing. This is also an attribute for the datafile object
Attributes
----------
AcquisitionPlan : dict
A dictionary that contains 3 subinstances of ['AcquisitionContainer'], ['ParsePlan'], and ['acqParsePlan'].
DmdPatternSequence : list
A list containing information related to the patterning of the sequences.
ParsePlan : dict
A dictionary that contains various instances related to how region of interest is parsed through.
ROIs : list
A list that contains information related to the region of interests.
ScannerParameters : dict
A dictionary that stores information related to the scanned parameter (not implemented yet, consider removing).
constructor : str
A string that describes how the plan is constructed.
Descriptions for methods:
--------------------------
Methods
----------
__init__() :
Fill the fields mentioned above.
Return
-------
Self with populated fields.
"""
def __init__(self, metadatafile):
self.AcquisitionPlan = None
self.DmdPatternSequence = None
self.ParsePlan = {}
self.ROIs = []
self.ScannerParameters = ''
self.constructor = ''
acqParsePlan = {}
with h5py.File(metadatafile, 'r') as hdf_file:
# Read the contents of the HDF5 file into the metaData dictionary
self.AcquisitionPlan = hdf_file['AcquisitionContainer']['AcquisitionPlan'][:]
self.DmdPatternSequence = hdf_file['AcquisitionContainer']['DmdPatternSequence'][:]
for i in range(hdf_file['AcquisitionContainer']['ROIs']['rois'][:].shape[0]):
roi_ref = hdf_file['AcquisitionContainer']['ROIs']['rois'][i][0]
self.ROIs.append(slapROI(hdf_file, roi_ref))
for _key in hdf_file['AcquisitionContainer']['ParsePlan'].keys():
try:
self.ParsePlan[_key] = hdf_file['AcquisitionContainer']['ParsePlan'][_key][:]
except:
if _key == 'acqParsePlan':
_data = {}
for _subkey in hdf_file['AcquisitionContainer']['ParsePlan']['acqParsePlan'].keys():
_data[_subkey] = []
for _ref in (list(hdf_file['AcquisitionContainer']['ParsePlan']['acqParsePlan'][_subkey][:])):
_data[_subkey].append(hdf_file[_ref[0]][:])
acqParsePlan[_key] = _data
_refs = []
for index in range(len(hdf_file['AcquisitionContainer']['ParsePlan']['pixelReplacementMaps'][:])):
_refs.append(hdf_file['AcquisitionContainer']['ParsePlan']['pixelReplacementMaps'][:][index][0])
self.ParsePlan['pixelReplacementMaps'] = [hdf_file[_ref][:] for _ref in _refs]
self.ParsePlan['acqParsePlan'] = acqParsePlan['acqParsePlan']