Source code for omfit_classes.omfit_uda
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
try:
import pyuda
except ImportError:
pyuda = None
__all__ = ['OMFITudaValue', 'OMFITudaConnections']
OMFITudaConnections = {}
[docs]class OMFITudaValue:
"""
A wrapper for pyuda calls that behaves like OMFITmdsValue
"""
def __init__(self, server, shot=None, TDI=None, **kw):
r"""
:param server: The device or server from which to get a signal
:param shot: Which shot
:param TDI: The signal to fetch
:param \**kw: Additional keywords that OMFITmdsValue might take, but
are not necessary for UDA
"""
if pyuda is None:
raise RuntimeError('pyuda package is not installed')
if shot is None:
raise ValueError('shot must be given')
if TDI is None:
raise ValueError('TDI signal must be given')
if server not in OMFITudaConnections:
OMFITudaConnections[server] = pyuda.Client()
self.client = OMFITudaConnections[server]
self.shot = shot
self.signal = TDI
self.udasignal = self.client.get(self.signal, self.shot)
[docs] def data(self):
return self.udasignal.data[:]
[docs] def dim_of(self, index=0):
return self.udasignal.dims[index].data
[docs] def units(self):
return self.udasignal.units
[docs] def units_dim_of(self, index=0):
return self.udasignal.dims[index].units
[docs] def xarray(self):
"""
:return: DataArray with information from this node
"""
data = self.data()
dims = ['dim_%d' % k for k in range(data.ndim)]
clist = []
for k, c in enumerate(dims):
clist.append(self.dim_of(k))
if data.shape != tuple([len(k) if np.ndim(k) == 1 else k.shape[ik] for ik, k in enumerate(clist)]):
dims = dims[::-1]
clist = clist[::-1]
coords = {}
for k, c in enumerate(dims):
if np.ndim(clist[k]) == 1:
ck = c
coords[ck] = ([c], clist[k], {'units': self.units_dim_of(k)})
else:
ck = c + '_val'
coords[ck] = (dims, clist[k], {'units': self.units_dim_of(k)})
xdata = DataArray(data, dims=dims, coords=coords, attrs={'units': self.units()})
return xdata