Exemplo n.º 1
0
def init_sol(solver, sol=None, mode=0, tmpdir=None):
    '''
    mode = 0: standard mode
    mode = 1: mode 0 + backup tmpdir and return it to caller
    mode = 2: read data from tmpdir
    '''
    # cleaning folder
    if not cbook.ProxyAlive(solver._model):
        print("can not initialize solution folder. model is not spedified")
        solver._model = None
        return False

    if sol is None:
        if cbook.ProxyAlive(solver._sol):
            sol = solver._sol

    if sol is None:
        print("can not initialize solution folder. sol is not spedified")
        return False

    for name, child in sol.get_children():
        child.destroy()

    root = solver.get_root_parent()
    wdir = root.getvar('wdir')

    if mode != 2:
        fpath = os.path.join(wdir, '.tmp' + str(solver.id))
        if os.path.exists(fpath):
            os.remove(fpath)
        rm = solver._model.get_root_model()

        scripts = [obj for obj in rm.walk_tree() if isinstance(obj, PyScript)]
        for s in scripts:
            s._save_link = True
        flag, tmpdir = rm.save_subtree(fpath, maketar=False)
        for s in scripts:
            s._save_link = False
    else:
        shutil.copytree(tmpdir + '_bk', tmpdir)
    if mode == 1:
        shutil.copytree(tmpdir, tmpdir + '_bk')
    sol.load_subtree(tmpdir, usetar=False)
    sol.setvar('source_model', solver._model.get_root_model().get_full_path())
    #        os.remove(fpath)

    if not sol.has_child('parameters'):
        sol.add_child('parameters', PyParam())
    if cbook.ProxyAlive(solver._param):
        #            psetting = root.setting.parameters
        param = solver._param
        vars = param.getvar_copy()
        sol.parameters.setvar(vars)
    if mode == 1:
        return True, tmpdir
    return True
Exemplo n.º 2
0
    def init_sol(self, sol=None):
        if sol is None:
            psol, sol_exist = self.creat_sol()
        else:
            print("error: sol is supposed to be None here")
            return

        for x in [x for x in self.walk_tree() if isinstance(x, PySol)]:
            x.destroy()

        ps = PySol()
        self.add_child('worker', ps)
        ps.add_child('parameters', PyParam())

        ifigure.events.SendChangedEvent(self)
        return True
Exemplo n.º 3
0
    def __init__(self, src=None):
        #
        #  variable to specify "present" subtrees.
        #
        self._pbook = None
        self._pmodel = None
        self._psetting = None
        self._psolver = None
        self._psol = None
        self._saved = False

        super(ProjectTop, self).__init__(src=src)
        self._name = 'proj'

        if src is None:
            setting = PySetting()
            self.add_child('setting', setting)
            param = PyParam()
            setting.add_child('parameters', param)
Exemplo n.º 4
0
 def onAddParam(self, evt):
     obj = PyParam()
     name = 'parameters'
     self.add_child(name, obj)
     evt.Skip()