Source code for est.tests.pymca.test_io_with_pymca
import numpy
from ...core.io.read_xas import build_ascii_data_url
from ...core.io.read_xas import read_from_url
from ...core.io.write_xas import write_xas
from ...core.types.xasobject import XASObject
from ..data import example_spectra
from ..hdf5 import assert_hdf5_content
[docs]
def test_read_spectrum(filename_cu_from_pymca):
"""Test read function for spectra and configuration"""
res = read_from_url(
spectra_url=build_ascii_data_url(
file_path=filename_cu_from_pymca,
col_name="Column 1",
scan_title=None,
data_slice=None,
),
channel_url=build_ascii_data_url(
file_path=filename_cu_from_pymca,
col_name="Column 2",
scan_title=None,
data_slice=None,
),
)
assert isinstance(res, XASObject)
assert res.n_spectrum == 1
spectrum_0 = res.spectra.data.flat[0]
assert spectrum_0.mu is not None
assert spectrum_0.energy is not None
[docs]
def test_nx_writing(tmp_path):
"""Test that the nx process is correctly store ad the output data"""
dim1 = 2
dim2 = 1
energy, spectra = example_spectra(shape=(256, dim1, dim2))
xas_obj = XASObject(spectra=spectra, energy=energy, dim1=dim1, dim2=dim2)
h5_file = str(tmp_path / "output_file.h5")
write_xas(h5_file, xas_obj)
expected = {
"data": {
"data@NX_class": "NXdata",
"data@axes": ["energy"],
"data@signal": "mu",
"energy": {"energy@long_name": "Energy (eV)", "energy@units": "eV"},
"mu": {"mu@long_name": "μ"},
},
}
assert_hdf5_content(h5_file, expected, dim1 * dim2)
original_energy = xas_obj.energy
original_mu = xas_obj.absorbed_beam()
shape = xas_obj.spectra.data.shape
for i in range(dim1 * dim2):
loaded_xas_obj = XASObject.from_file(h5_file, entry=f"1.{i+1}")
loaded_energy = loaded_xas_obj.energy
numpy.testing.assert_allclose(loaded_energy, original_energy)
loaded_mu = loaded_xas_obj.absorbed_beam().ravel()
idx = (slice(None),) + numpy.unravel_index(i, shape)
original_mu_i = original_mu[idx]
numpy.testing.assert_allclose(loaded_mu, original_mu_i)