def _init_models(self): """ Descript. : """ self._char = queue_model_objects.Characterisation() self._char_params = self._char.characterisation_parameters self._processing_parameters = queue_model_objects.ProcessingParameters( ) self._set_space_group(self._processing_parameters.space_group) if self._beamline_setup_hwobj is not None: self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_char_acq_parameters() self._char_params = self._beamline_setup_hwobj.\ get_default_characterisation_parameters() else: self._acquisition_parameters = queue_model_objects.AcquisitionParameters( ) self._path_template.reference_image_prefix = 'ref' # The num images drop down default value is 1 # we would like it to be 2 self._acquisition_parameters.num_images = 2 self._char.characterisation_software =\ queue_model_enumerables.COLLECTION_ORIGIN.EDNA self._path_template.num_files = 2 self._path_template.compression = False self._acquisition_parameters.shutterless = False
def _init_models(self): """ Descript. : """ self._char = queue_model_objects.Characterisation() self._char_params = self._char.characterisation_parameters self._processing_parameters = queue_model_objects.ProcessingParameters( ) if self._beamline_setup_hwobj is not None: self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_char_acq_parameters() self._char_params = self._beamline_setup_hwobj.\ get_default_characterisation_parameters() try: transmission = self._beamline_setup_hwobj.transmission_hwobj.getAttFactor( ) transmission = round(float(transmission), 1) except AttributeError: transmission = 0 try: resolution = self._beamline_setup_hwobj.resolution_hwobj.getPosition( ) resolution = round(float(resolution), 3) except AttributeError: resolution = 0 try: energy = self._beamline_setup_hwobj.energy_hwobj.getCurrentEnergy( ) energy = round(float(energy), 4) except AttributeError: energy = 0 self._acquisition_parameters.resolution = resolution self._acquisition_parameters.energy = energy self._acquisition_parameters.transmission = transmission else: self._acquisition_parameters = queue_model_objects.AcquisitionParameters( ) return self._path_template.reference_image_prefix = 'ref' # The num images drop down default value is 1 # we would like it to be 2 self._acquisition_parameters.num_images = 2 self._char.characterisation_software =\ queue_model_enumerables.COLLECTION_ORIGIN.EDNA self._path_template.num_files = 2 self._acquisition_parameters.shutterless = False
def _create_task(self, sample, shape): """ Descript. : """ tasks = [] if not shape or not isinstance(shape, GraphicsItemPoint): cpos = queue_model_objects.CentredPosition() cpos.snapshot_image = self._graphics_manager_hwobj.get_scene_snapshot( ) else: # Shapes selected and sample is mounted, get the # centred positions for the shapes snapshot = self._graphics_manager_hwobj.\ get_scene_snapshot(shape) cpos = copy.deepcopy(shape.get_centred_position()) cpos.snapshot_image = snapshot char_params = copy.deepcopy(self._char_params) acq = self._create_acq(sample) dc = queue_model_objects.\ DataCollection([acq], sample.crystals[0], self._processing_parameters) # Reference images for characterisations should be taken 90 deg apart # this is achived by setting overap to -89 acq.acquisition_parameters.overlap = -89 acq.acquisition_parameters.centred_position = cpos dc.acquisitions[0] = acq dc.experiment_type = queue_model_enumerables.EXPERIMENT_TYPE.EDNA_REF dc.run_processing_parallel = False char = queue_model_objects.Characterisation(dc, char_params) char.set_name(dc.acquisitions[0].\ path_template.get_prefix()) char.set_number(dc.acquisitions[0].\ path_template.run_number) char.run_characterisation = self._char_widget.characterisation_gbox.isChecked( ) char.wait_result = self._char_widget.wait_result_cbx.isChecked() char.run_diffraction_plan = self._char_widget.execute_plan_cbx.isChecked( ) tasks.append(char) self._path_template.run_number += 1 return tasks
def _create_task(self, sample, shape): tasks = [] if not shape: cpos = queue_model_objects.CentredPosition() cpos.snapshot_image = self._shape_history.get_snapshot([]) else: # Shapes selected and sample is mounted, get the # centred positions for the shapes if isinstance(shape, shape_history.Point): snapshot = self._shape_history.\ get_snapshot([shape.qub_point]) #cpos = shape.get_centred_positions()[0] cpos = copy.deepcopy(shape.get_centred_positions()[0]) cpos.snapshot_image = snapshot char_params = copy.deepcopy(self._char_params) acq = self._create_acq(sample) dc = queue_model_objects.\ DataCollection([acq], sample.crystals[0], self._processing_parameters) # Reference images for characterisations should be taken 90 deg apart # this is achived by setting overap to -89 acq.acquisition_parameters.overlap = -89 acq.acquisition_parameters.centred_position = cpos dc.acquisitions[0] = acq dc.experiment_type = queue_model_enumerables.EXPERIMENT_TYPE.EDNA_REF char = queue_model_objects.Characterisation(dc, char_params) char.set_name(dc.acquisitions[0].\ path_template.get_prefix()) char.set_number(dc.acquisitions[0].\ path_template.run_number) tasks.append(char) self._path_template.run_number += 1 return tasks
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 _create_task(self, sample, shape): tasks = [] if not shape: cpos = queue_model_objects.CentredPosition() cpos.snapshot_image = self._shape_history.get_snapshot([]) else: # Shapes selected and sample is mounted, get the # centred positions for the shapes if isinstance(shape, shape_history.Point): snapshot = self._shape_history.\ get_snapshot([shape.qub_point]) cpos = shape.get_centred_positions()[0] cpos.snapshot_image = snapshot char_params = copy.deepcopy(self._char_params) # Acquisition for start position acq = queue_model_objects.Acquisition() acq.acquisition_parameters = \ copy.deepcopy(self._acquisition_parameters) acq.acquisition_parameters.collect_agent = \ queue_model_enumerables.COLLECTION_ORIGIN.MXCUBE acq.acquisition_parameters.centred_position = cpos acq.path_template = copy.deepcopy(self._path_template) if self._beamline_setup_hwobj.in_plate_mode(): acq.acquisition_parameters.take_snapshots = False else: acq.acquisition_parameters.take_snapshots = True if '<sample_name>' in acq.path_template.directory: name = sample.get_name().replace(':', '-') acq.path_template.directory = acq.path_template.directory.\ replace('<sample_name>', name) acq.path_template.process_directory = acq.path_template.process_directory.\ replace('<sample_name>', name) if '<acronym>-<name>' in acq.path_template.base_prefix: acq.path_template.base_prefix = self.get_default_prefix(sample) acq.path_template.run_numer = self._beamline_setup_hwobj.queue_model_hwobj.\ get_next_run_number(acq.path_template) processing_parameters = copy.deepcopy(self._processing_parameters) data_collection = queue_model_objects.\ DataCollection([acq], sample.crystals[0], self._processing_parameters) # Referance images for characterisations should be taken 90 deg apart # this is achived by setting overap to -89 acq.acquisition_parameters.overlap = -89 data_collection.acquisitions[0] = acq data_collection.experiment_type = queue_model_enumerables.EXPERIMENT_TYPE.EDNA_REF char = queue_model_objects.Characterisation(data_collection, char_params) char.set_name(data_collection.acquisitions[0].\ path_template.get_prefix()) char.set_number(data_collection.acquisitions[0].\ path_template.run_number) tasks.append(char) self._path_template.run_number += 1 return tasks