Source code for slap2_utils.subclasses.metadata
# Subclasses of the primary SLAP2 Datafile
import h5py
from .slapROI import slapROI
from .acquisitionContainer import AcquisitionContainer
[docs]
class MetaData():
"""
A class used to load a SLAP2 binary metadatafile for data processing. This is also an attribute for the datafile object
Attributes
----------
metadatafile : str
The name of the metadata file.
AcquisitionContainer : ``AcquisitionContainer``
An instance of the AcquisitionContainer class that contain information related to the acquisition.
acqDurationCycles : list
A list containing 2 int values for cycle duration
acqDuration_s : int
The total time (in seconds) for the whole acquisition.
acquisitionPathIdx : int
The number that represent the path that the acquisitiion take place (either 1 or 2).
acquisitionPathName : str
The string that reiterate which path the acquisition takes place (either 'path 1' or 'path 2') .
aomActive : int
Binary number that reporesent whether aom is action (0 = false, 1 = yes).
aomVoltage : float
The number of voltage in aom (in float).
channelsSave : int
The number that represent which channel saved the data.
dmdPixelsPerColumn : int
The number of pixel along the column of the dmd.
dmdPixelsPerRow : int
The number of pixel along the row of the dmd.
enableStack : list
Binary number that reporesent whether stack is enabled (0 = false, 1 = yes).
linePeriod_s : float
The time it takes to conduct 1 slice (1/linePeriod_s gives the line rate for the microscope).
remoteFocusPosition_um : int
A number that represent the remoteFocusPosition for the center of the stack.
samplesPerLine : int
The line rate for the microscope (1/samplesPerLine gives the linePeriod_s).
Descriptions for methods:
--------------------------
Methods
----------
__init__() :
Fill the fields mentioned above. The method also loads the AcquisitionContainer using the __init__() method for the AcquisitionContainer
Return
-------
Self with populated fields.
"""
def __init__(self, metadatafile):
self.metadatafile = metadatafile
self.AcquisitionContainer = None
self.acqDurationCycles = ''
self.acqDuration_s = ''
self.acquisitionPathIdx = ''
self.acquisitionPathName = ''
self.aomActive = ''
self.aomVoltage = ''
self.channelsSave = ''
self.dmdPixelsPerColumn = ''
self.dmdPixelsPerRow = ''
self.enableStack = ''
self.linePeriod_s = ''
#machineConfiguration <HDF5 group "/machineConfiguration" (3 members)>
self.remoteFocusPosition_um = ''
self.samplesPerLine = ''
with h5py.File(metadatafile, 'r') as hdf_file:
# Read the contents of the HDF5 file into the metaData dictionary
metaData = dict(hdf_file)
for _key in metaData.keys():
try:
metaData[_key] = hdf_file[_key][:][0][0]
setattr(self, _key, hdf_file[_key][:][0][0])
except:
metaData[_key] = hdf_file[_key]
self.AcquisitionContainer = AcquisitionContainer(self.metadatafile)