Source code for ewoksbm29.tasks.mesh_rebuild

import os
from typing import Optional

from ..io.read_mesh import read_scan_parameters
from ..models.dahu import MeshRebuildParameters
from .base.dahu_ispyb import DahuJobWithIspybUpload


[docs] class DahuMeshRebuild( DahuJobWithIspybUpload, input_names=[ "integrated_files", "scan_file_path", "scan_number", ], optional_input_names=[ "mesh_rebuild_parameters", "retry_timeout", "retry_period", ], ): """Rebuild the 2D mesh with basic analysis. In addition to the inputs from `DahuJobWithIspybUpload`: Required inputs: - integrated_files (List[str]): Azimuthally integrated SAXS data. - scan_file_path (str): Bliss scan file name. - scan_number (str): Bliss scan number as a string. - retry_timeout (float): Timeout when trying to access the Lima image dataset or wait for the scan to be PREPARED. - retry_period (float): Period in retry loops. Optional inputs: - mesh_rebuild_parameters (dict): Extra mesh parameters (see `MeshRebuildParameters`). """ DAHU_PLUGIN = "bm29.mesh" DAHU_INPUTS_MODEL = MeshRebuildParameters PROCESS_NAME = "mesh" CONFIG_NAME = "mesh"
[docs] def dahu_parameters_initialize(self) -> dict: dahu_parameters = super().dahu_parameters_initialize() integrated_files = self.get_input_value("integrated_files") if integrated_files: dahu_parameters["integrated_files"] = integrated_files return dahu_parameters
[docs] def dahu_parameters_finalize(self, dahu_parameters: dict) -> None: integrated_files = self.get_input_value("integrated_files") output_file = dahu_parameters.get("output_file") if integrated_files and not output_file: _, ext = os.path.splitext(integrated_files[0]) output_filename = ( os.path.commonprefix(integrated_files) + ext ) # does not exist output_file = self.output_filename_from_output_filename( output_filename, ".h5" ) dahu_parameters["output_file"] = output_file mesh_rebuild_parameters = self.get_input_value("mesh_rebuild_parameters") if mesh_rebuild_parameters: dahu_parameters.update(mesh_rebuild_parameters) scan_file_path = self.get_input_value("scan_file_path") scan_number = self.get_input_value("scan_number") if scan_file_path and scan_number: retry_timeout = self.get_input_value("retry_timeout") or 10 retry_period = self.get_input_value("retry_period") or 0.2 dahu_parameters["scan"] = read_scan_parameters( scan_file_path, scan_number, retry_timeout=retry_timeout, retry_period=retry_period, ) super().dahu_parameters_finalize(dahu_parameters)
[docs] def dahu_parameters_save_path( self, dahu_parameters: MeshRebuildParameters ) -> Optional[str]: if dahu_parameters.output_file: return os.path.splitext(dahu_parameters.output_file)[0] + ".json" if dahu_parameters.integrated_files: return self.output_filename_from_output_filename( dahu_parameters.integrated_files[0], ".json" )