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)
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)
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
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())
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