import MDSplus import numpy # import time class gadata: """GA Data Obj""" def __init__(self, signal, shot, tree=None, connection=None, nomds=False): # Save object values self.signal = signal self.shot = shot self.zdata = -1 self.xdata = -1 self.ydata = -1 self.zunits = '' self.xunits = '' self.yunits = '' self.rank = -1 self.connection = connection # Retrieve Data # t0 = time.time() self.found = False # Create the MDSplus connection (thin) if not passed in if self.connection is None: self.connection = MDSplus.Connection('atlas.gat.com') # Retrieve data from MDSplus (thin) if not nomds: # first try, retrieve directly from tree and tag try: # print('trying direct using tree and tag') if tree is not None: tag = self.signal fstree = tree else: tag = self.connection.get( 'findsig("' + self.signal + '",_fstree)').value fstree = self.connection.get('_fstree').value self.connection.openTree(fstree, shot) self.zdata = self.connection.get('_s = ' + tag).data() self.zunits = self.connection.get('units_of(_s)').data() self.rank = numpy.ndim(self.zdata) if self.rank > 1: self.xdata = self.connection.get('dim_of(_s,1)').data() self.xunits = self.connection.get( 'units_of(dim_of(_s,1))').data() if self.xunits == '' or self.xunits == ' ': self.xunits = self.connection.get( 'units(dim_of(_s,1))').data() self.ydata = self.connection.get('dim_of(_s)').data() self.yunits = self.connection.get( 'units_of(dim_of(_s))').data() if self.yunits == '' or self.yunits == ' ': self.yunits = self.connection.get( 'units(dim_of(_s))').data() else: self.xdata = self.connection.get('dim_of(_s)').data() self.xunits = self.connection.get( 'units_of(dim_of(_s))').data() if self.xunits == '' or self.xunits == ' ': self.xunits = self.connection.get( 'units(dim_of(_s))').data() # print('zdata: ' + str(self.zdata)) self.found = True # MDSplus seems to return 2-D arrays transposed. Change them # back. if numpy.ndim(self.zdata) == 2: self.zdata = numpy.transpose(self.zdata) if numpy.ndim(self.ydata) == 2: self.ydata = numpy.transpose(self.ydata) if numpy.ndim(self.xdata) == 2: self.xdata = numpy.transpose(self.xdata) except Exception as e: print(e) pass # Retrieve data from PTDATA if node not found if not self.found: # print('Trying ptdata: %s' % (signal,)) self.zdata = self.connection.get( '_s = ptdata2("' + signal+'",' + str(shot)+')') if len(self.zdata) != 1: self.xdata = self.connection.get('dim_of(_s)') self.rank = 1 self.found = True # Retrieve data from Pseudo-pointname if not in ptdata if not self.found: # print(' Signal not in PTDATA: %s' % (signal,)) self.zdata = self.connection.get( '_s = pseudo("' + signal+'",' + str(shot)+')') if len(self.zdata) != 1: self.xdata = self.connection.get('dim_of(_s)') self.rank = 1 self.found = True if not self.found: # this means the signal wasn't found pass return