diff --git a/src/cal_tools/agipdlib.py b/src/cal_tools/agipdlib.py index 1783c0b81dd2bd37726a3503db44a3c3d8a3da34..7290f54f7a079c69360b7542e7be517015e6e955 100644 --- a/src/cal_tools/agipdlib.py +++ b/src/cal_tools/agipdlib.py @@ -28,7 +28,7 @@ from cal_tools.agipdutils import ( melt_snowy_pixels, ) from cal_tools.enums import AgipdGainMode, BadPixels, SnowResolution -from cal_tools.litpx_counter import LitPixelCounter +from cal_tools.litpx_counter import AnalysisAddon, LitPixelCounter from logging import warning @@ -771,26 +771,19 @@ class AgipdCorrections: det_channel = det_channel.partition(":")[0] + ":output" agipd_corr_source = f"{karabo_id}/CORR/{det_channel}" - schema = { - agipd_corr_source: ["image"] - } - addons = { - "litpx_counter": f"{karabo_id}/LITPX/{det_channel}" - } - for addon_name, src_name in addons.items(): - addon = data_dict.get(addon_name) - if addon is not None: - src_channels = schema.setdefault(src_name, []) - src_channels.append(addon.channel) - - instrument_channels = [] - for src_name, src_channels in schema.items(): - instrument_channels += [f"{src_name}/{ch}" for ch in src_channels] + instrument_channels = [f"{agipd_corr_source}/image"] # backward compatibility BEGIN instrument_channels.append(f"{agipd_base}/image") # backward compatibility END + addons = [] + for name, elem in data_dict.items(): + if isinstance(elem, AnalysisAddon): + src_name = elem.source_name(karabo_id, det_channel) + addons.append((elem, src_name)) + instrument_channels.append(f"{src_name}/{elem.channel}") + with DataFile.from_details(out_folder, agg, runno, seqno) as outfile: outfile.create_metadata( like=dc, instrument_channels=instrument_channels) @@ -832,11 +825,7 @@ class AgipdCorrections: # create addon sources required_addon_data = [] - for addon_name, src_name in addons.items(): - addon = data_dict.get(addon_name) - if addon is None: - continue - + for addon, src_name in addons: src = outfile.create_instrument_source(src_name) addon.set_num_images(n_img) addon.create_schema(src, trains, count) diff --git a/src/cal_tools/litpx_counter.py b/src/cal_tools/litpx_counter.py index 660ddbf72eaea1a42dc083925d09e08e0188a650..0a70097f066fe72c1731f92c25b65163905d03b9 100644 --- a/src/cal_tools/litpx_counter.py +++ b/src/cal_tools/litpx_counter.py @@ -25,6 +25,9 @@ class AnalysisAddon: def process(self, chunk): raise NotImplementedError + def source_name(self, karabo_id, channel): + return f"{karabo_id}/DANA/{channel}" + def create_schema(self, source, file_trains=None, count=None): if file_trains is None: file_trains = source.file["INDEX/trainId"][:] @@ -83,3 +86,6 @@ class LitPixelCounter(AnalysisAddon): self.num_lit_px[i] = np.sum( self.image[i] > self.threshold, initial=0, where=mask) self.num_good_px[i] = np.sum(mask) + + def source_name(self, karabo_id, channel): + return f"{karabo_id}/LITPX/{channel}"