From 0819a3aea54a62387e53ed8abd8ad57220fb5516 Mon Sep 17 00:00:00 2001
From: woutdenolf <woutdenolf@users.sf.net>
Date: Wed, 5 Feb 2025 05:55:00 +0100
Subject: [PATCH] read_concatenated_xas: handle NaNs with masked arrays

---
 src/est/io/concatenated.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/est/io/concatenated.py b/src/est/io/concatenated.py
index 21db1cb8..156f9bac 100644
--- a/src/est/io/concatenated.py
+++ b/src/est/io/concatenated.py
@@ -4,6 +4,7 @@ from typing import Tuple, Dict, Any
 
 import pint
 import numpy
+import numpy.ma
 
 from est import settings
 from est.io.information import InputInformation
@@ -40,7 +41,7 @@ def read_concatenated_xas(
     if information.skip_concatenated_n_spectra:
         ramp_slices = ramp_slices[information.skip_concatenated_n_spectra :]
 
-    interpolated_spectra = numpy.zeros(
+    interpolated_spectra = numpy.ma.masked_all(
         (len(energy), len(ramp_slices), 1), dtype=raw_spectra.dtype
     )
     for i, ramp_slice in enumerate(ramp_slices):
@@ -49,12 +50,15 @@ def read_concatenated_xas(
         if information.skip_concatenated_n_points:
             raw_spectrum_i[: information.skip_concatenated_n_points] = numpy.nan
             raw_spectrum_i[-information.skip_concatenated_n_points :] = numpy.nan
-        interpolated_spectra[:, i, 0] = numpy.interp(
+        spectrum_i = numpy.interp(
             energy,
             raw_energy_i,
             raw_spectrum_i,
             left=numpy.nan,
             right=numpy.nan,
         )
+        interpolated_spectra[:, i, 0] = numpy.ma.masked_array(
+            spectrum_i, mask=~numpy.isfinite(spectrum_i)
+        )
 
     return interpolated_spectra, energy * information.energy_unit, config
-- 
GitLab