Beispiel #1
0
 def init_larch(self):
     t0 = time.time()
     if self.larch is None:
         self.larch = larch.Interpreter()
     self.larch.symtable.set_symbol('_sys.wx.wxapp', wx.GetApp())
     self.larch.symtable.set_symbol('_sys.wx.parent', self)
     self.SetStatusText('ready')
Beispiel #2
0
    def __init__(self):

        self.__version__ = '0.2.1'
        # Larch
        self.mylarch = larch.Interpreter()
        self.root = Tk(className='EXAFS Neo GUI')
        self.root.wm_title("Graphical User Interface for EXAFS Analysis (Beta)")
        # Standard default geometry
        self.root.geometry("750x500")
        self.padx = 5
        self.pady = 3

        self.os = get_platform()
        base_folder = os.path.dirname(os.path.join(os.getcwd(),__file__))
        icon_loc = os.path.join(base_folder,'media/icon.png')

        img = PhotoImage(file=icon_loc)
        self.root.tk.call('wm','iconphoto',self.root._w,img)

        # Set default font
        self.entryFont = Font(family="TkFixedFont", size=10)
        self.menuFont = Font(family="TkMenuFont",size=10)
        self.labelFont = Font(family="TkTextFont", size=11)
        # Generate the mainframe
        self.mainframe = ttk.Notebook(self.root,height=40,padding="5")
        self.mainframe.grid(column=0, row=0, sticky=(N, W, E, S))

        # Initalize variable
        self.initialize_var()
        self.initialize_tab()
        self.Build_tabs()
Beispiel #3
0
    def test2_create_interp(self):
        import larch
        self.larch = larch.Interpreter()
        self.symtable = self.larch.symtable

        assert (self.larch is not None)
        assert (self.symtable is not None)
Beispiel #4
0
    def __init__(self, wxparent=None,   writer=None, _larch=None,
                 prompt=None, output=None, input=None):
        self.larch = _larch
        if _larch is None:
            self.larch  = larch.Interpreter()
        self.inptext  = larch.InputText(prompt=self.ps1,
                                        interactive=False)
        self.symtable = self.larch.symtable
        self.prompt = prompt
        self.output = output
        self.input  = input
        self.larch.writer = self
        self.larch.add_plugin('wx', wxparent=wxparent)
        self.symtable.set_symbol('_builtin.force_wxupdate', False)
        self.symtable.set_symbol('_sys.wx.inputhook',   inputhook)
        self.symtable.set_symbol('_sys.wx.ping',   inputhook.ping)
        self.symtable.set_symbol('_sys.wx.force_wxupdate', False)
        self.symtable.set_symbol('_sys.wx.wxapp', output)

        self.symtable.set_symbol('_sys.display.colors.text', None)
        self.symtable.set_symbol('_sys.display.colors.text2', 'blue')
        self.symtable.set_symbol('_sys.display.colors.text2_attrs', [])
        self.symtable.set_symbol('_sys.display.colors.text_attrs', [])
        # self.symtable.set_symbol('_sys.wx.parent', wx.GetApp().GetTopWindow())

        self.SetPrompt()
        self.larch.run_init_scripts()
        self.flush_timer = wx.Timer(wxparent)
        self.needs_flush = True
        wxparent.Bind(wx.EVT_TIMER, self.onFlushTimer, self.flush_timer)
        self.flush_timer.Start(500)
