Skip to content
Snippets Groups Projects
Commit 2f0c528d authored by Marius Retegan's avatar Marius Retegan
Browse files

Treat NaNs when aggregating scans

parent a94b3212
No related branches found
No related tags found
No related merge requests found
Pipeline #205877 passed
......@@ -475,19 +475,25 @@ class Measurement1D(Measurement):
self._monitor = np.zeros_like(self.x)
for scan in self.scans:
if mode == "sum":
self._signal += scan.signal
elif mode == "sum of fractions":
self._signal += scan.signal / scan.monitor
elif mode == "fraction of sums":
self._signal += scan.signal
if mode in ("sum", "fraction of sums"):
self._signal += np.nan_to_num(scan.signal, nan=0)
elif mode in ("sum of fractions",):
self._signal += np.nan_to_num(scan.signal, nan=0) / np.nan_to_num(
scan.monitor, nan=1
)
else:
raise ValueError(f"Unknown aggregation mode {mode}.")
# Aggregate monitor when mode is not "sum".
if mode != "sum" and self._monitor.size > 0:
self._monitor += scan.monitor
self._monitor += np.nan_to_num(scan.monitor, nan=0)
# Divide signal by monitor where monitor is not zero. If monitor is zero, the
# signal is set to NaN.
if mode == "fraction of sums":
self._signal = self._signal / self._monitor
self._signal = np.where(
self._monitor != 0, self._signal / self._monitor, np.nan
)
logger.info("The scans data was aggregated using the %s mode.", mode)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment