Source code for mxcubecore.HardwareObjects.abstract.AbstractCharacterisation

# encoding: utf-8
#
#  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 General Lesser Public License
#  along with MXCuBE. If not, see <http://www.gnu.org/licenses/>.

"""Abstract hardware object class for characterisation."""

import abc

import gevent.event

from mxcubecore.BaseHardwareObjects import HardwareObject


[docs]class AbstractCharacterisation(HardwareObject): """Abstract hardware object class for characterisation.""" __metaclass__ = abc.ABCMeta def __init__(self, name) -> None: super().__init__(name) self.processing_done_event = gevent.event.Event()
[docs] @abc.abstractmethod def characterise(self, _input): """Start the characterosation. Args: input (object): Characterisation input object. Returns: (str) The Characterisation result. """
[docs] @abc.abstractmethod def get_html_report(self, output): """Get the path to the characterisation html report, generated by the characterisation software. Args: output (object): Characterisation output object Returns: (str) The path to the html result report. """
[docs] @abc.abstractmethod def input_from_params(self, ref_parameters, char_params, path_str): """ Args: ref_parameters: A named tuple or object with following fields: 'id', 'prefix', 'run_number', 'template', 'first_image', 'num_images', 'osc_start', 'osc_range', 'offset', 'exp_time', 'num_passes', 'comments', 'path', 'centred_positions', 'energy', 'resolution', 'transmission', 'shutterless', 'inverse_beam', 'screening_id' char_params: A named tuple or object with following fields: # Optimisation parameters 'aimed_resolution' 'aimed_multiplicity' 'aimed_i_sigma' 'aimed_completness' 'strategy_complexity' 'induce_burn' 'use_permitted_rotation' 'permitted_phi_start' 'permitted_phi_end' # Crystal 'max_crystal_vdim' 'min_crystal_vdim' 'max_crystal_vphi' 'min_crystal_vphi' 'space_group' # Characterisation type 'use_min_dose' 'use_min_time' 'min_dose' 'min_time' 'account_rad_damage' 'not_use_low_res' 'auto_res' 'opt_sad' 'sad_res' 'determine_rad_params' # Radiation damage model 'rad_suscept' 'beta' 'sigma' path_str: Template string representing path to each image. Returns: Input for characterisation software. """
[docs] @abc.abstractmethod def dc_from_output(self, output): """Create a data collection from characterisation result Args: output (object): Characterisation result object Returns: (queue_model_objects.DataCollection) """
[docs] @abc.abstractmethod def get_default_characterisation_parameters(self, default_input_file): """ Args: default_input_file (str): Path to file containing default input. Returns: (queue_model_objects.CharacterisationsParameters): object with default parameters. """
[docs] def prepare_input(self, _input): """Called by characterise before characterisation starts. Can be used to manipulate edna_input object before characterisation starts. Example: to set a site specific output directory Args: _input (object): Characterisation input object. """
[docs] def is_running(self) -> bool: """ Returns: ``True`` if process is running otherwise ``False``. """ return not self.processing_done_event.is_set()