Source code for omfit_classes.omfit_pdb

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

from omfit_classes.omfit_error import OMFITobjectError

__all__ = ['OMFITpdb']

try:
    import pact.pdb as pdb
except Exception as _excp:
    pdb_error = repr(_excp)

    class OMFITpdb(OMFITobjectError):
        def __init__(self, filename, **kw):
            super().__init__(filename, 'OMFITpdb', error=pdb_error, **kw)


else:

[docs] class OMFITpdb(SortedDict, OMFITobject): r""" OMFIT class used to interface with PACT pdb files: https://wci.llnl.gov/codes/pact/ :param filename: filename passed to OMFITobject class :param \**kw: keyword dictionary passed to OMFITobject class """ def __init__(self, filename, **kw): OMFITobject.__init__(self, filename, **kw) SortedDict.__init__(self, sorted=True) self.dynaLoad = True @dynaLoad def load(self): with pdb.open(self.filename, 'r') as f: for var in f.ls(): tmp = f.read(var) sub = self if '@' in var: sub = self.setdefault(var.split('@')[1], SortedDict()) var = var.split('@')[0] if isinstance(tmp, (list, tuple)): if isinstance(tmp[0], str): sub[var] = ''.join(tmp).decode('ascii', errors='ignore') else: sub[var] = np.array(tmp) if sub[var].size == 1: sub[var] = sub[var][0] elif len(sub[var].shape) > 1: sub[var] = np.reshape(sub[var][:], sub[var].shape[::-1]) else: sub[var] = tmp if isinstance(sub[var], int64): sub[var] = int(sub[var]) @dynaSave def save(self): with pdb.open(self.filename, 'w') as f: for sub in self: for var in self[sub]: tmp = self[sub][var] if isinstance(tmp, str): tmp = str(tmp) elif isinstance(tmp, np.ndarray): if len(tmp.shape) > 1: tmp = np.reshape(tmp[:], tmp.shape[::-1]) tmp = tmp.tolist() try: f.write(var + '@' + sub, tmp) except Exception as _excp: printe('Could not write PDB variable ' + var + '@' + sub) raise