@@ -66,13 +66,16 @@ def _grid_square_metadata_file(
6666 break
6767 else :
6868 raise ValueError (f"Could not determine grid square metadata path for { f } " )
69- return (
69+ metadata_file = (
7070 base_dir
7171 / visit
7272 / mid_dir .parent .parent .parent
7373 / "Metadata"
7474 / f"GridSquare_{ grid_square } .dm"
7575 )
76+ if not metadata_file .is_file ():
77+ logger .warning (f"Grid square metadata file { str (metadata_file )} does not exist" )
78+ return metadata_file
7679
7780
7881def _get_source (file_path : Path , environment : MurfeyInstanceEnvironment ) -> Path | None :
@@ -89,7 +92,7 @@ def _get_xml_list_index(key: str, xml_list: list) -> int:
8992 raise ValueError (f"Key not found in XML list: { key } " )
9093
9194
92- class _SPAContext (Context ):
95+ class SPAModularContext (Context ):
9396 user_params = [
9497 ProcessingParameter (
9598 "dose_per_frame" ,
@@ -130,7 +133,6 @@ def __init__(self, acquisition_software: str, basepath: Path):
130133 super ().__init__ ("SPA" , acquisition_software )
131134 self ._basepath = basepath
132135 self ._processing_job_stash : dict = {}
133- self ._preprocessing_triggers : dict = {}
134136 self ._foil_holes : Dict [int , List [int ]] = {}
135137
136138 def gather_metadata (
@@ -362,8 +364,6 @@ def gather_metadata(
362364 ) or True
363365 return metadata
364366
365-
366- class SPAModularContext (_SPAContext ):
367367 def _position_analysis (
368368 self ,
369369 transferred_file : Path ,
@@ -658,104 +658,3 @@ def _launch_spa_pipeline(
658658 url : str = "" ,
659659 ):
660660 return
661-
662-
663- class SPAContext (_SPAContext ):
664- def _register_data_collection (
665- self ,
666- tag : str ,
667- url : str ,
668- data : dict ,
669- environment : MurfeyInstanceEnvironment ,
670- ):
671- logger .info (f"registering data collection with data { data } " )
672- environment .id_tag_registry ["data_collection" ].append (tag )
673- image_directory = str (environment .default_destinations [Path (tag )])
674- json = {
675- "voltage" : data ["voltage" ],
676- "pixel_size_on_image" : data ["pixel_size_on_image" ],
677- "experiment_type" : data ["experiment_type" ],
678- "image_size_x" : data ["image_size_x" ],
679- "image_size_y" : data ["image_size_y" ],
680- "file_extension" : data ["file_extension" ],
681- "acquisition_software" : data ["acquisition_software" ],
682- "image_directory" : image_directory ,
683- "tag" : tag ,
684- "source" : tag ,
685- "magnification" : data ["magnification" ],
686- "total_exposed_dose" : data .get ("total_exposed_dose" ),
687- "c2aperture" : data .get ("c2aperture" ),
688- "exposure_time" : data .get ("exposure_time" ),
689- "slit_width" : data .get ("slit_width" ),
690- "phase_plate" : data .get ("phase_plate" , False ),
691- }
692- capture_post (url , json = json )
693-
694- def post_transfer (
695- self ,
696- transferred_file : Path ,
697- environment : MurfeyInstanceEnvironment | None = None ,
698- ** kwargs ,
699- ) -> bool :
700- return True
701-
702- def _register_processing_job (
703- self ,
704- tag : str ,
705- environment : MurfeyInstanceEnvironment ,
706- parameters : Dict [str , Any ] | None = None ,
707- ):
708- logger .info (f"registering processing job with parameters: { parameters } " )
709- parameters = parameters or {}
710- environment .id_tag_registry ["processing_job" ].append (tag )
711- proc_url = f"{ str (environment .url .geturl ())} /visits/{ environment .visit } /{ environment .murfey_session } /register_processing_job"
712- machine_config = get_machine_config_client (
713- str (environment .url .geturl ()),
714- instrument_name = environment .instrument_name ,
715- demo = environment .demo ,
716- )
717- image_directory = str (
718- Path (machine_config .get ("rsync_basepath" , "." ))
719- / environment .default_destinations [Path (tag )]
720- )
721- if self ._acquisition_software == "epu" :
722- import_images = f"{ Path (image_directory ).resolve ()} /GridSquare*/Data/*{ parameters ['file_extension' ]} "
723- else :
724- import_images = (
725- f"{ Path (image_directory ).resolve ()} /*{ parameters ['file_extension' ]} "
726- )
727- msg : Dict [str , Any ] = {
728- "tag" : tag ,
729- "source" : tag ,
730- "recipe" : "ispyb-relion" ,
731- "parameters" : {
732- "acquisition_software" : parameters ["acquisition_software" ],
733- "voltage" : parameters ["voltage" ],
734- "gain_ref" : parameters ["gain_ref" ],
735- "dose_per_frame" : parameters ["dose_per_frame" ],
736- "eer_grouping" : parameters ["eer_fractionation" ],
737- "import_images" : import_images ,
738- "angpix" : float (parameters ["pixel_size_on_image" ]) * 1e10 ,
739- "symmetry" : parameters ["symmetry" ],
740- "boxsize" : parameters ["boxsize" ],
741- "downscale" : parameters ["downscale" ],
742- "small_boxsize" : parameters ["small_boxsize" ],
743- "mask_diameter" : parameters ["mask_diameter" ],
744- "use_cryolo" : parameters ["use_cryolo" ],
745- "estimate_particle_diameter" : parameters ["estimate_particle_diameter" ],
746- },
747- }
748- if parameters ["particle_diameter" ]:
749- msg ["parameters" ]["particle_diameter" ] = parameters ["particle_diameter" ]
750- capture_post (proc_url , json = msg )
751-
752- def _launch_spa_pipeline (
753- self ,
754- tag : str ,
755- jobid : int ,
756- environment : MurfeyInstanceEnvironment ,
757- url : str = "" ,
758- ):
759- environment .id_tag_registry ["auto_proc_program" ].append (tag )
760- data = {"job_id" : jobid }
761- capture_post (url , json = data )
0 commit comments