Beispiel #5
0
    def __init__(self, wxparent=None, _larch=None):
        self.wxparent = wxparent
        self.larch = _larch
        if self.larch is None:
            self.larch = larch.Interpreter()
        self.filelist = None
        self.file_groups = OrderedDict()
        self.fit_opts = {}
        self.group = None

        self.groupname = None
        self.report_frame = None
        self.symtable = self.larch.symtable
    def __init__(self,
                 wxparent=None,
                 writer=None,
                 _larch=None,
                 prompt=None,
                 historyfile=None,
                 output=None,
                 input=None):
        self._larch = _larch
        self.textstyle = None

        self.prompt = prompt
        self.input = input
        self.output = output

        if _larch is None:
            self._larch = larch.Interpreter(historyfile=historyfile,
                                            writer=self)
            self._larch.run_init_scripts()
        self.writer = self._larch.writer
        self.symtable = self._larch.symtable
        # if self.output is not None:
        #    self.encoding = sys.stdout.encoding
        #    sys.stdout = self

        self.objtree = wxparent.objtree

        self.set_textstyle(mode='text')
        self._larch("_sys.display.colors['text2'] = {'color': 'blue'}",
                    add_history=False)

        self._larch.add_plugin('wx', wxparent=wxparent)
        self.symtable.set_symbol('_builtin.force_wxupdate', False)
        self.symtable.set_symbol('_sys.wx.inputhook', inputhook)
        self.symtable.set_symbol('_sys.wx.ping', inputhook.ping)
        self.symtable.set_symbol('_sys.wx.force_wxupdate', False)
        self.symtable.set_symbol('_sys.wx.wxapp', output)
        self.symtable.set_symbol('_sys.wx.parent', wx.GetApp().GetTopWindow())

        if self.output is not None:
            style = self.output.GetDefaultStyle()
            bgcol = style.GetBackgroundColour()
            sfont = style.GetFont()

            self.textstyle = wx.TextAttr('black', bgcol, sfont)

        self.SetPrompt(True)
        self.flush_timer = wx.Timer(wxparent)
        self.needs_flush = True
        wxparent.Bind(wx.EVT_TIMER, self.onFlushTimer, self.flush_timer)
        self.flush_timer.Start(500)
Beispiel #7
0
    def __init__(self,
                 wxparent=None,
                 writer=None,
                 prompt=None,
                 output=None,
                 input=None):
        self.larch = larch.Interpreter()
        self.inptext = larch.InputText(prompt=self.ps1, interactive=False)
        self.symtable = self.larch.symtable
        self.prompt = prompt
        self.output = output
        self.larch.writer = self
        self.larch.add_plugin('wx', wxparent=wxparent)

        self.SetPrompt()
        for fname in larch.site_config.init_files:
            self.execute("run('%s')" % fname)
Beispiel #8
0
    def __init__(self, scandb):
        self.scandb = scandb
        self.fileroot = self.scandb.get_info('server_fileroot')
        self.writer = LarchScanDBWriter(scandb=scandb)
        self.macro_dir = self.scandb.get_info('macro_folder')
        self.loaded_modules = {}

        self.larch = self.symtab = None
        print("Larch Scan DB Server ", scandb, HAS_LARCH)
        if HAS_LARCH:
            from larch.epics.larchscan import connect_scandb
            self.larch = larch.Interpreter(writer=self.writer)
            connect_scandb(scandb, _larch=self.larch)
            self.symtab = self.larch.symtable
            # self.symtab.set_symbol(LARCH_SCANDB, self.scandb)
            # self.symtab.set_symbol(LARCH_INSTDB, InstrumentDB(self.scandb))
            # self.symtab._sys.color_exceptions = False
            self.enable_abort()
Beispiel #9
0
    def __init__(self,
                 host='localhost',
                 port=4966,
                 logRequests=False,
                 allow_none=True,
                 keepalive_time=3 * 24 * 3600):
        self.out_buffer = []

        self.larch = larch.Interpreter(writer=self)
        self.larch.input.prompt = ''
        self.larch.input.prompt2 = ''
        self.larch.run_init_scripts()

        self.larch('_sys.client = group(keepalive_time=%f)' % keepalive_time)
        self.larch('_sys.wx = group(wxapp=None)')
        _sys = self.larch.symtable._sys
        _sys.color_exceptions = False
        _sys.client.last_event = int(time())
        _sys.client.pid_server = int(os.getpid())
        _sys.client.app = 'unknown'
        _sys.client.pid = 0
        _sys.client.user = '******'
        _sys.client.machine = 'unknown'

        self.client = self.larch.symtable._sys.client
        self.port = port
        SimpleXMLRPCServer.__init__(self, (host, port),
                                    logRequests=logRequests,
                                    allow_none=allow_none)

        self.register_introspection_functions()
        self.register_function(self.larch_exec, 'larch')

        for method in ('ls', 'chdir', 'cd', 'cwd', 'shutdown',
                       'set_keepalive_time', 'set_client_info',
                       'get_client_info', 'get_data', 'get_rawdata',
                       'get_messages', 'len_messages'):
            self.register_function(getattr(self, method), method)

        # sys.stdout = self
        self.finished = False
        signal.signal(signal.SIGINT, self.signal_handler)
        self.activity_thread = Thread(target=self.check_activity)
