Source code for qpformat.file_formats.single_hdf5_qpimage

import h5py
import qpimage

from .dataset import SingleData


[docs]class SingleHdf5Qpimage(SingleData): """Qpimage single (HDF5 format) See the documentation of :ref:`qpimage <qpimage:index>` for more information. """ storage_type = "phase,amplitude" def __init__(self, *args, **kwargs): super(SingleHdf5Qpimage, self).__init__(*args, **kwargs) # update meta data with h5py.File(self.path, mode="r") as h5: attrs = dict(h5.attrs) for key in qpimage.meta.DATA_KEYS: if (key not in self.meta_data and key in attrs): self.meta_data[key] = attrs[key] def get_qpimage(self, idx=0): """Return background-corrected QPImage""" if self._bgdata: # The user has explicitly chosen different background data # using `get_qpimage_raw`. qpi = super(SingleHdf5Qpimage, self).get_qpimage() else: # We can use the background data stored in the qpimage hdf5 file qpi = qpimage.QPImage(h5file=self.path, h5mode="r", h5dtype=self.as_type, ).copy() # Force meta data for key in self.meta_data: qpi[key] = self.meta_data[key] # set identifier qpi["identifier"] = self.get_identifier(idx) return qpi def get_qpimage_raw(self, idx=0): """Return QPImage without background correction""" qpi = qpimage.QPImage(h5file=self.path, h5mode="r", h5dtype=self.as_type, ).copy() # Remove previously performed background correction qpi.set_bg_data(None) # Force meta data for key in self.meta_data: qpi[key] = self.meta_data[key] # set identifier qpi["identifier"] = self.get_identifier(idx) return qpi @staticmethod def verify(path): """Verify that `path` has the qpimage file format""" valid = False try: h5 = h5py.File(path, mode="r") except (OSError,): pass else: if ("qpimage version" in h5.attrs and "phase" in h5 and "amplitude" in h5 and "bg_data" in h5["phase"] and "bg_data" in h5["amplitude"]): valid = True return valid