def __init__(self, prefix = '', suffix = '', args = {}, **kwargs): self.prefix = prefix self.suffix = suffix self.transform = kwargs.get('transform', False) self.return_type = kwargs.get('return_type', None) self.safeeval = safeeval() self.args = args # add args to safeeval's local variables if self.args != None: for k, v in args.items(): self.safeeval[k] = v
(r"\s+", None), ]) return scanner def set_attrs(table, t0, units): table.attrs.creationdate = dt.datetime.now(pytz.utc).isoformat() table.attrs.time_info = "time contains the number of seconds since t0" table.attrs.t0 = t0.isoformat() assert len(table.colnames) == len(units) table.attrs.units = json.dumps(units) def seconds2datetime(t0, seconds): return t0 + timedelta(seconds = seconds) _eval = safeeval.safeeval() def evalifstr(s): if isinstance(s, basestring): return _eval(s) else: return s def isseq(x): return not isinstance(x, basestring) and hasattr(x, '__getitem__') and hasattr(x, '__len__') def isiter(x): return hasattr(x, '__iter__') def number_format(value, precision = 4):
from scipy.optimize import curve_fit import matplotlib as mpl import matplotlib.pyplot as plt from utils import get_args_from, isseq, set_defaults, number_mathformat, number_format, hashargs, noop from itertools import product from locket import lock_file from i18n import _ from safeeval import safeeval logging.basicConfig(level = logging.DEBUG, format = '%(filename)s:%(funcName)s:%(lineno)d:%(message)s') log = logging.getLogger('plot') # override eval by safe version eval = safeeval() TableSpecs = namedtuple('TableSpecs', ('title', 'colnames', 'units', 'rows')) def available_tables(d = os.path.dirname(__file__) + '/data'): files = [] dirlen = len(d) for p, d, f in os.walk(d): for ff in f: files.append(path.join(p, ff)) files = map(lambda f:f.replace('\\', '/'), files) files = filter(lambda f:f.lower().endswith('.h5'), files) files.sort() tabs = OrderedDict()