Source code for ewoksid11.tests.test_pdfgetx_save_ascii
import os
import numpy as np
from ewoksid11.constants import SIGNAL_TYPES
from ewoksid11.pdfgetx_save_ascii import PdfGetXSaveAscii
[docs]def assert_data_close(outputs, data_key, true_data, atol_multiplier=1e-5):
atol = true_data[:, 1].max() * atol_multiplier
computed_data = getattr(outputs, data_key)
np.testing.assert_allclose(computed_data[0], true_data[:, 0], rtol=1e-6)
np.testing.assert_allclose(computed_data[1], true_data[:, 1], atol=atol)
[docs]def test_assert_save_ascii(setup_save_data, tmpdir):
save_result_input = setup_save_data
dsetname = "CeO2.h5"
save_inputs = {
"filename": os.path.join(tmpdir, dsetname),
"result": save_result_input,
}
save = PdfGetXSaveAscii(inputs=save_inputs)
save.execute()
for signal_type in SIGNAL_TYPES:
with open(save_inputs["filename"].replace("h5", signal_type), "r") as f_in:
cfg_lines = f_in.readlines()[10:27] # Skip header to calculation setup
for i, line in enumerate(cfg_lines):
cfg_parts = line.split("=")
if len(cfg_parts) == 2:
key = cfg_parts[0].strip()
value = cfg_parts[1].strip()
expected_value = getattr(save_result_input.config, key)
if isinstance(expected_value, str) or isinstance(expected_value, float):
assert value == str(expected_value)
if isinstance(expected_value, list):
assert value == str(expected_value[0])
data = np.genfromtxt(
save_inputs["filename"].replace("h5", signal_type), skip_header=27
)
assert_data_close(save_result_input, signal_type, data)