Source code for ewoksid11.tests.test_pdfgetx_save_nexus
import h5py
import numpy
import os
import json
from silx.io import utils as silx_io_utils
from ewoksid11.constants import SIGNAL_TYPES
from ewoksid11.constants import PDF_CONFIG_PARSED
from ewoksid11.pdfgetx_save_nexus import PdfGetXSaveNexus
[docs]def test_assert_save_nexus(setup_save_data, tmpdir):
output_filename = os.path.join(tmpdir, "CeO2.h5")
save_inputs = {
"output_filename": output_filename,
"scan": 2,
"detector_name": "detector",
"result": setup_save_data,
"subscan": 2,
"pdfgetx_options": dict(PDF_CONFIG_PARSED),
}
save = PdfGetXSaveNexus(inputs=save_inputs)
save.execute()
output_url = save.get_output_value("output_url")
assert output_url == f"silx://{output_filename}?path=/2.2/detector_PDF"
with silx_io_utils.open(output_url) as nxprocess:
assert isinstance(nxprocess, h5py.Group)
assert nxprocess.attrs["NX_class"] == "NXprocess"
configuration = nxprocess["configuration"]
assert configuration.attrs["NX_class"] == "NXnote"
assert json.loads(configuration["data"][()]) == PDF_CONFIG_PARSED
for signal_type in SIGNAL_TYPES:
nxdata = nxprocess[signal_type]
assert isinstance(nxdata, h5py.Group)
assert nxdata.attrs["NX_class"] == "NXdata"
expected_data = getattr(setup_save_data, signal_type)
expected_axes = expected_data[0]
axes_data = nxdata[nxdata.attrs["axes"]][()]
numpy.testing.assert_allclose(expected_axes, axes_data)
expected_signal = expected_data[1]
signal_data = nxdata[nxdata.attrs["signal"]][()]
numpy.testing.assert_allclose(expected_signal, signal_data)