def __init__(self, *args, **kwargs): super(RefinementResultsController, self).__init__(*args, **kwargs) self.parspace_gen = ParameterSpaceGenerator() density = 199 for var, val in self.model.options.iteritems(): if var == "num_samples": density = val self.parspace_gen.initialize(self.model.ranges, density)
def generate_images(self, output_dir="", density=200): """ Generate the parameter space plots """ samples = self.refiner.get_plot_samples() labels = self.refiner.get_plot_labels() truths = self.refiner.history.best_solution psg = ParameterSpaceGenerator() psg.initialize(self.refiner.ranges, 199) for sample in samples: psg.record(sample[:-1], sample[-1]) psg.plot_images(self.view.figure, truths, labels[:-1])
class RefinementResultsController(DialogController): """ A controller for a RefinementContext object that keeps track of the solutions and residuals generated by the refinement algorithm. This allows to show a nice dialog with the end results and some graphs about the parameter space. """ register_lazy = False auto_adapt = True auto_adapt_included = [ "initial_residual", "last_residual", "best_residual" ] solutions = None # ------------------------------------------------------------ # Initialisation and other internals # ------------------------------------------------------------ def __init__(self, *args, **kwargs): super(RefinementResultsController, self).__init__(*args, **kwargs) self.parspace_gen = ParameterSpaceGenerator() density = 199 for var, val in self.model.options.iteritems(): if var == "num_samples": density = val self.parspace_gen.initialize(self.model.ranges, density) # ------------------------------------------------------------ # Notifications of observable properties # ------------------------------------------------------------ @Controller.observe("solution_added", signal=True) def notif_solution_added(self, model, prop_name, info): if self.model.mixture.refiner.make_psp_plots: new_solution, new_residual = info.arg self.parspace_gen.record(new_solution, new_residual) # ------------------------------------------------------------ # GTK Signal handlers # ------------------------------------------------------------ def on_cancel(self): self.view.hide() self.parent.parent.view.parent.show() def on_btn_initial_clicked(self, event): self.model.apply_initial_solution() self.model.mixture.refiner.delete_context() self.on_cancel() return True def on_btn_best_clicked(self, event): self.model.apply_best_solution() self.model.mixture.refiner.delete_context() self.on_cancel() return True def on_btn_last_clicked(self, event): self.model.apply_last_solution() self.model.mixture.refiner.delete_context() self.on_cancel() return True # ------------------------------------------------------------ # Methods & Functions # ------------------------------------------------------------ def generate_images(self, output_dir="", density=200): """ Generate the parameter space plots """ self.parspace_gen.plot_images( figure=self.view.figure, centroid=self.model.best_solution, labels=[ref_prop.title for ref_prop in self.model.ref_props], density=density ) def clear_images(self): self.parspace_gen.clear_image(figure=self.view.figure) pass # end of class