Source code for mxcubecore.queue_entry.xray_centring2

#  Project name: MXCuBE
#  https://github.com/mxcube
#
#  This file is part of MXCuBE software.
#
#  MXCuBE is free software: you can redistribute it and/or modify
#  it under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  MXCuBE is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public License
#  along with MXCuBE. If not, see <http://www.gnu.org/licenses/>.
import logging

from mxcubecore import HardwareRepository as HWR
from mxcubecore.model import queue_model_objects
from mxcubecore.queue_entry.base_queue_entry import BaseQueueEntry

__credits__ = ["MXCuBE collaboration"]
__license__ = "LGPLv3+"
__category__ = "General"


[docs]class XrayCentring2QueueEntry(BaseQueueEntry): """ Entry for X-ray centring (2022 version) """ def __init__(self, view=None, data_model=None): BaseQueueEntry.__init__(self, view, data_model)
[docs] def execute(self): BaseQueueEntry.execute(self) HWR.beamline.xray_centring.execute()
[docs] def pre_execute(self): """Pre-execute. Set to new motor position, if any""" BaseQueueEntry.pre_execute(self) logging.getLogger("user_level_log").info("Starting Xray centring, please wait.") data_model = self.get_data_model() motor_positions = dict( item for item in data_model.get_motor_positions().items() if item[1] is not None ) pos_dict = {} for tag in ("kappa", "kappa_phi"): if tag in motor_positions: pos_dict[tag] = motor_positions.pop(tag) if pos_dict: # Some beamlines move centring motors while moving kappa, kappa_phi # Hence we need to move kappa, kappa_phi first. HWR.beamline.diffractometer.set_value_motors(pos_dict) if motor_positions: # Move the rest of the motors, if needed HWR.beamline.diffractometer.set_value_motors(motor_positions) HWR.beamline.xray_centring.pre_execute(self)
[docs] def post_execute(self): """Post-execute. Store centring result in data model""" BaseQueueEntry.post_execute(self) # Create a centred position object of the current position # and put it in the data model for future access. pos_dict = HWR.beamline.sample_view.get_positions() cpos = queue_model_objects.CentredPosition(pos_dict) self._data_model.set_centring_result(cpos) logging.getLogger("user_level_log").info("Finishing Xray centring") HWR.beamline.xray_centring.post_execute()
def get_type_str(self): return "X-ray centring"