def get_default_characterisation_parameters(self): """ :returns: A CharacterisationsParameters object with default parameters. """ input_fname = self.data_analysis_hwobj.edna_default_file hwr_dir = HardwareRepository().getHardwareRepositoryPath() with open(os.path.join(hwr_dir, input_fname), 'r') as f: edna_default_input = ''.join(f.readlines()) edna_input = XSDataInputMXCuBE.parseString(edna_default_input) diff_plan = edna_input.getDiffractionPlan() #edna_beam = edna_input.getExperimentalCondition().getBeam() edna_sample = edna_input.getSample() char_params = queue_model_objects.CharacterisationParameters() char_params.experiment_type = queue_model_enumerables.EXPERIMENT_TYPE.OSC # Optimisation parameters char_params.use_aimed_resolution = False char_params.aimed_resolution = diff_plan.getAimedResolution().getValue( ) char_params.use_aimed_multiplicity = False #char_params.aimed_multiplicity = diff_plan.getAimedMultiplicity().getValue() char_params.aimed_i_sigma = diff_plan.getAimedIOverSigmaAtHighestResolution( ).getValue() char_params.aimed_completness = diff_plan.getAimedCompleteness( ).getValue() char_params.strategy_complexity = 0 char_params.induce_burn = False char_params.use_permitted_rotation = False char_params.permitted_phi_start = 0.0 char_params.permitted_phi_end = 360 char_params.low_res_pass_strat = False # Crystal char_params.max_crystal_vdim = edna_sample.getSize().getY().getValue() char_params.min_crystal_vdim = edna_sample.getSize().getZ().getValue() char_params.max_crystal_vphi = 90 char_params.min_crystal_vphi = 0.0 char_params.space_group = "" # Characterisation type char_params.use_min_dose = True char_params.use_min_time = False char_params.min_dose = 30.0 char_params.min_time = 0.0 char_params.account_rad_damage = True char_params.auto_res = True char_params.opt_sad = False char_params.sad_res = 0.5 char_params.determine_rad_params = False char_params.burn_osc_start = 0.0 char_params.burn_osc_interval = 3 # Radiation damage model char_params.rad_suscept = edna_sample.getSusceptibility().getValue() char_params.beta = 1 char_params.gamma = 0.06 return char_params
def add_characterisation(node_id, task): """ Adds a data characterisation task to the sample with id: <id> :param int id: id of the sample to which the task belongs :param dict task: Task data (parameters) :returns: The queue id of the Data collection :rtype: int """ sample_model, sample_entry = get_entry(node_id) params = task['parameters'] refdc_model, refdc_entry = _create_dc(task) refdc_model.set_name('refdc') char_params = qmo.CharacterisationParameters().set_from_dict(params) char_model = qmo.Characterisation(refdc_model, char_params) char_entry = qe.CharacterisationGroupQueueEntry(Mock(), char_model) char_entry.queue_model_hwobj = mxcube.queue # Set the characterisation and reference collection parameters set_char_params(char_model, char_entry, task) # A characterisation has two TaskGroups one for the characterisation itself # and its reference collection and one for the resulting diffraction plans. # But we only create a reference group if there is a result ! refgroup_model = qmo.TaskGroup() mxcube.queue.add_child(sample_model, refgroup_model) mxcube.queue.add_child(refgroup_model, char_model) refgroup_entry = qe.TaskGroupQueueEntry(Mock(), refgroup_model) refgroup_entry.set_enabled(True) sample_entry.enqueue(refgroup_entry) refgroup_entry.enqueue(char_entry) char_model.set_enabled(task['checked']) char_entry.set_enabled(task['checked']) return char_model._node_id
def __init__(self, parent=None, name="parameter_widget"): """ Descript. : """ QtGui.QWidget.__init__(self, parent) if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._char = None self._char_params = queue_model_objects.CharacterisationParameters() self._char_params_mib = DataModelInputBinder(self._char_params) self._tree_view_item = None self.previous_energy = None self.add_dc_cb = None # Graphic elements ---------------------------------------------------- rone_widget = QtGui.QWidget(self) self.reference_img_widget = ReferenceImageWidget(rone_widget) self.acq_widget = self.reference_img_widget.acq_widget self.path_widget = self.reference_img_widget.path_widget self.position_widget = uic.loadUi( os.path.join(os.path.dirname(__file__), 'ui_files/Qt4_snapshot_widget_layout.ui')) self.position_widget.setMinimumSize(450, 340) rtwo_widget = QtGui.QWidget(self) self.char_type_widget = CharTypeWidget(rtwo_widget) self.routine_dc_widget = self.char_type_widget.routine_dc_page self.sad_widget = self.char_type_widget.sad_page self.rad_dmg_char_widget = self.char_type_widget.rad_damage_page self.opt_parameters_widget = OptimisationParametersWidgetLayout(self) rtree_widget = QtGui.QWidget(self) self.rad_dmg_widget = uic.loadUi( os.path.join( os.path.dirname(__file__), 'ui_files/Qt4_radiation_damage_model_widget_layout.ui')) self.vertical_dimension_widget = uic.loadUi( os.path.join( os.path.dirname(__file__), 'ui_files/Qt4_vertical_crystal_dimension_widget_layout.ui')) # Layout -------------------------------------------------------------- rone_widget_layout = QtGui.QHBoxLayout(self) rone_widget_layout.addWidget(self.reference_img_widget) rone_widget_layout.addWidget(self.position_widget) #rone_widget_layout.addStretch(0) rone_widget_layout.setSpacing(2) rone_widget_layout.setContentsMargins(0, 0, 0, 0) rone_widget.setLayout(rone_widget_layout) rtwo_widget_layout = QtGui.QHBoxLayout(self) rtwo_widget_layout.addWidget(self.char_type_widget) rtwo_widget_layout.addWidget(self.opt_parameters_widget) rtwo_widget_layout.addStretch(0) rtwo_widget_layout.setSpacing(2) rtwo_widget_layout.setContentsMargins(0, 0, 0, 0) rtwo_widget.setLayout(rtwo_widget_layout) rtree_widget_layout = QtGui.QHBoxLayout(self) rtree_widget_layout.addWidget(self.rad_dmg_widget) rtree_widget_layout.addWidget(self.vertical_dimension_widget) rtree_widget_layout.addStretch(0) rtree_widget_layout.setSpacing(2) rtree_widget_layout.setContentsMargins(0, 0, 0, 0) rtree_widget.setLayout(rtree_widget_layout) _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(rone_widget) _main_vlayout.addWidget(rtwo_widget) _main_vlayout.addWidget(rtree_widget) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(0, 0, 0, 0) self.setLayout(_main_vlayout) # SizePolicies ------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.toggle_permitted_range(self.opt_parameters_widget.\ opt_param_widget.permitted_range_cbx.isChecked()) self.opt_parameters_widget.opt_param_widget.permitted_range_cbx.\ toggled.connect(self.toggle_permitted_range) # Other --------------------------------------------------------------- self._char_params_mib.bind_value_update( 'min_dose', self.routine_dc_widget.dose_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'min_time', self.routine_dc_widget.time_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'use_min_dose', self.routine_dc_widget.min_dose_radio, bool, None) self._char_params_mib.bind_value_update( 'use_min_time', self.routine_dc_widget.min_time_radio, bool, None) self._char_params_mib.bind_value_update( 'account_rad_damage', self.routine_dc_widget.radiation_damage_cbx, bool, None) self._char_params_mib.bind_value_update( 'auto_res', self.sad_widget.automatic_resolution_radio, bool, None) self._char_params_mib.bind_value_update( 'sad_res', self.sad_widget.sad_resolution_ledit, float, QtGui.QDoubleValidator(0.5, 20, 3, self)) self._char_params_mib.bind_value_update( 'opt_sad', self.sad_widget.optimised_sad_cbx, bool, None) self._char_params_mib.bind_value_update( 'determine_rad_params', self.rad_dmg_char_widget.rad_damage_cbx, bool, None) self._char_params_mib.bind_value_update( 'burn_osc_start', self.rad_dmg_char_widget.burn_osc_start_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'burn_osc_interval', self.rad_dmg_char_widget.burn_osc_interval_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'use_aimed_resolution', self.opt_parameters_widget.opt_param_widget.maximum_res_cbx, bool, None) self._char_params_mib.bind_value_update( 'use_aimed_multiplicity', self.opt_parameters_widget.opt_param_widget.aimed_mult_cbx, bool, None) self._char_params_mib.bind_value_update( 'aimed_resolution', self.opt_parameters_widget.opt_param_widget.maximum_res_ledit, float, QtGui.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update(\ 'aimed_multiplicity', self.opt_parameters_widget.opt_param_widget.aimed_mult_ledit, float, QtGui.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'aimed_i_sigma', self.opt_parameters_widget.opt_param_widget.i_over_sigma_ledit, float, QtGui.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'aimed_completness', self.opt_parameters_widget.opt_param_widget.aimed_comp_ledit, float, QtGui.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'strategy_complexity', self.opt_parameters_widget.opt_param_widget.start_comp_cbox, int, None) self._char_params_mib.bind_value_update( 'use_permitted_rotation', self.opt_parameters_widget.opt_param_widget.permitted_range_cbx, bool, None) self._char_params_mib.bind_value_update( 'permitted_phi_start', self.opt_parameters_widget.opt_param_widget.phi_start_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'permitted_phi_end', self.opt_parameters_widget.opt_param_widget.phi_end_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'low_res_pass_strat', self.opt_parameters_widget.opt_param_widget.low_res_pass_cbx, bool, None) self._char_params_mib.bind_value_update( 'rad_suscept', self.rad_dmg_widget.sensetivity_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'beta', self.rad_dmg_widget.beta_over_gray_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'gamma', self.rad_dmg_widget.gamma_over_gray_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'max_crystal_vdim', self.vertical_dimension_widget.max_vdim_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'min_crystal_vdim', self.vertical_dimension_widget.min_vdim_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'min_crystal_vphi', self.vertical_dimension_widget.min_vphi_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'max_crystal_vphi', self.vertical_dimension_widget.max_vphi_ledit, float, QtGui.QDoubleValidator(0.0, 1000, 2, self)) #self._char_params_mib.bind_value_update('space_group', # self.vertical_dimension_widget.space_group_ledit, # str, # None) self.vertical_dimension_widget.space_group_ledit.\ addItems(queue_model_enumerables.XTAL_SPACEGROUPS) self.char_type_widget.charact_type_tbox.currentChanged.connect(\ self.update_char_type) self.rad_dmg_char_widget.rad_damage_cbx.toggled.connect(\ self.enable_opt_parameters_widget) self.opt_parameters_widget.opt_param_widget.maximum_res_cbx.\ toggled.connect(self.enable_maximum_res_ledit) self.opt_parameters_widget.opt_param_widget.aimed_mult_cbx.\ toggled.connect(self.enable_aimed_mult_ledit) self.path_widget.data_path_layout.prefix_ledit.textChanged.\ connect(self._prefix_ledit_change) self.path_widget.data_path_layout.run_number_ledit.textChanged.\ connect(self._run_number_ledit_change) self.vertical_dimension_widget.space_group_ledit.activated.\ connect(self._space_group_change)
def __init__(self, parent=None, name="parameter_widget"): qt.QWidget.__init__(self, parent, name) # # Private members # self._char = None self._char_params = queue_model_objects.CharacterisationParameters() self._char_params_mib = DataModelInputBinder(self._char_params) self._tree_view_item = None self.previous_energy = None self.add_dc_cb = None self.char_type_widget = CharTypeWidget(self) self.routine_dc_widget = self.char_type_widget.routine_dc_page self.sad_widget = self.char_type_widget.sad_page self.rad_dmg_char_widget = self.char_type_widget.rad_damage_page self.reference_img_widget = ReferenceImageWidget(self) self.acq_widget = self.reference_img_widget.acq_widget self.path_widget = self.reference_img_widget.path_widget self.opt_parameters_widget = OptimisationParametersWidgetLayout(self) self.rad_dmg_widget = RadiationDamageModelWidgetLayout(self) self.position_widget = SnapshotWidgetLayout(self) self.vertical_dimension_widget = VerticalCrystalDimensionWidgetLayout( self) # Fix the widths of the widgets to make the layout look nicer, # and beacuse the qt layout engine is so tremendosly good. self.opt_parameters_widget.setFixedWidth(600) self.reference_img_widget.setFixedWidth(772) # # Layout # v_layout = qt.QVBoxLayout(self, 11, 15, "main_layout") rone_hlayout = qt.QHBoxLayout(v_layout, 15, "rone") rone_cone_vlayout = qt.QVBoxLayout(rone_hlayout, 15, "rone_cone") rtwo_hlayout = qt.QHBoxLayout(v_layout, 15, "rtwo") rthree_hlayout = qt.QHBoxLayout(v_layout, 15, "rtwo") rone_hlayout.addWidget(self.position_widget) rone_cone_vlayout.addWidget(self.reference_img_widget) rone_hlayout.addStretch() rtwo_hlayout.addWidget(self.char_type_widget) rtwo_hlayout.addWidget(self.opt_parameters_widget) rtwo_hlayout.addStretch(10) v_layout.addStretch(10) rthree_hlayout.addWidget(self.rad_dmg_widget) rthree_hlayout.addWidget(self.vertical_dimension_widget) rthree_hlayout.addStretch(10) v_layout.addStretch(10) # # Widget logic # self.toggle_permitted_range(self.\ opt_parameters_widget.permitted_range_cbx.isOn()) qt.QObject.connect(self.opt_parameters_widget.permitted_range_cbx, qt.SIGNAL("toggled(bool)"), self.toggle_permitted_range) self._char_params_mib.bind_value_update( 'min_dose', self.routine_dc_widget.dose_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'min_time', self.routine_dc_widget.time_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'use_min_dose', self.routine_dc_widget.min_dose_radio, bool, None) self._char_params_mib.bind_value_update( 'use_min_time', self.routine_dc_widget.min_time_radio, bool, None) self._char_params_mib.bind_value_update( 'account_rad_damage', self.routine_dc_widget.radiation_damage_cbx, bool, None) self._char_params_mib.bind_value_update( 'auto_res', self.sad_widget.automatic_resolution_radio, bool, None) self._char_params_mib.bind_value_update( 'opt_sad', self.sad_widget.optimal_sad_radio, bool, None) self._char_params_mib.bind_value_update( 'determine_rad_params', self.rad_dmg_char_widget.rad_damage_cbx, bool, None) self._char_params_mib.bind_value_update( 'burn_osc_start', self.rad_dmg_char_widget.burn_osc_start_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'burn_osc_interval', self.rad_dmg_char_widget.burn_osc_interval_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'use_aimed_resolution', self.opt_parameters_widget.maximum_res_cbx, bool, None) self._char_params_mib.bind_value_update( 'use_aimed_multiplicity', self.opt_parameters_widget.aimed_mult_cbx, bool, None) self._char_params_mib.bind_value_update( 'aimed_resolution', self.opt_parameters_widget.maximum_res_ledit, float, qt.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'aimed_multiplicity', self.opt_parameters_widget.aimed_mult_ledit, float, qt.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'aimed_i_sigma', self.opt_parameters_widget.i_over_sigma_ledit, float, qt.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'aimed_completness', self.opt_parameters_widget.aimed_comp_ledit, float, qt.QDoubleValidator(0.01, 1000, 2, self)) self._char_params_mib.bind_value_update( 'strategy_complexity', self.opt_parameters_widget.start_comp_cbox, int, None) self._char_params_mib.bind_value_update( 'use_permitted_rotation', self.opt_parameters_widget.permitted_range_cbx, bool, None) self._char_params_mib.bind_value_update( 'permitted_phi_start', self.opt_parameters_widget.phi_start_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'permitted_phi_end', self.opt_parameters_widget.phi_end_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'low_res_pass_strat', self.opt_parameters_widget.low_res_pass_cbx, bool, None) self._char_params_mib.bind_value_update( 'rad_suscept', self.rad_dmg_widget.sensetivity_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'beta', self.rad_dmg_widget.beta_over_gray_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'gamma', self.rad_dmg_widget.gamma_over_gray_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'max_crystal_vdim', self.vertical_dimension_widget.max_vdim_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'min_crystal_vdim', self.vertical_dimension_widget.min_vdim_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'min_crystal_vphi', self.vertical_dimension_widget.min_vphi_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) self._char_params_mib.bind_value_update( 'max_crystal_vphi', self.vertical_dimension_widget.max_vphi_ledit, float, qt.QDoubleValidator(0.0, 1000, 2, self)) #self._char_params_mib.bind_value_update('space_group', # self.vertical_dimension_widget.space_group_ledit, # str, # None) self.vertical_dimension_widget.space_group_ledit.\ insertStrList(queue_model_enumerables.XTAL_SPACEGROUPS) qt.QObject.connect(self.char_type_widget.charact_type_tbox, qt.SIGNAL("currentChanged(int)"), self.update_char_type) qt.QObject.connect(self.rad_dmg_char_widget.rad_damage_cbx, qt.SIGNAL("toggled(bool)"), self.enable_opt_parameters_widget) qt.QObject.connect(self.opt_parameters_widget.maximum_res_cbx, qt.SIGNAL("toggled(bool)"), self.enable_maximum_res_ledit) qt.QObject.connect(self.opt_parameters_widget.aimed_mult_cbx, qt.SIGNAL("toggled(bool)"), self.enable_aimed_mult_ledit) qt.QObject.connect( self.path_widget.data_path_widget_layout.child('prefix_ledit'), qt.SIGNAL("textChanged(const QString &)"), self._prefix_ledit_change) qt.QObject.connect( self.path_widget.data_path_widget_layout.child('run_number_ledit'), qt.SIGNAL("textChanged(const QString &)"), self._run_number_ledit_change) qt.QObject.connect(self.vertical_dimension_widget.space_group_ledit, qt.SIGNAL("activated(int)"), self._space_group_change) qt.QObject.connect(qt.qApp, qt.PYSIGNAL('tab_changed'), self.tab_changed)