def build_right_box(self): """Construct the right hand box to pack into the main model-free box. @return: The right hand box element containing all model-free GUI elements (excluding the bitmap) to pack into the main model-free box. @rtype: wx.BoxSizer instance """ # Use a vertical packing of elements. box = wx.BoxSizer(wx.VERTICAL) # Add the frame title. self.add_title(box, "Model-free analysis") # Display the data pipe. Text_ctrl(box, self, text="The data pipe bundle:", default=self.data.pipe_bundle, tooltip="This is the data pipe bundle associated with this analysis.", editable=False, width_text=self.width_text, width_button=self.width_button, spacer=self.spacer_horizontal) # Add the results directory GUI element. self.field_results_dir = Text_ctrl(box, self, text="Results directory:", icon=fetch_icon('oxygen.actions.document-open-folder', "16x16"), default=self.data.save_dir, tooltip="The directory in which all automatically created files will be saved.", tooltip_button="Select the results directory.", fn=self.results_directory, button=True, width_text=self.width_text, width_button=self.width_button, spacer=self.spacer_horizontal) # Add the spin GUI element. self.add_spin_systems(box, self) # Add the relaxation data list GUI element, with spacing. box.AddSpacer(10) self.relax_data = Relax_data_list(gui=self.gui, parent=self, box=box, id=str(self.data_index)) box.AddSpacer(10) # Add the value.set buttons. self.add_values(box) box.AddSpacer(10) # Add the local tau_m models GUI element, with spacing. self.local_tm_model_field = Local_tm_list(self, box) self.local_tm_model_field.set_value(self.data.local_tm_models) # Add the model-free models GUI element, with spacing. self.mf_model_field = Mf_list(self, box) self.mf_model_field.set_value(self.data.mf_models) # The optimisation settings. self.grid_inc = Spin_ctrl(box, self, text="Grid search increments:", default=11, min=1, max=100, tooltip="This is the number of increments per dimension of the grid search performed prior to numerical optimisation.", width_text=self.width_text, width_button=self.width_button, spacer=self.spacer_horizontal) self.mc_sim_num = Spin_ctrl(box, self, text="Monte Carlo simulation number:", default=500, min=1, max=100000, tooltip="This is the number of Monte Carlo simulations performed for error propagation and analysis.", width_text=self.width_text, width_button=self.width_button, spacer=self.spacer_horizontal) # Add maximum iteration selector. self.max_iter = Spin_ctrl(box, self, text="Maximum iterations:", default=self.data.max_iter, tooltip="The maximum number of iterations for the protocol. This is the limit for the global looping over the optimisation of the model-free models, model elimination, model selection and then optimisation of the diffusion tensor.", min=25, max=100, width_text=self.width_text, width_button=self.width_button, spacer=self.spacer_horizontal) # The calculation mode. self.mode = Text_ctrl(box, self, text="Protocol mode:", default='Fully automated', tooltip="Select if the dauvergne_protocol analysis will be fully automated or whether the individual global models will be optimised separately.", tooltip_button="Open the protocol mode selection window.", icon=fetch_icon('oxygen.actions.system-run', "16x16"), fn=self.mode_dialog, editable=False, button=True, width_text=self.width_text, width_button=self.width_button, spacer=self.spacer_horizontal) # Stretchable spacing (with a minimal space). box.AddSpacer(30) box.AddStretchSpacer() # Add the execution GUI element. self.button_exec_relax = self.add_execute_analysis(box, self.execute) # Return the box. return box