Source code for femagtools.erg

# -*- coding: utf-8 -*-
"""
    femagtools.erg
    ~~~~~~~~~~~~~~

    Reading ERG files



"""
import re
import numpy as np
import io


head_pattern = re.compile('([A-Za-z_0-9]+)')
unit_pattern = re.compile('\[([A-Za-z/0-9 ]+)\]')
num_pattern = re.compile(r'([+-]?\d+(?:\.\d+)?(?:[eE][+-]\d+)?)\s*')


[docs]def read(filename): """read ERG file returns dict with array values """ head = [] units = [] m = [] with io.open(filename, errors='ignore') as f: for l in f: if head and units: n = num_pattern.findall(l) if n: m.append([float(x) for x in n]) elif head: u = unit_pattern.findall(l) if u: units = u elif l.find('|') > 0: h = head_pattern.findall(l) if h: head = h m = np.array(m).T ncols = len(set(m[1])) i1 = np.reshape(m[0], (-1, ncols)).T[0] nrows = len(i1) res = {k: (np.reshape(x, (nrows, ncols)).T[::-1]).tolist() for k, x in zip(head[2:], m[2:])} res['i1'] = i1.tolist() res['beta'] = m[1][:ncols][::-1].tolist() return res