Source code for omfit_classes.omfit_matlab

try:
    # framework is running
    from .startup_choice import *
except ImportError as _excp:
    # class is imported by itself
    if (
        'attempted relative import with no known parent package' in str(_excp)
        or 'No module named \'omfit_classes\'' in str(_excp)
        or "No module named '__main__.startup_choice'" in str(_excp)
    ):
        from startup_choice import *
    else:
        raise

import numpy as np
from scipy.io import loadmat, savemat, matlab

__all__ = ['OMFITmatlab']


[docs]class OMFITmatlab(SortedDict, OMFITobject): r""" OMFIT class used to interface with MATLAB .mat files up to version 7.2 This class makes use of the scipy.io.loadmat/savemat interface :param filename: filename passed to OMFITobject class :param \**kw: keyword dictionary passed to OMFITobject class """ def __init__(self, filename, **kw): SortedDict.__init__(self) OMFITobject.__init__(self, filename, **kw) self.dynaLoad = True
[docs] @dynaLoad def load(self): """ Method used to load the content of the file specified in the .filename attribute """ if not (len(self.filename) and os.path.exists(self.filename) and os.stat(self.filename).st_size): return vars = loadmat(self.filename, appendmat=False, mat_dtype=False, squeeze_me=True, struct_as_record=False, chars_as_strings=True) def f_traverse(me, mat): if isinstance(mat, dict): keys = list(mat.keys()) else: keys = mat._fieldnames for item in keys: if isinstance(mat, dict): kid = mat[item] else: kid = getattr(mat, item) if isinstance(kid, np.ndarray) and not len(kid.shape): me[item] = kid.tolist() elif isinstance(kid, (dict, matlab.mio5_params.mat_struct)): me[item] = {} f_traverse(me[item], kid) else: me[item] = kid self.clear() f_traverse(self, vars)
[docs] @dynaSave def save(self): """ Method used to save the content of the object to the file specified in the .filename attribute :return: None """ savemat(self.filename, self)