def __init__(self, window_provider): title = "Create Synthetic Datafile" super().__init__(title, window_provider) def window_provider(title): return self.window.internal_renderer self.form = FormController(window_provider) def dist_options_provider(): from datafiles.distribution import all_distributions distributions = {} for d in all_distributions: distributions[d] = d return distributions dist_select = Select(True, dist_options_provider) dist_section = Section("Distribution", dist_select) self.form.add_element('dist', dist_section) self.form.add_element('samples', Section("Samples", Input(True, int, 1500))) self.form.add_element('break1', SectionBreak()) all_params = {} for dist, params in param_map.items(): for p in params: if p not in all_params.keys(): inp = Input(True, myfloat, 1) self.form.add_element(p, Section(p, inp)) all_params[p] = inp self.form.add_element('break2', SectionBreak()) self.form.add_element('loc', Section("Mean", Input(True, myfloat, 0))) self.form.add_element('scale', Section("Standard deviation", Input(True, nfloat, 2))) def on_dist_change(old_value, new_value, is_valid=True): for inp in all_params.values(): inp.disappear() if new_value is not None: for p in param_map[new_value]: all_params[p].changed() all_params[p].show() dist_select.on_change(on_dist_change) on_dist_change(None, None) self.submitted = False cancel = self.form.get_button('cancel', "Cancel", self.remove) submit = self.form.get_button('submit', "Submit", self.submit) self.form.set_action_button('cancel', cancel) self.form.set_action_button('submit', submit) self.form.add_element('buttons', DoubleSection(submit, cancel)) self.form.start()
def get_all_inputs(datafile_select): parameters = {} parameters['population_method'] = Select(True, { 'auto': "Auto", 'manual': "Manual" }, 0) parameters['bins_method'] = Select( True, { 'auto': "Auto", 'fd': "Freedman Diacosis", 'doane': "Doane", 'scott': "Scott", 'stone': "Stone", 'rice': "Rice", 'sturges': "Sturges", 'sqrt': "Square root", 'manual': "Manual" }, 0) parameters['neighbors_method'] = Select(True, { 'auto': "Auto", 'manual': "Manual" }, 0) parameters['bins'] = Input(False, nint, 9) parameters['bin_population'] = Input(False, nfloat, 9) parameters['neighbors'] = Input(False, nfloat, 9) parameters['kernel'] = Select(True, {'gaussian': "Gaussian"}) parameters['bandwidth'] = Input(True, pfloat, "1.0") def on_bins_method_change(old_value, new_value, is_valid): if new_value == "manual": parameters['bins'].reset() else: parameters['bins'].disable() parameters['bins'].set_value("Disabled") def on_population_method_change(old_value, new_value, is_valid): if new_value == "manual": parameters['bin_population'].reset() else: parameters['bin_population'].disable() parameters['bin_population'].set_value("Disabled") def on_neighbors_method_change(old_value, new_value, is_valid): if new_value == "manual": parameters['neighbors'].reset() else: parameters['neighbors'].disable() parameters['neighbors'].set_value("Disabled") parameters['bins_method'].on_change(on_bins_method_change) parameters['population_method'].on_change(on_population_method_change) parameters['neighbors_method'].on_change(on_neighbors_method_change) return parameters
def __init__(self, window_provider, data_controller): title = "Plot data" super().__init__(title, window_provider) self.data_controller = data_controller def window_provider(title): return self.window.internal_renderer self.form = FormController(window_provider) def datafile_options_provider(): datafiles = self.s.get('datafiles') datafile_options = {} for d in datafiles: datafile_options[d] = d return datafile_options x_axis = Section("X Axis", Select(True, data_controller.get_x_axis_options())) self.form.add_element('x', x_axis) y_axis = Section("Y Axis", Select(True, data_controller.get_y_axis_options())) self.form.add_element('y', y_axis) style = Section( "Style", Select(True, { 'lines': 'Lines', 'dots': "Dots", 'bars': "Bars" })) self.form.add_element('style', style) cancel = self.form.get_button('cancel', "Cancel", self.remove) submit = self.form.get_button('submit', "Plot", self.submit) self.form.set_action_button('cancel', cancel) self.form.set_action_button('submit', submit) self.form.add_element('buttons', DoubleSection(submit, cancel)) self.form.start()
def __init__(self, window_provider, document_provider, window_options={}): super().__init__(None, window_provider) self.window_options = window_options self.document_provider = document_provider def back_window_provider(title): return self.window.internal_renderer.popup(3, 4 + len("Back"), 'top', title) back = Button("Back", back_window_provider, self.on_back) def viewer_window_provider(title): return Window(None, -3, -1, 3, 0, self.window.internal_renderer) self.document_viewer = DocumentViewer(viewer_window_provider) self.prepare_document() extra_elements = {'back': back} starting_cursor_pos = 'back' if 'plot' in window_options.keys(): def plot_window_provider(title): return Window(title, 3, 4 + len("Plot"), 0, 5 + len("Back"), self.window.internal_renderer) plot = Button("Plot", plot_window_provider, self.on_plot(window_options['plot'])) extra_elements['plot'] = plot starting_cursor_pos = 'plot' if 'sort_by' in window_options.keys(): sort_option_keys = window_options['sort_by'] sort_option_names = Estimators.get_all_input_names() sort_options = {k: sort_option_names[k] for k in sort_option_keys} select = Select(False, sort_options, 0) section = Section("Sort by: ", select) def on_select_change(old_value, new_value, is_valid): parameters = {} if not is_valid else {'sort_by': new_value} self.prepare_document(parameters) select.on_change(on_select_change) select.changed() extra_elements['sort'] = section starting_cursor_pos = 'sort' if len(list(extra_elements.keys())) > 1: self.cursor = VListCursor({ 'buttons': HListCursor(extra_elements), 'document_viewer': self.document_viewer }) self.cursor.current().go_to(starting_cursor_pos) else: self.cursor = CycleCursor({ 'document_viewer': self.document_viewer, 'back': back })
def __init__(self, window_provider): title = "Run repeated experiment" super().__init__(title, window_provider) def window_provider(title): return self.window.internal_renderer self.form = FormController(window_provider) iterations_input = Section("Iterations", Input(True, pint, 100)) self.form.add_element('iterations', iterations_input) self.form.add_element('break1', SectionBreak()) def dist_options_provider(): from datafiles.distribution import all_distributions distributions = {} for d in all_distributions: distributions[d] = d return distributions dist_select = Select(True, dist_options_provider) dist_section = Section("Distribution", dist_select) self.form.add_element('dist', dist_section) self.form.add_element('samples', Section("Samples", Input(True, int, 1500))) self.form.add_element('break1', SectionBreak()) all_params = {} for dist, params in param_map.items(): for p in params: if p not in all_params.keys(): inp = Input(True, myfloat, 1) self.form.add_element(p, Section(p, inp)) all_params[p] = inp self.form.add_element('break2', SectionBreak()) self.form.add_element('loc', Section("Mean", Input(True, myfloat, 0))) self.form.add_element( 'scale', Section("Standard deviation", Input(True, nfloat, 2))) def on_dist_change(old_value, new_value, is_valid=True): for inp in all_params.values(): inp.disappear() if new_value is not None: for p in param_map[new_value]: all_params[p].changed() all_params[p].show() dist_select.on_change(on_dist_change) on_dist_change(None, None) def get_estimator_options(): keys = Estimators.get_all() options = {} for key in keys: options[key] = key.get_name() options['all'] = "All" return options estimator_select = Section("Estimator", Select(True, get_estimator_options)) self.form.add_element('estimator', estimator_select) self.form.add_element('break3', SectionBreak()) min_parameters = Estimators.get_all_inputs(None) max_parameters = Estimators.get_all_inputs(None) names = Estimators.get_all_input_names() simple_parameters = ['bins_method', 'kernel'] range_parameters = ['neighbors', 'bins', 'bin_population', 'bandwidth'] for p in simple_parameters: self.form.add_element(p, Section(names[p], min_parameters[p])) for p in range_parameters: self.form.add_element( p, RangeSection(names[p], min_parameters[p], max_parameters[p])) def on_estimator_change(old_value, new_value, is_valid=True): for inp in min_parameters.values(): inp.disappear() for inp in max_parameters.values(): inp.disappear() if new_value is not None and type(new_value) != str: for p in new_value.get_parameters(): min_parameters[p].show() min_parameters[p].reset() min_parameters[p].changed() max_parameters[p].show() max_parameters[p].reset() cur_value = max_parameters[p].get_value() if type(cur_value) != str and cur_value is not None: max_parameters[p].set_value(cur_value * 100) max_parameters[p].changed() estimator_select.inp.on_change(on_estimator_change) on_estimator_change(None, None) cancel = self.form.get_button('cancel', "Cancel", self.remove) submit = self.form.get_button('submit', "Submit", self.submit) self.form.set_action_button('cancel', cancel) self.form.set_action_button('submit', submit) self.form.add_element('buttons', DoubleSection(submit, cancel)) self.form.start()
def __init__(self, window_provider): title = "Run experiment" super().__init__(title, window_provider) def window_provider(title): return self.window.internal_renderer self.form = FormController(window_provider) def datafile_options_provider(): datafiles = self.s.get('datafiles') datafile_options = {} for d in datafiles: datafile_options[d] = d return datafile_options datafile_select = Section("Datafile", Select(True, datafile_options_provider)) self.form.add_element('datafile', datafile_select) def get_estimator_options(): keys = Estimators.get_all() options = {} for key in keys: options[key] = key.get_name() options['all'] = "All" return options estimator_select = Section("Estimator", Select(True, get_estimator_options)) self.form.add_element('estimator', estimator_select) self.form.add_element('break1', SectionBreak()) min_parameters = Estimators.get_all_inputs(datafile_select) max_parameters = Estimators.get_all_inputs(datafile_select) names = Estimators.get_all_input_names() simple_parameters = ['bins_method', 'kernel'] range_parameters = ['neighbors', 'bins', 'bin_population', 'bandwidth'] for p in simple_parameters: self.form.add_element(p, Section(names[p], min_parameters[p])) for p in range_parameters: self.form.add_element( p, RangeSection(names[p], min_parameters[p], max_parameters[p])) def on_estimator_change(old_value, new_value, is_valid=True): for inp in min_parameters.values(): inp.disappear() for inp in max_parameters.values(): inp.disappear() if new_value is not None and type(new_value) != str: for p in new_value.get_parameters(): min_parameters[p].show() min_parameters[p].reset() min_parameters[p].changed() max_parameters[p].show() max_parameters[p].reset() cur_value = max_parameters[p].get_value() if type(cur_value) != str and cur_value is not None: max_parameters[p].set_value(cur_value * 100) max_parameters[p].changed() estimator_select.inp.on_change(on_estimator_change) on_estimator_change(None, None) cancel = self.form.get_button('cancel', "Cancel", self.remove) submit = self.form.get_button('submit', "Submit", self.submit) self.form.set_action_button('cancel', cancel) self.form.set_action_button('submit', submit) self.form.add_element('buttons', DoubleSection(submit, cancel)) self.form.start()
def __init__(self, window_provider): title = "Run estimator" super().__init__(title, window_provider) def window_provider(title): return self.window.internal_renderer self.form = FormController(window_provider) def datafile_options_provider(): datafiles = self.s.get('datafiles') datafile_options = {} for d in datafiles: datafile_options[d] = d return datafile_options datafile_select = Section("Datafile", Select(True, datafile_options_provider)) self.form.add_element('datafile', datafile_select) def get_estimator_options(): keys = estimators.get_all() options = {} for key in keys: options[key] = key.get_name() return options estimator_select = Select(True, get_estimator_options) estimator_section = Section("Estimator", estimator_select) self.form.add_element('estimator', estimator_section) self.form.add_element('break1', SectionBreak()) parameters = estimators.get_all_inputs(datafile_select) names = estimators.get_all_input_names() for p in parameters.keys(): self.form.add_element(p, Section(names[p], parameters[p])) def on_estimator_change(old_value, new_value, is_valid=True): for inp in parameters.values(): inp.disappear() if new_value is not None: for p in new_value.get_parameters(): parameters[p].changed() parameters[p].show() estimator_select.on_change(on_estimator_change) on_estimator_change(None, None) cancel = self.form.get_button('cancel', "Cancel", self.remove) submit = self.form.get_button('submit', "Submit", self.submit) self.form.set_action_button('cancel', cancel) self.form.set_action_button('submit', submit) self.form.add_element('buttons', DoubleSection(submit, cancel)) self.form.start()