def test_simple_save(self):
        root_dir = abspath(self.root_dir)
        e = create_simple_experiment()
        e.name = "simple_save_test"
        dirname = e.name
        self.directories.append(join(root_dir, dirname))
        config = e.save(root_dir, dirname)

        e2 = Experiment()
        e2.load_from_config(config, join(root_dir,dirname))
        self.assertEqual(e, e2)
Esempio n. 2
0
def new_main():
    from numpy import linspace
    from codetools.contexts.api import DataContext
    from blockcanvas.block_display.block_unit_variables import BlockUnitVariableList
    from codetools.contexts.api import DataContext
    from blockcanvas.app.experiment import Experiment

    code = "y = a*x*x + b*x + c"
    context = DataContext(name='Data')

    exp = Experiment(code=code, shared_context=context)
    context.update(dict(a=1.0, b=1.0, c=0.0))
    context['x'] = linspace(-5., 5., 60)

    # FIXME: Shouldn't have to manually call this now
    exp.context.execute_for_names(["a", "b", "c"])

    block = exp.exec_model.block

    # Use the experiment's local context as the shadow context
    exp.context.shadows = [exp._local_context]

    vars = BlockUnitVariableList(block=block, context=exp.context)
    config_interactor = InteractorConfig(vars=vars.variables)

    interactor = ConfigurableInteractor(context=exp.context,
                                        block=block,
                                        interactor_config=config_interactor)
    interactor.configure_traits()
def create_simple_experiment():
    """ Returns a simple experiment with a basic context in it """

    ctx = DataContext(name="main")
    ctx["b"] = 3
    ctx["c"] = 5
    return Experiment(code=SAMPLE_CODE_1, shared_context=ctx)
Esempio n. 4
0
    def __init__(self, code=None, data_context=None, *args, **kwargs):
        super(Application, self).__init__(*args, **kwargs)

        # Set the global app object in the scripting module.
        scripting.app = self

        self.project = Project()

        if data_context is not None:
            self.project.add_context(data_context)

        if code is not None:
            exp = Experiment(code=code, shared_context=data_context)
        else:
            exp = Experiment(shared_context=data_context)
        self.project.add_experiment(exp)

        # XXX: the @on_trait_change decorator is not working for this!
        self.on_trait_change(
            self._context_items_modified,
            'project:active_experiment:context:items_modified')
    def test_empty_save(self):
        """ Tests saving an empty experiment """
        root_dir = abspath(self.root_dir)
        exp = Experiment(name="first experiment")
        dirname = "first_experiment"
        self.directories.append(join(root_dir, dirname))
        config = exp.save(self.root_dir, dirname)

        e2 = Experiment()
        e2.load_from_config(config, join(root_dir,dirname))
        self.assertEqual(exp, e2)
def create_multi_experiment_proj():
    """ Returns a project with two contexts and two experiments.
    """

    ctx = DataContext(name="main")
    ctx["a"] = 5
    ctx["b"] = 7
    ctx["c"] = 11

    ctx2 = DataContext(name="secondary")
    ctx2["a"] = 4
    ctx2["b"] = 16
    ctx2["c"] = 32
    ctx2["m"] = 64
    ctx2["n"] = 128
    proj = Project(contexts=[ctx, ctx2])

    e1 = Experiment(code=SAMPLE_CODE_1, shared_context=ctx)
    e2 = Experiment(code=SAMPLE_CODE_2, shared_context=ctx)
    proj.experiments = [e1, e2]

    return proj
def create_simple_project():
    """ Returns a simple project with a single experiment and a single context """

    ctx = DataContext(name="main")
    ctx["a"] = 5
    ctx["b"] = 7
    ctx["c"] = 11
    proj = Project(contexts=[ctx])

    exp = Experiment(code=SAMPLE_CODE_1, shared_context=ctx)
    proj.add_experiment(exp)

    return proj
Esempio n. 8
0
    def _new_project(self):
        """ Implementation for creating a new project.  This can contain
            UI code.
        """
        # fixme: Ask user it they want to save.  If so, do it.
        self.workbench.app.project.save()

        # Close any editors associated with the old project.
        # (Perhaps) all of them.
        # fixme, we just close the current experiment.
        old_editor = self.get_editor(self.workbench.app.project)
        old_editor.close()

        # Create a new project and set it as the application project.
        self.workbench.app.project = Project()
        self.workbench.app.project.add_experiment(Experiment())

        # Bring it up in the editor.
        self.edit(self.workbench.app.project)
def new_main():
    from codetools.contexts.api import DataContext
    from blockcanvas.app.experiment import Experiment

    code2 = "from blockcanvas.debug.my_operator import add, mul\n" \
           "c = mul(a,b)\n" \
           "d = mul(c, 2)\n" \
           "e = mul(c, 3)\n" \
           "f = add(d,e)"
    context = DataContext(name='data')
    context.update(dict(a=2, b=3))
    exp = Experiment(code=code2, shared_context=context)

    interactor = ShadowInteractor(inputs=exp.exec_model.block.inputs,
                                  context=exp.context)
    interactor.configure_traits()
    from pprint import pprint

    print "***** Experiment executing context *****"
    pprint(exp.context.items())

    print "\n***** Shared context *****"
    pprint(context.items())
Esempio n. 10
0
    import numpy as np
    from codetools.contexts.api import DataContext
    from blockcanvas.block_display.block_unit_variables import BlockUnitVariableList
    from codetools.contexts.api import DataContext
    from blockcanvas.app.experiment import Experiment

    code = "from blockcanvas.debug.my_operator import add, mul\n" \
           "c = add(a,b)\n" \
           "d = mul(c, 2)\n" \
           "e = mul(c, 3)\n" \
           "f = add(d,e)"

    context = DataContext(name='Data')
    context['a'] = np.linspace(0, 10.0, 20)
    context['b'] = np.linspace(-12, 12, 20)

    exp = Experiment(code=code, shared_context=context)
    # FIXME: Shouldn't have to manually call this now
    exp.context.execute_for_names(["a", "b"])

    vars = BlockUnitVariableList(block=exp.exec_model.block,
                                 context=exp.context)
    interactor = InteractorConfig(vars=vars.variables)
    interactor.configure_traits()

    for varconf in interactor.var_configs:
        print 'name: ' + varconf.name + ', type: ' + varconf.type
    for plotconf in interactor.plot_configs:
        print str(plotconf.number) + ': ' + plotconf.x + ', ' + plotconf.y + \
              ', ' + plotconf.color