@@ -246,6 +246,7 @@ def _parse_imgser_dict(
246246 imgser_dict : Mapping [str , OmegaImageSeries | NDArray [np .float64 ]],
247247 det_key : str ,
248248 roi : Optional [tuple [tuple [int , int ], ...]] = None ,
249+ group : Optional [str ] = None ,
249250) -> OmegaImageSeries | ProcessedImageSeries | NDArray [np .float64 ]:
250251 """
251252 Associates a dict of imageseries to the target panel(s).
@@ -262,6 +263,9 @@ def _parse_imgser_dict(
262263 The roi of the target images. Format is
263264 ((row_start, row_stop), (col_start, col_stop))
264265 The stops are used in the normal sense of a slice. The default is None.
266+ group : str or None, optional
267+ The detector group name. Used as a fallback key when `det_key` is not
268+ found in `imgser_dict`. The default is None.
265269
266270 Raises
267271 ------
@@ -290,6 +294,9 @@ def _parse_imgser_dict(
290294 img_keys : NDArray [np .str_ ] = np .asarray (list (imgser_dict .keys ()))
291295 matched_det_key = img_keys [matched_det_keys ][0 ]
292296 images_in = imgser_dict [matched_det_key ]
297+ elif group is not None and group in imgser_dict :
298+ # match by detector group name
299+ images_in = imgser_dict [group ]
293300 else :
294301 raise RuntimeError (
295302 f"neither '{ det_key } ' nor '{ multi_ims_key } ' found"
@@ -1140,7 +1147,9 @@ def extract_polar_maps(
11401147 ptth , peta = panel .pixel_angles ()
11411148
11421149 # grab imageseries for this detector
1143- ims = _parse_imgser_dict (imgser_dict , det_key , roi = panel .roi )
1150+ ims = _parse_imgser_dict (
1151+ imgser_dict , det_key , roi = panel .roi , group = panel .group
1152+ )
11441153 assert isinstance (ims , OmegaImageSeries )
11451154
11461155 # grab omegas from imageseries and squawk if missing
@@ -1321,7 +1330,9 @@ def make_instr_cfg(panel):
13211330
13221331 images = []
13231332 for detector_id , panel in self .detectors .items ():
1324- images .append (_parse_imgser_dict (imgser_dict , detector_id , roi = panel .roi ))
1333+ images .append (_parse_imgser_dict (
1334+ imgser_dict , detector_id , roi = panel .roi , group = panel .group
1335+ ))
13251336
13261337 panels = [self .detectors [k ] for k in self .detectors ]
13271338 instr_cfgs = [make_instr_cfg (x ) for x in panels ]
@@ -1677,7 +1688,7 @@ def _pull_spots_check_only(
16771688 for detector_id , panel in self .detectors .items ():
16781689 # pull out the OmegaImageSeries for this panel from input dict
16791690 omega_image_series = _parse_imgser_dict (
1680- imgser_dict , detector_id , roi = panel .roi
1691+ imgser_dict , detector_id , roi = panel .roi , group = panel . group
16811692 )
16821693 assert isinstance (omega_image_series , OmegaImageSeries )
16831694
@@ -1889,7 +1900,7 @@ def pull_spots(
18891900 npdiv ,
18901901 )
18911902 omega_image_series = _parse_imgser_dict (
1892- imgser_dict , detector_id , roi = panel .roi
1903+ imgser_dict , detector_id , roi = panel .roi , group = panel . group
18931904 )
18941905 assert isinstance (omega_image_series , OmegaImageSeries )
18951906
0 commit comments