From 2aa3ba75cc056026843f39889642b9c5f5854f54 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Fri, 7 Mar 2025 09:02:58 +0000 Subject: [PATCH] Save which tomograms have processing job ids so they don't get rechecked every time --- src/murfey/client/contexts/tomo.py | 103 +++++++++++++++-------------- 1 file changed, 53 insertions(+), 50 deletions(-) diff --git a/src/murfey/client/contexts/tomo.py b/src/murfey/client/contexts/tomo.py index 331b9a728..c04c17437 100644 --- a/src/murfey/client/contexts/tomo.py +++ b/src/murfey/client/contexts/tomo.py @@ -86,6 +86,7 @@ def __init__(self, acquisition_software: str, basepath: Path): super().__init__("Tomography", acquisition_software) self._basepath = basepath self._tilt_series: Dict[str, List[Path]] = {} + self._tilt_series_with_pjids: List[str] = [] self._tilt_series_sizes: Dict[str, int] = {} self._completed_tilt_series: List[str] = [] self._aligned_tilt_series: List[str] = [] @@ -116,57 +117,59 @@ def register_tomography_data_collections( capture_post(dcg_url, json=dcg_data) for tilt_series in self._tilt_series.keys(): - dc_url = f"{str(environment.url.geturl())}/visits/{environment.visit}/{environment.murfey_session}/start_data_collection" - dc_data = { - "experiment_type": "tomography", - "file_extension": file_extension, - "acquisition_software": self._acquisition_software, - "image_directory": image_directory, - "data_collection_tag": tilt_series, - "source": str(self._basepath), - "tag": tilt_series, - } - if ( - environment.data_collection_parameters - and environment.data_collection_parameters.get("voltage") - ): - # Once mdoc parameters are known register processing jobs - dc_data.update( - { - "voltage": environment.data_collection_parameters[ - "voltage" - ], - "pixel_size_on_image": environment.data_collection_parameters[ - "pixel_size_on_image" - ], - "image_size_x": environment.data_collection_parameters[ - "image_size_x" - ], - "image_size_y": environment.data_collection_parameters[ - "image_size_y" - ], - "magnification": environment.data_collection_parameters[ - "magnification" - ], - } - ) - capture_post(dc_url, json=dc_data) - - proc_url = f"{str(environment.url.geturl())}/visits/{environment.visit}/{environment.murfey_session}/register_processing_job" - for recipe in ("em-tomo-preprocess", "em-tomo-align"): - capture_post( - proc_url, - json={ - "tag": tilt_series, - "source": str(self._basepath), - "recipe": recipe, - "experiment_type": "tomography", - }, + if tilt_series not in self._tilt_series_with_pjids: + dc_url = f"{str(environment.url.geturl())}/visits/{environment.visit}/{environment.murfey_session}/start_data_collection" + dc_data = { + "experiment_type": "tomography", + "file_extension": file_extension, + "acquisition_software": self._acquisition_software, + "image_directory": image_directory, + "data_collection_tag": tilt_series, + "source": str(self._basepath), + "tag": tilt_series, + } + if ( + environment.data_collection_parameters + and environment.data_collection_parameters.get("voltage") + ): + # Once mdoc parameters are known register processing jobs + dc_data.update( + { + "voltage": environment.data_collection_parameters[ + "voltage" + ], + "pixel_size_on_image": environment.data_collection_parameters[ + "pixel_size_on_image" + ], + "image_size_x": environment.data_collection_parameters[ + "image_size_x" + ], + "image_size_y": environment.data_collection_parameters[ + "image_size_y" + ], + "magnification": environment.data_collection_parameters[ + "magnification" + ], + } + ) + capture_post(dc_url, json=dc_data) + + proc_url = f"{str(environment.url.geturl())}/visits/{environment.visit}/{environment.murfey_session}/register_processing_job" + for recipe in ("em-tomo-preprocess", "em-tomo-align"): + capture_post( + proc_url, + json={ + "tag": tilt_series, + "source": str(self._basepath), + "recipe": recipe, + "experiment_type": "tomography", + }, + ) + self._tilt_series_with_pjids.append(tilt_series) + else: + logger.info( + "Cannot register data collection yet as no values from mdoc" ) - else: - logger.info( - "Cannot register data collection yet as no values from mdoc" - ) except Exception as e: logger.error(f"ERROR {e}, {environment.data_collection_parameters}")