def _create_task(self, sample, shape): """Creates tasks based on selected grids :param sample: selected sample object :type sample: SampleQueueItem :param shape: selected shape :type shape: Qt4_GraphicsLib.GraphicsItem """ tasks = [] selected_grids = self.get_selected_grids() if len(selected_grids) == 0: selected_grids.append(self._graphics_manager_hwobj.\ update_auto_grid()) for grid in selected_grids: grid.set_snapshot(self._graphics_manager_hwobj.\ get_scene_snapshot(grid)) grid_properties = grid.get_properties() acq = self._create_acq(sample) acq.acquisition_parameters.centred_position = \ grid.get_centred_position() acq.acquisition_parameters.mesh_range = \ [grid_properties["dx_mm"], grid_properties["dy_mm"]] acq.acquisition_parameters.num_lines = \ grid_properties["num_lines"] acq.acquisition_parameters.num_images = \ grid_properties["num_lines"] * \ grid_properties["num_images_per_line"] grid.set_osc_range(acq.acquisition_parameters.osc_range) processing_parameters = deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([acq], sample.crystals[0], processing_parameters) dc.set_name(acq.path_template.get_prefix()) dc.set_number(acq.path_template.run_number) dc.set_experiment_type(EXPERIMENT_TYPE.MESH) dc.set_requires_centring(False) dc.grid = grid exp_type = str(self._advanced_methods_widget.\ method_combo.currentText()) if exp_type == "MeshScan": dc.run_processing_parallel = "MeshScan" tasks.append(dc) elif exp_type == "XrayCentering": xray_centering = queue_model_objects.XrayCentering(\ dc, sample.crystals[0]) dc.run_processing_parallel = "XrayCentering" tasks.append(xray_centering) self._path_template.run_number += 1 return tasks
def _create_dc(task): """ Creates a data collection model and its corresponding queue entry from a dict with collection parameters. :param dict task: Collection parameters :returns: The tuple (model, entry) :rtype: Tuple """ dc_model = qmo.DataCollection() dc_entry = qe.DataCollectionQueueEntry(Mock(), dc_model) return dc_model, dc_entry
def create_dc(self, sample, run_number=None, start_image=None, num_images=None, osc_start=None, sc=None, cpos=None, inverse_beam=False): """ Descript. : """ tasks = [] # Acquisition for start position acq = self._create_acq(sample) if run_number: acq.path_template.run_number = run_number if start_image: acq.acquisition_parameters.first_image = start_image acq.path_template.start_num = start_image if num_images: acq.acquisition_parameters.num_images = num_images acq.path_template.num_files = num_images if osc_start: acq.acquisition_parameters.osc_start = osc_start if inverse_beam: acq.acquisition_parameters.inverse_beam = False acq.acquisition_parameters.centred_position = cpos processing_parameters = copy.deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([acq], sample.crystals[0], processing_parameters) dc.set_name(acq.path_template.get_prefix()) dc.set_number(acq.path_template.run_number) dc.experiment_type = queue_model_enumerables.EXPERIMENT_TYPE.NATIVE dc.run_processing_after = self._processing_widget.processing_widget.\ run_processing_after_cbox.isChecked() dc.run_processing_parallel = self._processing_widget.processing_widget.\ run_processing_parallel_cbox.isChecked() and \ acq.acquisition_parameters.num_images > 19 tasks.append(dc) return tasks
def _create_task(self, sample, shape): data_collections = [] for shape in self.get_selected_lines(): snapshot = self._graphics_manager_hwobj.get_scene_snapshot(shape) # Acquisition for start position start_acq = self._create_acq(sample) start_graphical_point, end_graphical_point = \ shape.get_graphical_points() start_acq.acquisition_parameters.\ centred_position = copy.deepcopy(start_graphical_point.get_centred_position()) start_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot start_acq.path_template.suffix = self._session_hwobj.suffix # Add another acquisition for the end position end_acq = self._create_acq(sample) end_acq.acquisition_parameters.\ centred_position = copy.deepcopy(end_graphical_point.get_centred_position()) end_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot end_acq.path_template.suffix = self._session_hwobj.suffix processing_parameters = copy.deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([start_acq, end_acq], sample.crystals[0], processing_parameters) dc.set_name(start_acq.path_template.get_prefix()) dc.set_number(start_acq.path_template.run_number) dc.set_experiment_type(EXPERIMENT_TYPE.HELICAL) dc.set_requires_centring(False) dc.run_processing_after = self._processing_widget.processing_widget.\ run_processing_after_cbox.isChecked() dc.run_processing_parallel = self._processing_widget.processing_widget.\ run_processing_parallel_cbox.isChecked() data_collections.append(dc) self._path_template.run_number += 1 return data_collections
def _create_task(self, sample, shape): """ Descript. : """ data_collections = [] selected_grids = self.get_selected_grids() if len(selected_grids) == 0: selected_grids.append(self._graphics_manager_hwobj.\ create_automatic_grid()) for shape in selected_grids: shape.set_snapshot(self._graphics_manager_hwobj.\ get_scene_snapshot(shape)) grid_properties = shape.get_properties() acq = self._create_acq(sample) acq.acquisition_parameters.centred_position = \ shape.get_centred_position() acq.acquisition_parameters.mesh_range = \ [grid_properties["dx_mm"], grid_properties["dy_mm"]] acq.acquisition_parameters.num_lines = \ grid_properties["num_lines"] acq.acquisition_parameters.num_images = \ grid_properties["num_lines"] * \ grid_properties["num_images_per_line"] processing_parameters = deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([acq], sample.crystals[0], processing_parameters) dc.set_name(acq.path_template.get_prefix()) dc.set_number(acq.path_template.run_number) dc.set_experiment_type(EXPERIMENT_TYPE.MESH) exp_type = str(self._advanced_methods_widget.method_combo.\ currentText()) advanced = queue_model_objects.Advanced(exp_type, dc, shape, sample.crystals[0]) data_collections.append(advanced) self._path_template.run_number += 1 return data_collections
def _create_task(self, sample, shape): data_collections = [] if isinstance(shape, shape_history.Line): if shape.get_qub_objects() is not None: snapshot = self._shape_history.get_snapshot( shape.get_qub_objects()) else: snapshot = self._shape_history.get_snapshot([]) # Acquisition for start position start_acq = self._create_acq(sample) start_acq.acquisition_parameters.\ centred_position = copy.deepcopy(shape.start_cpos) start_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot start_acq.path_template.suffix = self._session_hwobj.suffix # Add another acquisition for the end position end_acq = self._create_acq(sample) end_acq.acquisition_parameters.\ centred_position = shape.end_cpos end_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot end_acq.path_template.suffix = self._session_hwobj.suffix processing_parameters = copy.deepcopy(self._processing_parameters) dc = qmo.DataCollection([start_acq, end_acq], sample.crystals[0], processing_parameters) dc.set_name(start_acq.path_template.get_prefix()) dc.set_number(start_acq.path_template.run_number) dc.experiment_type = EXPERIMENT_TYPE.HELICAL data_collections.append(dc) self._path_template.run_number += 1 return data_collections
def _create_task(self, sample, shape): """ Descript. : """ data_collections = [] selected_grid_info = None treewidget_item = self.mesh_widget.mesh_treewidget.selectedItem() if treewidget_item is not None: drawing_mgr = self.__list_items[treewidget_item] key = str(treewidget_item.text(0)) selected_grid_info = drawing_mgr._get_grid(key)[0] if selected_grid_info: snapshot = self._graphics_manager.get_snapshot([]) acq = self._create_acq(sample) cpoint = selected_grid_info.get("centred_point") #cpos = self._beamline_setup_hwobj.diffractometer_hwobj.convert_from_obj_to_name(cpoint) acq.acquisition_parameters.centred_position = cpoint acq.acquisition_parameters.mesh_steps = [ selected_grid_info.get("steps_x"), selected_grid_info.get("steps_y") ] acq.acquisition_parameters.mesh_range = [ selected_grid_info.get("dy_mm"), selected_grid_info.get("dx_mm") ] acq.acquisition_parameters.num_images = selected_grid_info.get("steps_x") * \ selected_grid_info.get("steps_y") processing_parameters = deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([acq], sample.crystals[0], processing_parameters) dc.set_name(acq.path_template.get_prefix()) dc.set_number(acq.path_template.run_number) dc.set_grid_id(selected_grid_info.get("id")) dc.set_experiment_type(EXPERIMENT_TYPE.MESH) data_collections.append(dc) self._path_template.run_number += 1 return data_collections
def _create_task(self, sample, shape): data_collections = [] if isinstance(shape, graphics_manager.GraphicsItemLine): snapshot = self._graphics_manager_hwobj.get_snapshot(shape) # Acquisition for start position start_acq = self._create_acq(sample) start_acq.acquisition_parameters.\ centred_position = copy.deepcopy(shape.cp_start.centred_position) start_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot start_acq.path_template.suffix = self._session_hwobj.suffix # Add another acquisition for the end position end_acq = self._create_acq(sample) end_acq.acquisition_parameters.\ centred_position = shape.cp_end.centred_position end_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot end_acq.path_template.suffix = self._session_hwobj.suffix processing_parameters = copy.deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([start_acq, end_acq], sample.crystals[0], processing_parameters) dc.set_name(start_acq.path_template.get_prefix()) dc.set_number(start_acq.path_template.run_number) dc.experiment_type = EXPERIMENT_TYPE.HELICAL data_collections.append(dc) self._path_template.run_number += 1 return data_collections
def _create_dc_from_grid(self, sample, grid=None): if grid is None: grid = self._graphics_manager_hwobj.get_auto_grid() grid.set_snapshot(self._graphics_manager_hwobj.\ get_scene_snapshot(grid)) grid_properties = grid.get_properties() acq = self._create_acq(sample) acq.acquisition_parameters.centred_position = \ grid.get_centred_position() acq.acquisition_parameters.mesh_range = \ [grid_properties["dx_mm"], grid_properties["dy_mm"]] acq.acquisition_parameters.num_lines = \ grid_properties["num_lines"] acq.acquisition_parameters.num_images = \ grid_properties["num_lines"] * \ grid_properties["num_images_per_line"] grid.set_osc_range(acq.acquisition_parameters.osc_range) processing_parameters = deepcopy(self._processing_parameters) dc = queue_model_objects.DataCollection([acq], sample.crystals[0], processing_parameters) dc.set_name(acq.path_template.get_prefix()) dc.set_number(acq.path_template.run_number) dc.set_experiment_type(queue_model_enumerables.EXPERIMENT_TYPE.MESH) dc.set_requires_centring(False) dc.grid = grid self._path_template.run_number += 1 return dc
def create_dc(self, sample, run_number=None, start_image=None, num_images=None, osc_start=None, sc=None, cpos=None, inverse_beam=False): tasks = [] # Acquisition for start position acq = qmo.Acquisition() acq.acquisition_parameters = \ copy.deepcopy(self._acquisition_parameters) acq.acquisition_parameters.collect_agent = \ queue_model_enumerables.COLLECTION_ORIGIN.MXCUBE acq.path_template = copy.deepcopy(self._path_template) acq.acquisition_parameters.centred_position = cpos 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) if run_number: acq.path_template.run_number = run_number if start_image: acq.acquisition_parameters.first_image = start_image acq.path_template.start_num = start_image if num_images: acq.acquisition_parameters.num_images = num_images acq.path_template.num_files = num_images if osc_start: acq.acquisition_parameters.osc_start = osc_start if inverse_beam: acq.acquisition_parameters.inverse_beam = False if self._beamline_setup_hwobj.in_plate_mode(): acq.acquisition_parameters.take_snapshots = False else: acq.acquisition_parameters.take_snapshots = True processing_parameters = copy.deepcopy(self._processing_parameters) dc = qmo.DataCollection([acq], sample.crystals[0], processing_parameters) dc.set_name(acq.path_template.get_prefix()) dc.set_number(acq.path_template.run_number) dc.experiment_type = queue_model_enumerables.EXPERIMENT_TYPE.NATIVE tasks.append(dc) return tasks
def _create_task(self, sample, shape): data_collections = [] if isinstance(shape, shape_history.Line): if shape.get_qub_objects() is not None: snapshot = self._shape_history.get_snapshot( shape.get_qub_objects()) else: snapshot = self._shape_history.get_snapshot([]) # Acquisition for start position start_acq = qmo.Acquisition() start_acq.acquisition_parameters = \ copy.deepcopy(self._acquisition_parameters) start_acq.acquisition_parameters.collect_agent = \ COLLECTION_ORIGIN.MXCUBE start_acq.acquisition_parameters.\ centred_position = copy.deepcopy(shape.start_cpos) start_acq.path_template = copy.deepcopy(self._path_template) start_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot start_acq.path_template.suffix = self._session_hwobj.suffix if self._beamline_setup_hwobj.in_plate_mode(): start_acq.acquisition_parameters.take_snapshots = False else: start_acq.acquisition_parameters.take_snapshots = True if '<sample_name>' in start_acq.path_template.directory: name = sample.get_name().replace(':', '-') start_acq.path_template.directory = start_acq.path_template.directory.\ replace('<sample_name>', name) start_acq.path_template.process_directory = start_acq.path_template.process_directory.\ replace('<sample_name>', name) if '<acronym>-<name>' in start_acq.path_template.base_prefix: start_acq.path_template.base_prefix = self.get_default_prefix( sample) start_acq.path_template.run_numer = self._beamline_setup_hwobj.queue_model_hwobj.\ get_next_run_number(start_acq.path_template) # Add another acquisition for the end position end_acq = qmo.Acquisition() end_acq.acquisition_parameters = \ copy.deepcopy(self._acquisition_parameters) end_acq.acquisition_parameters.collect_agent = \ COLLECTION_ORIGIN.MXCUBE end_acq.acquisition_parameters.\ centred_position = shape.end_cpos end_acq.path_template = copy.deepcopy(self._path_template) end_acq.acquisition_parameters.centred_position.\ snapshot_image = snapshot end_acq.path_template.suffix = self._session_hwobj.suffix processing_parameters = copy.deepcopy(self._processing_parameters) dc = qmo.DataCollection([start_acq, end_acq], sample.crystals[0], processing_parameters) dc.set_name(start_acq.path_template.get_prefix()) dc.set_number(start_acq.path_template.run_number) dc.experiment_type = EXPERIMENT_TYPE.HELICAL data_collections.append(dc) self._path_template.run_number += 1 return data_collections