@@ -187,47 +187,76 @@ class XtremeNeXusFormat(DefaultFormat):
|
||||
self._populate_default_nxdata(data)
|
||||
|
||||
def _populate_default_nxdata(self, data_group) -> None:
|
||||
has_otf_data = self.get_entry("otf", signal="edata") is not None
|
||||
# We populate the NXdata group with the signals by linking to the datasets in collection.
|
||||
# If the signals are on readout priority "async", we take the async signals, otherwise we take the normal signals.
|
||||
|
||||
if has_otf_data:
|
||||
self.safe_dataset(group=data_group, name="edata", device="otf", signal="edata")
|
||||
self.safe_dataset(group=data_group, name="data", device="otf", signal="data")
|
||||
data_group.attrs["signal"] = "data"
|
||||
self.safe_dataset(group=data_group, name="idata", device="otf", signal="idata")
|
||||
self.safe_dataset(group=data_group, name="fdata", device="otf", signal="fdata")
|
||||
signals_is_async = "signals" in self.info_storage["bec"]["metadata"].get(
|
||||
"readout_priority", {}
|
||||
).get("signals", [])
|
||||
|
||||
data_group.attrs["axes"] = ["edata"]
|
||||
auxiliary_signals = [
|
||||
signal_name
|
||||
for signal_name in ("idata", "fdata")
|
||||
if self.get_entry("otf", signal=signal_name) is not None
|
||||
]
|
||||
if auxiliary_signals:
|
||||
data_group.attrs["auxiliary_signals"] = auxiliary_signals
|
||||
if signals_is_async:
|
||||
prefix = "data_"
|
||||
else:
|
||||
prefix = ""
|
||||
|
||||
axis_target = self._axis_target()
|
||||
if axis_target and not has_otf_data:
|
||||
self.safe_dataset(group=data_group, name="energy", device="energy")
|
||||
data_group.attrs["axes"] = ["energy"]
|
||||
elif axis_target:
|
||||
self.safe_dataset(group=data_group, name="energy", device="energy")
|
||||
self.safe_dataset(group=data_group, name="s1", device="signals", signal=f"{prefix}s1")
|
||||
self.safe_dataset(group=data_group, name="s2", device="signals", signal=f"{prefix}s2")
|
||||
self.safe_dataset(group=data_group, name="s3", device="signals", signal=f"{prefix}s3")
|
||||
self.safe_dataset(group=data_group, name="s4", device="signals", signal=f"{prefix}s4")
|
||||
self.safe_dataset(group=data_group, name="s5", device="signals", signal=f"{prefix}s5")
|
||||
self.safe_dataset(group=data_group, name="s6", device="signals", signal=f"{prefix}s6")
|
||||
self.safe_dataset(group=data_group, name="s7", device="signals", signal=f"{prefix}s7")
|
||||
self.safe_dataset(
|
||||
group=data_group, name="norm_diode", device="signals", signal=f"{prefix}norm_diode"
|
||||
)
|
||||
self.safe_dataset(
|
||||
group=data_group, name="norm_tey", device="signals", signal=f"{prefix}norm_tey"
|
||||
)
|
||||
self.safe_dataset(
|
||||
group=data_group, name="energy", device="signals", signal=f"{prefix}energy_cerbk"
|
||||
)
|
||||
|
||||
found_signal = None
|
||||
for signal in self._MONITOR_SIGNALS:
|
||||
if self.get_entry("signals", signal=signal) is None:
|
||||
continue
|
||||
self.safe_dataset(group=data_group, name=signal, device="signals", signal=signal)
|
||||
if found_signal is None:
|
||||
found_signal = signal
|
||||
# has_otf_data = self.get_entry("otf", signal="edata") is not None
|
||||
|
||||
if found_signal and not has_otf_data:
|
||||
data_group.attrs["signal"] = found_signal
|
||||
elif self.get_entry("energy") is not None and not has_otf_data:
|
||||
data_group.attrs["signal"] = "energy"
|
||||
# if has_otf_data:
|
||||
# self.safe_dataset(group=data_group, name="edata", device="otf", signal="edata")
|
||||
# self.safe_dataset(group=data_group, name="data", device="otf", signal="data")
|
||||
# data_group.attrs["signal"] = "data"
|
||||
# self.safe_dataset(group=data_group, name="idata", device="otf", signal="idata")
|
||||
# self.safe_dataset(group=data_group, name="fdata", device="otf", signal="fdata")
|
||||
|
||||
def _axis_target(self) -> str | None:
|
||||
if self.get_entry("energy") is not None:
|
||||
return "/entry/instrument/beam_energy/energy"
|
||||
if self.get_entry("mono") is not None:
|
||||
return "/entry/instrument/monochromator/energy"
|
||||
return None
|
||||
# data_group.attrs["axes"] = ["edata"]
|
||||
# auxiliary_signals = [
|
||||
# signal_name
|
||||
# for signal_name in ("idata", "fdata")
|
||||
# if self.get_entry("otf", signal=signal_name) is not None
|
||||
# ]
|
||||
# if auxiliary_signals:
|
||||
# data_group.attrs["auxiliary_signals"] = auxiliary_signals
|
||||
|
||||
# axis_target = self._axis_target()
|
||||
# if axis_target and not has_otf_data:
|
||||
# self.safe_dataset(group=data_group, name="energy", device="energy")
|
||||
# data_group.attrs["axes"] = ["energy"]
|
||||
# elif axis_target:
|
||||
# self.safe_dataset(group=data_group, name="energy", device="energy")
|
||||
|
||||
# found_signal = None
|
||||
# for signal in self._MONITOR_SIGNALS:
|
||||
# if self.get_entry("signals", signal=signal) is None:
|
||||
# continue
|
||||
# self.safe_dataset(group=data_group, name=signal, device="signals", signal=signal)
|
||||
# if found_signal is None:
|
||||
# found_signal = signal
|
||||
|
||||
# if found_signal and not has_otf_data:
|
||||
# data_group.attrs["signal"] = found_signal
|
||||
# elif self.get_entry("energy") is not None and not has_otf_data:
|
||||
# data_group.attrs["signal"] = "energy"
|
||||
|
||||
# def _axis_target(self) -> str | None:
|
||||
# if self.get_entry("energy") is not None:
|
||||
# return "/entry/instrument/beam_energy/energy"
|
||||
# if self.get_entry("mono") is not None:
|
||||
# return "/entry/instrument/monochromator/energy"
|
||||
# return None
|
||||
|
||||
Reference in New Issue
Block a user