def __init__(self, viz): super(type(self), self).__init__(column=True) self.viz = viz self.ds = self.viz.state.ds column_names = self.ds.get_column_names() self.x = v.Select(items=column_names, v_model=self.viz.state.x_expression, label='x axis') widgets.link((self.viz.state, 'x_expression'), (self.x, 'v_model')) self.y = v.Select(items=column_names, v_model=self.viz.state.y_expression, label='y axis') widgets.link((self.viz.state, 'y_expression'), (self.y, 'v_model')) self.normalize = v.Checkbox(label='normalize', v_model=self.viz.normalize) widgets.link((self.viz, 'normalize'), (self.normalize, 'v_model')) self.children = [self.x, self.y, self.normalize]
def __init__(self, label, tooltip, enum_color, clr, init_layer_val, layer_options, compute): self.check = v.Checkbox(v_on='tooltip.on', label=label, v_model=True , color='primary') self.check_widget = v.Tooltip(bottom=True, v_slots=[{'name': 'activator', 'variable': 'tooltip', 'children': self.check}], children=[tooltip]) self.compute = compute self.enum_color = enum_color self.init_layer_val = init_layer_val self.layer_options = layer_options self.dropdown_widget = Dropdown(options=self.layer_options , value=init_layer_val, disabled=False, layout={'width': '90px'} ) self.dropdown_widget.observe(self.compute, names='value') self.dropdown_widget.observing = True self.clr = clr
def __init__(self, viz): super(type(self), self).__init__(column=True) self.viz = viz self.ds = self.viz.state.ds column_names = self.ds.get_column_names() self.x = v.Select(items=column_names, v_model=self.viz.state.x_expression, label='x axis') widgets.link((self.viz.state, 'x_expression'), (self.x, 'v_model')) self.normalize = v.Checkbox(v_model=self.viz.normalize, label='normalize') widgets.link((self.viz, 'normalize'), (self.normalize, 'v_model')) self.min = widgets.FloatText(description='min') self.max = widgets.FloatText(description='max') widgets.link((self.viz.state, 'x_min'), (self.min, 'value')) widgets.link((self.viz.state, 'x_max'), (self.max, 'value')) self.shape = widgets.IntSlider(min=1, max=512, value=64, description='bins') widgets.link((self.viz.state, 'shape'), (self.shape, 'value')) self.bar_style = widgets.ToggleButtons(options=[('Stacked', 'stacked'), ('Grouped', 'grouped')], description='Bar style') widgets.link((self.viz. bar, 'type'), (self.bar_style, 'value')) self.children = [self.x, self.normalize, self.min, self.max, self.shape, self.bar_style]
def initialize(self): """ All ipyvuetify widgets to display for the model """ self.namew = v.TextField( v_model=self.name, label="Name :", outlined=True, style_="margin-top:20px", ) self.usesolver = v.Checkbox( v_model=True, label='Use solver', style_="margin-bottom:10px; margin-left:10px;", ) if self.namew.v_model == 'model': self.namew.readonly = True self.linear = LinearSolver() self.nonlinear = NonLinearSolver() def disabled(widget, event, data): """ Disabled linear & nonlinear solver widgets if you don't use it """ if self.usesolver.v_model == False: self.linear.expansionPanel.disabled = True self.nonlinear.expansionPanel.disabled = True else: self.linear.expansionPanel.disabled = False self.nonlinear.expansionPanel.disabled = False self.usesolver.on_event("change", disabled) self.addMod = v.Btn( color="blue", elevation=4, style_="width:240px", outlined=True, children=["Add subgroup"], ) def on_addMod_button_clicked(widget, event, data): """ Display the widgets for each subgroup ( until 10 ) """ if (len(self.models) != 10): self.models.append(Model(self.name + str(len(self.models) + 1))) if (len(self.models) == 1): self.models[0].display() elif (len(self.models) == 2): self.models[1].display() elif (len(self.models) == 3): self.models[2].display() elif (len(self.models) == 4): self.models[3].display() elif (len(self.models) == 5): self.models[4].display() elif (len(self.models) == 6): self.models[5].display() elif (len(self.models) == 7): self.models[6].display() elif (len(self.models) == 8): self.models[7].display() elif (len(self.models) == 9): self.models[8].display() elif (len(self.models) == 10): self.models[9].display() self.vbox.children = [] self.addMod.on_event("click", on_addMod_button_clicked) self.vbox.children = [self.addMod]
def initialize(self): """ All ipyvuetify widgets to display for the driver """ drive = driver.scipy_optimizer.ScipyOptimizeDriver() optimizers = v.Select( items=list(drive.options.__dict__["_dict"]["optimizer"].get("values")), v_model=drive.options.__dict__["_dict"]["optimizer"].get("value"), label="Optimizers :", outlined=True, style_="width:500px;margin-top:5px", ) tol = v.TextField( v_model=drive.options.__dict__["_dict"]["tol"].get("value"), min=drive.options.__dict__["_dict"]["tol"].get("lower"), max=1, label="Tol :", type="number", outlined=True, style_="width:500px;margin-left:50px;margin-top:6px", ) maxiter = v.TextField( v_model=drive.options.__dict__["_dict"]["maxiter"].get("value"), min=drive.options.__dict__["_dict"]["maxiter"].get("lower"), max=1000, label="Maxiter :", type="number", outlined=True, ) disp = v.Checkbox( v_model=drive.options.__dict__["_dict"]["disp"].get("value"), label="Disp", style_="margin-left:50px", ) def scipy_optimizer_change(): """ Adapt widgets & vbox widgets to only display widgets you need in this driver """ self.vboxgenerator.children[0].children = [] self.vboxdoedriver.children[0].children = [] self.vboxdoedriver.children[1].children = [] self.vboxdriver.children[0].children = [optimizers, maxiter] self.vboxdriver.children[1].children = [tol, disp] drive = driver.differential_evolution_driver.DifferentialEvolutionDriver() maxgendiff = v.TextField( v_model=drive.options.__dict__["_dict"]["max_gen"].get("value"), min=0, max=1000, label="Max generations :", type='number', outlined=True, style_='width:500px;margin-top:5px' ) popsizediff = v.TextField( v_model=drive.options.__dict__["_dict"]["pop_size"].get("value"), min=0, max=100, label="Number of points in the GA :", type="number", outlined=True, style_='width:500px;margin-left:50px;margin-top:5px' ) runparalleldiff = v.Checkbox( v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"), label="Run parallel", style_='margin-bottom:20px' ) procspermodeldiff = v.TextField( v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"), min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"), max=100, label="Processors per model :", type="number", outlined=True, style_='width:500px;margin-left:50px' ) penaltyparameterdiff = v.TextField( v_model=drive.options.__dict__["_dict"]["penalty_parameter"].get("value"), min=drive.options.__dict__["_dict"]["penalty_parameter"].get("lower"), max=100, label="Penalty parameter :", type="number", outlined=True, style_='width:500px' ) penaltyexponentdiff = v.TextField( v_model=drive.options.__dict__["_dict"]["penalty_exponent"].get("value"), min=0, max=100, label="Penalty exponent :", type="number", outlined=True, style_='width:500px;margin-left:50px' ) cross_probdiff = v.TextField( v_model=drive.options.__dict__["_dict"]["Pc"].get("value"), min=drive.options.__dict__["_dict"]["Pc"].get("lower"), max=drive.options.__dict__["_dict"]["Pc"].get("upper"), label="Crossover probability :", type="number", outlined=True, style_='width:500px' ) diff_rate = v.TextField( v_model=drive.options.__dict__["_dict"]["F"].get("value"), min=drive.options.__dict__["_dict"]["F"].get("lower"), max=drive.options.__dict__["_dict"]["F"].get("upper"), label="Differential rate :", type="number", outlined=True, style_='width:500px;margin-left:50px' ) multiobjweightsdiff = v.TextField( v_model="{}", label="Multi objective weights :", outlined=True, style_='width:500px' ) multiobjexponentdiff = v.TextField( v_model=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("value"), min=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("lower"), max=100, label="Multi-objective weighting exponent :", type="number", outlined=True, style_='width:500px;margin-left:50px' ) def differential_evolution_driver_change(): """ Adapt widgets & vbox widgets to only display widgets you need in this driver """ self.vboxgenerator.children[0].children = [] self.vboxdoedriver.children[0].children = [] self.vboxdoedriver.children[1].children = [] self.vboxdriver.children[0].children = [maxgendiff, runparalleldiff, penaltyparameterdiff, cross_probdiff, multiobjweightsdiff] self.vboxdriver.children[1].children = [popsizediff, procspermodeldiff, penaltyexponentdiff, diff_rate, multiobjexponentdiff] def doe_driver_change(): """ Adapt widgets & vbox widgets to only display widgets you need in this driver """ self.vboxdriver.children[0].children = [] self.vboxdriver.children[1].children = [] drive = driver.doe_driver.DOEDriver() def onchangegenerator(widget, event, data): """ A function which start the function you need for your generator """ if data == "DOEGenerator": doe_generator() elif data == "ListGenerator": list_generator() elif data == "CSVGenerator": csv_generator() elif data == "UniformGenerator": uniform_generator() elif data == "_pyDOE_Generator": pydoe_generator() elif data == "FullFactorialGenerator": full_factorial_generator() elif data == "GeneralizedSubsetGenerator": generalized_subset_generator() elif data == "PlackettBurmanGenerator": plackett_burman_generator() elif data == "BoxBehnkenGenerator": box_behnken_generator() elif data == "LatinHypercubeGenerator": latin_hypercube_generator() self.generator = v.Select( items=[ "DOEGenerator", "ListGenerator", "CSVGenerator", "UniformGenerator", "_pyDOE_Generator", "FullFactorialGenerator", "GeneralizedSubsetGenerator", "PlackettBurmanGenerator", "BoxBehnkenGenerator", "LatinHypercubeGenerator", ], v_model="DOEGenerator", label="Generator :", outlined=True, style_="width:500px;margin-top:5px", ) self.vboxgenerator.children[0].children = [self.generator] self.generator.on_event("change", onchangegenerator) procspermodeldoe = v.TextField( v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"), min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"), max=100, label="Processors per model :", outlined=True, type='number', style_='width:500px;margin-top:5px' ) runparalleldoe = v.Checkbox( v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"), label="Run parallel", outlined=True, type='number', style_='width:500px;margin-left:50px' ) drive = driver.doe_generators.DOEGenerator() def doe_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [procspermodeldoe] self.vboxdoedriver.children[1].children = [runparalleldoe] drive = driver.doe_generators.ListGenerator() _data = v.TextField( v_model="[]", label="List of collections of name :", outlined=True, style_='width:500px;margin-top:5px' ) def list_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_data, runparalleldoe] self.vboxdoedriver.children[1].children = [procspermodeldoe] _filename = v.TextField( label="File name :", outlined=True, style_='width:500px;margin-top:5px' ) def csv_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_filename, runparalleldoe] self.vboxdoedriver.children[1].children = [procspermodeldoe] drive = driver.doe_generators.UniformGenerator() _num_samples = v.TextField( v_model=drive.__dict__["_num_samples"], min=0, max=100, label="Number of samples :", outlined=True, type='number', style_='width:500px;margin-top:5px' ) _seeduniform = v.TextField( v_model=drive.__dict__["_seed"], min=0, max=100, label="Seed :", outlined=True, type='number', style_='width:500px;margin-left:50px;margin-top:5px', ) def uniform_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_num_samples, procspermodeldoe] self.vboxdoedriver.children[1].children = [_seeduniform, runparalleldoe] drive = driver.doe_generators._pyDOE_Generator() def onchangelevels(widget, event, data): """ A function which change the type of the levels widget ( Int or Dict ) """ if self.generator.v_model == '_pyDOE_Generator': drive = drive = driver.doe_generators._pyDOE_Generator() if data == "Int": _levelspydoe = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelspydoe = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe] elif self.generator.v_model == 'FullFactorialGenerator': drive = driver.doe_generators.FullFactorialGenerator() if data == "Int": _levelsfull = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelsfull = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe] elif self.generator.v_model == 'PlackettBurmanGenerator': drive = driver.doe_generators.PlackettBurmanGenerator() if data == "Int": _levelsplackett = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelsplackett = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe] elif self.generator.v_model == 'BoxBehnkenGenerator': drive = driver.doe_generators.BoxBehnkenGenerator() if data == "Int": _levelsbox = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelsbox = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelsbox, procspermodeldoe] selectlevels = v.RadioGroup( children=[ v.Radio(label='Int', value='Int'), v.Radio(label='Dict', value='Dict'), ], v_model="Int", label="Levels type :", ) selectlevels.on_event('change', onchangelevels) _levelspydoe = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) _sizespy = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) def pydoe_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizespy, runparalleldoe] self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe] drive = driver.doe_generators.FullFactorialGenerator() _levelsfull = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) _sizesfull = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) def full_factorial_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizesfull, runparalleldoe] self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe] def generalized_subset_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [procspermodeldoe] self.vboxdoedriver.children[1].children = [runparalleldoe] drive = driver.doe_generators.PlackettBurmanGenerator() _levelsplackett = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) _sizesplackett = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) def plackett_burman_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizesplackett, runparalleldoe] self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe] drive = driver.doe_generators.BoxBehnkenGenerator() _levelsbox = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px;margin-left:50px' ) _sizesbox = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) _center = v.TextField( v_model=drive.__dict__["_center"], min=0, max=100, label="Center :", type='number', outlined=True, style_='width:500px;margin-top:5px;margin-left:50px' ) def box_behnken_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizesbox, procspermodeldoe] self.vboxdoedriver.children[1].children = [_levelsbox, _center, runparalleldoe] drive = driver.doe_generators.LatinHypercubeGenerator() _samples = v.TextField( v_model=drive.__dict__["_samples"], min=0, max=100, label="Number of samples to generate :", type='number', outlined=True, style_="width:500px;margin-top:5px", ) _criterion = v.Select( items=["None", "center", "maximin", "centermaximin", "correlation"], v_model=drive.__dict__["_criterion"], label="Criterion :", outlined=True, style_="width:500px;margin-top:5px;margin-left:50px", ) _iterations = v.TextField( v_model=drive.__dict__["_iterations"], min=0, max=100, label="Iterations :", outlined=True, type='number', style_="width:500px;margin-top:5px", ) _seedlatin = v.TextField( v_model=drive.__dict__["_seed"], min=0, max=100, label="Seed :", outlined=True, type='number', style_="width:500px;margin-top:5px;margin-left:50px", ) def latin_hypercube_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_samples, _iterations, procspermodeldoe] self.vboxdoedriver.children[1].children = [_criterion, _seedlatin, runparalleldoe] doe_generator() drive = driver.genetic_algorithm_driver.SimpleGADriver() bits = v.TextField( v_model="{}", label="Number of bits of resolution :", outlined=True, style_='width:500px;margin-top:5px', ) elitism = v.Checkbox( v_model=drive.options.__dict__["_dict"]["elitism"].get("value"), label="Elitism", style_='width:500px;margin-left:50px;margin-bottom:40px', ) gray = v.Checkbox( v_model=drive.options.__dict__["_dict"]["gray"].get("value"), label="Gray", style_='width:500px;margin-bottom:20px', ) crossbits = v.Checkbox( v_model=drive.options.__dict__["_dict"]["cross_bits"].get("value"), label="Cross bits", style_='width:500px;margin-left:50px;margin-bottom:20px', ) maxgengenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["max_gen"].get("value"), min=0, max=1000, label="Number of generations :", type='number', outlined=True, style_='width:500px', ) popsizegenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["pop_size"].get("value"), min=0, max=100, label="Number of points in the GA :", type='number', outlined=True, style_='width:500px;margin-left:50px', ) runparallelgenetic = v.Checkbox( v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"), label="Run parallel", style_='width:500px;margin-bottom:20px', ) procspermodelgenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"), min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"), max=100, label="Processors per model :", type='number', outlined=True, style_='width:500px;margin-left:50px', ) penaltyparametergenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["penalty_parameter"].get("value"), min=drive.options.__dict__["_dict"]["penalty_parameter"].get("lower"), max=100, label="Penalty parameter :", type='number', outlined=True, style_='width:500px', ) penaltyexponentgenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["penalty_exponent"].get("value"), min=0, max=100, label="Penalty exponent :", type='number', outlined=True, style_='width:500px;margin-left:50px', ) cross_probgenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["Pc"].get("value"), min=drive.options.__dict__["_dict"]["Pc"].get("lower"), max=drive.options.__dict__["_dict"]["Pc"].get("upper"), label="Crossover probability :", type='number', outlined=True, style_='width:500px', ) mut_rate = v.TextField( v_model=drive.options.__dict__["_dict"]["Pm"].get("value"), min=drive.options.__dict__["_dict"]["Pm"].get("lower"), max=drive.options.__dict__["_dict"]["Pm"].get("upper"), label="Mutation rate :", type='number', outlined=True, style_='width:500px;margin-left:50px', ) multiobjweightsgenetic = v.TextField( v_model="{}", label="Multi objective weights :", outlined=True, style_='width:500px', ) multiobjexponentgenetic = v.TextField( v_model=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("value"), min=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("lower"), max=100, label="Multi-objective weighting exponent :", type='number', outlined=True, style_='width:500px;margin-left:50px', ) computepareto = v.Checkbox( v_model=drive.options.__dict__["_dict"]["compute_pareto"].get("value"), label="Compute pareto", style_='width:500px', ) def genetic_algorithm_driver_change(): """ Adapt widgets & vbox widgets to only display widgets you need in this driver """ self.vboxgenerator.children[0].children = [] self.vboxdoedriver.children[0].children = [] self.vboxdoedriver.children[1].children = [] self.vboxdriver.children[0].children = [bits, gray, maxgengenetic, runparallelgenetic, penaltyparametergenetic, cross_probgenetic, multiobjweightsgenetic, computepareto] self.vboxdriver.children[1].children = [elitism, crossbits, popsizegenetic, procspermodelgenetic, penaltyexponentgenetic, mut_rate, multiobjexponentgenetic] def pyoptsparse_driver_change(): """ Adapt widgets & vbox widgets to only display widgets you need in this driver """ self.vboxgenerator.children[0].children = [] self.vboxdoedriver.children[0].children = [] self.vboxdoedriver.children[1].children = [] self.vboxdriver.children[0].children = [] self.vboxdriver.children[1].children = [] def onchange(widget, event, data): """ A function which start the function you need for your driver """ if data == "scipy_optimizer": scipy_optimizer_change() elif data == "differential_evolution_driver": differential_evolution_driver_change() elif data == "doe_driver": doe_driver_change() elif data == "genetic_algorithm_driver": genetic_algorithm_driver_change() elif data == "pyoptsparse_driver": pyoptsparse_driver_change() self.selectDriver = v.Select( items=[ "differential_evolution_driver", "doe_driver", "genetic_algorithm_driver", "pyoptsparse_driver", "scipy_optimizer", ], v_model="scipy_optimizer", label="Driver :", outlined=True, style_="margin-top:5px", ) self.selectDriver.on_event("change", onchange) panel = v.ExpansionPanel( children=[ v.ExpansionPanelHeader( color='#eaeaea', children=['Driver'], style_='margin-bottom:25px;' ), v.ExpansionPanelContent( children=[self.selectDriver,self.vboxdriver,self.vboxgenerator,self.vboxdoedriver] ), ] ) expansionPanel = v.ExpansionPanels( focusable=True, children=[panel], ) display(expansionPanel) scipy_optimizer_change()
def doe_driver_change(): """ Adapt widgets & vbox widgets to only display widgets you need in this driver """ self.vboxdriver.children[0].children = [] self.vboxdriver.children[1].children = [] drive = driver.doe_driver.DOEDriver() def onchangegenerator(widget, event, data): """ A function which start the function you need for your generator """ if data == "DOEGenerator": doe_generator() elif data == "ListGenerator": list_generator() elif data == "CSVGenerator": csv_generator() elif data == "UniformGenerator": uniform_generator() elif data == "_pyDOE_Generator": pydoe_generator() elif data == "FullFactorialGenerator": full_factorial_generator() elif data == "GeneralizedSubsetGenerator": generalized_subset_generator() elif data == "PlackettBurmanGenerator": plackett_burman_generator() elif data == "BoxBehnkenGenerator": box_behnken_generator() elif data == "LatinHypercubeGenerator": latin_hypercube_generator() self.generator = v.Select( items=[ "DOEGenerator", "ListGenerator", "CSVGenerator", "UniformGenerator", "_pyDOE_Generator", "FullFactorialGenerator", "GeneralizedSubsetGenerator", "PlackettBurmanGenerator", "BoxBehnkenGenerator", "LatinHypercubeGenerator", ], v_model="DOEGenerator", label="Generator :", outlined=True, style_="width:500px;margin-top:5px", ) self.vboxgenerator.children[0].children = [self.generator] self.generator.on_event("change", onchangegenerator) procspermodeldoe = v.TextField( v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"), min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"), max=100, label="Processors per model :", outlined=True, type='number', style_='width:500px;margin-top:5px' ) runparalleldoe = v.Checkbox( v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"), label="Run parallel", outlined=True, type='number', style_='width:500px;margin-left:50px' ) drive = driver.doe_generators.DOEGenerator() def doe_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [procspermodeldoe] self.vboxdoedriver.children[1].children = [runparalleldoe] drive = driver.doe_generators.ListGenerator() _data = v.TextField( v_model="[]", label="List of collections of name :", outlined=True, style_='width:500px;margin-top:5px' ) def list_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_data, runparalleldoe] self.vboxdoedriver.children[1].children = [procspermodeldoe] _filename = v.TextField( label="File name :", outlined=True, style_='width:500px;margin-top:5px' ) def csv_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_filename, runparalleldoe] self.vboxdoedriver.children[1].children = [procspermodeldoe] drive = driver.doe_generators.UniformGenerator() _num_samples = v.TextField( v_model=drive.__dict__["_num_samples"], min=0, max=100, label="Number of samples :", outlined=True, type='number', style_='width:500px;margin-top:5px' ) _seeduniform = v.TextField( v_model=drive.__dict__["_seed"], min=0, max=100, label="Seed :", outlined=True, type='number', style_='width:500px;margin-left:50px;margin-top:5px', ) def uniform_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_num_samples, procspermodeldoe] self.vboxdoedriver.children[1].children = [_seeduniform, runparalleldoe] drive = driver.doe_generators._pyDOE_Generator() def onchangelevels(widget, event, data): """ A function which change the type of the levels widget ( Int or Dict ) """ if self.generator.v_model == '_pyDOE_Generator': drive = drive = driver.doe_generators._pyDOE_Generator() if data == "Int": _levelspydoe = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelspydoe = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe] elif self.generator.v_model == 'FullFactorialGenerator': drive = driver.doe_generators.FullFactorialGenerator() if data == "Int": _levelsfull = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelsfull = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe] elif self.generator.v_model == 'PlackettBurmanGenerator': drive = driver.doe_generators.PlackettBurmanGenerator() if data == "Int": _levelsplackett = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelsplackett = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe] elif self.generator.v_model == 'BoxBehnkenGenerator': drive = driver.doe_generators.BoxBehnkenGenerator() if data == "Int": _levelsbox = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) elif data == "Dict": _levelsbox = v.TextField( v_model="[]", label="Levels :", outlined=True, style_='width:500px;margin-top:27px' ) self.vboxdoedriver.children[1].children = [_levelsbox, procspermodeldoe] selectlevels = v.RadioGroup( children=[ v.Radio(label='Int', value='Int'), v.Radio(label='Dict', value='Dict'), ], v_model="Int", label="Levels type :", ) selectlevels.on_event('change', onchangelevels) _levelspydoe = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) _sizespy = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) def pydoe_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizespy, runparalleldoe] self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe] drive = driver.doe_generators.FullFactorialGenerator() _levelsfull = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) _sizesfull = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) def full_factorial_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizesfull, runparalleldoe] self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe] def generalized_subset_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [procspermodeldoe] self.vboxdoedriver.children[1].children = [runparalleldoe] drive = driver.doe_generators.PlackettBurmanGenerator() _levelsplackett = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px' ) _sizesplackett = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) def plackett_burman_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizesplackett, runparalleldoe] self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe] drive = driver.doe_generators.BoxBehnkenGenerator() _levelsbox = v.TextField( v_model=drive.__dict__["_levels"], label="Levels :", min=0, max=1000, outlined=True, type='number', style_='width:500px;margin-top:27px;margin-left:50px' ) _sizesbox = v.TextField( v_model=drive.__dict__["_sizes"], min=0, max=100, label="Sizes :", outlined=True, type='number', style_='width:500px' ) _center = v.TextField( v_model=drive.__dict__["_center"], min=0, max=100, label="Center :", type='number', outlined=True, style_='width:500px;margin-top:5px;margin-left:50px' ) def box_behnken_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [selectlevels, _sizesbox, procspermodeldoe] self.vboxdoedriver.children[1].children = [_levelsbox, _center, runparalleldoe] drive = driver.doe_generators.LatinHypercubeGenerator() _samples = v.TextField( v_model=drive.__dict__["_samples"], min=0, max=100, label="Number of samples to generate :", type='number', outlined=True, style_="width:500px;margin-top:5px", ) _criterion = v.Select( items=["None", "center", "maximin", "centermaximin", "correlation"], v_model=drive.__dict__["_criterion"], label="Criterion :", outlined=True, style_="width:500px;margin-top:5px;margin-left:50px", ) _iterations = v.TextField( v_model=drive.__dict__["_iterations"], min=0, max=100, label="Iterations :", outlined=True, type='number', style_="width:500px;margin-top:5px", ) _seedlatin = v.TextField( v_model=drive.__dict__["_seed"], min=0, max=100, label="Seed :", outlined=True, type='number', style_="width:500px;margin-top:5px;margin-left:50px", ) def latin_hypercube_generator(): """ Adapt widgets & vbox widgets to only display widgets you need in this generator """ self.vboxdoedriver.children[0].children = [_samples, _iterations, procspermodeldoe] self.vboxdoedriver.children[1].children = [_criterion, _seedlatin, runparalleldoe] doe_generator()