Beispiel #1
0
    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
Beispiel #2
0
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
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
    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
Beispiel #10
0
    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
Beispiel #11
0
    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