Source code for bioniumx.io.hdf5

"""
File input/output for BioniumX objects.
"""
import h5py
import numpy as np


[docs] def write_object(obj, filename: str, fmt: str = "hdf5"): """ Write a BioniumXObject to a file. """ if fmt == "hdf5": with h5py.File(filename, "w") as f: f.attrs["class_name"] = obj.__class__.__name__ for attr in obj._required_attrs: f.create_dataset(attr, data=getattr(obj, attr)) if hasattr(obj, "err"): f.create_dataset("err", data=obj.err) meta_group = f.create_group("meta") for k, v in obj.meta.items(): if v is not None: meta_group.attrs[k] = v else: raise NotImplementedError(f"Format {fmt} not yet implemented.")
[docs] def read_object(cls, filename: str, fmt: str = "hdf5"): """ Read a BioniumXObject from a file. """ if fmt == "hdf5": with h5py.File(filename, "r") as f: kwargs = {} for attr in cls._required_attrs: kwargs[attr] = f[attr][:] if "err" in f: kwargs["err"] = f["err"][:] if "meta" in f: for k, v in f["meta"].attrs.items(): kwargs[k] = v return cls(**kwargs) else: raise NotImplementedError(f"Format {fmt} not yet implemented.")