Source code for omfit_classes.omfit_gnuplot

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_ascii import OMFITascii

import numpy as np

__all__ = ['OMFITgnuplot']


[docs]class OMFITgnuplot(OMFITascii, SortedDict): r""" Class used to parse ascii gnuplot data files Gnuplot data indices are split by double empty lines Gnuplot data blocks are split by a single empty line :param filename: filename passed to OMFITobject class :param comment: character :param \**kw: keyword dictionary passed to OMFITobject class """ def __init__(self, filename, comment='#', **kw): kw['comment'] = comment self.comment = comment OMFITascii.__init__(self, filename, **kw) SortedDict.__init__(self) self.dynaLoad = True
[docs] @dynaLoad def load(self): with open(self.filename, 'r') as f: lines = f.read() lines = lines.split('\n') for k, line in enumerate(lines): if self.comment in line: lines[k] = line.split(self.comment)[0] + '\n' lines = '\n'.join(lines).strip('\n') INDEX = lines.split('\n\n\n') for kindex, index in enumerate(INDEX): BLOCK = index.split('\n\n') for kblock, block in enumerate(BLOCK): self[kindex, kblock] = np.atleast_2d(np.genfromtxt(StringIO(block)))
[docs] def plot(self, ix=0, iy=1, **kw): r""" Plot individual data-sets :param ix: index of the data column to be used for the X axis :param iy: index of the data column to be used for the Y axis :param \**kw: parameters passed to the matplotlib plot function """ for item in self: if self[item].shape[1] == 1: pyplot.plot(self[item][:, ix], **kw) elif self[item].shape[1] >= 2: pyplot.plot(self[item][:, ix], self[item][:, iy], **kw)
############################################ if __name__ == '__main__': test_classes_main_header() lines = ''' 1 2 3 4 5 6 7 8 %bla 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ''' gplot = OMFITgnuplot('gnuplot.txt', fromString=lines, comment='%') print(gplot[(1, 0)])