Beispiel #10
0
#!/usr/bin/env python2.6

import larch
import sys
import time
t0  = time.time()
print('---')
session = larch.Interpreter()
print('session ready; %0.3f s' % time.time()-t0)
input = larch.InputText()
for arg in sys.argv[1:]:
    try:
        input.readfile(arg)
    except IOError:
        print("could not read %s" % arg)

    while input:
        block,fname,lineno = input.get()
        ret = session.eval(block,fname=fname,lineno=lineno)
        if callable(ret) and not isinstance(ret,type):
            try:
                if 1 == len(block.split()):
                    ret = ret()
            except:
                pass
        if session.error:
            print('== Error ==')
            err  = session.error.pop(0)
            print("%s: %s" % err.get_error())
            break
        if ret is not None:
Beispiel #11
0
import re
import yaml
import math
import numpy as np
import numpy.linalg as linalg
import scipy.optimize as optim
import scipy.interpolate as interp
import scipy.integrate as INT
import shutil
import pandas as pd
import larch
from larch_plugins.xafs import autobk, xftf, xftr
from larch_plugins.io import read_ascii
import larch.builtins as larch_builtins

mylarch = larch.Interpreter(with_plugins=False)

def read_file(file):
    m = re.search(r'\.[a-zA-Z0-9]+$',os.path.basename(file))
    df = pd.DataFrame()
    if m == None:
        print ('Nothing to match')
        return
    elif m.group(0) == '.ex3':
        t_df = pd.read_csv(file,names=['Energy','ut'],delim_whitespace=True,skiprows=27)
        df = t_df.ix[1:t_df.shape[0]-2]
        Energy = df['Energy'].values
        ut = df['ut'].values
        t_array = np.array([])
        for term in Energy:
            print (term)
Beispiel #12
0
            out = Group()
            value.pop('__class__')
            for key, val in value.items():
                print('Key ', key, val)
                setattr(out, key, json_decode(val))
        elif classname == 'Parameter':
            args = {'_larch': _larch}
            for attr in ('value', 'name', 'vary', 'min', 'max', 'expr'):
                val = value.get(attr, None)
                if val is not None:
                    args[attr] = val

            out = Parameter(**args)
    else:
        out = value
    return out


_larch = larch.Interpreter()
_larch.eval("x = 'a string'")
_larch.eval("y = 77")
_larch.eval("g = group(a=1.1, s='hello')")  # , b='a string')")

print(json.loads(json_encode('x', _larch=_larch)))
print(json.loads(json_encode('y', _larch=_larch)))
print(json.loads(json_encode('g', _larch=_larch)))
out = json_decode(json_encode('g', _larch=_larch))
print(out)
for a in dir(out):
    print(a, getattr(out, a))
Beispiel #13
0
import larch

interp = larch.Interpreter()
stable = interp.symtable

stable.set_symbol('_main.a', value=1)
stable.new_group('g1', s='a string', en=722)

stable.set_symbol('_sys.var', value=1)
stable.set_symbol('_main.b', value='value of b')
stable.set_symbol('_main.g1.t', value='another string')
stable.set_symbol('_main.g1.d', value={'yes': 1, 'no': 0})

stable.new_group('g2')
stable.set_symbol('g2.data', value=[1, 2, 3])
stable.set_symbol('g2.a', value='hello')

stable.set_symbol('g2.subgroup',
                  value=larch.Group(__name__='subgroup x', q=2, w=99))

print '<<< Groups: '
for g in stable._subgroups():
    if g not in ('_sys', '_math', '_builtin', 'moduleGroup', 'localGroup'):
        print stable.show_group(g)

print '>>>'