Source code for ewoksfluo.tests.test_sum

import h5py
import numpy
import pytest

from ..tasks.sum_detectors import sum_utils


[docs] @pytest.mark.parametrize("array_chunk_size", [1, 2, 3]) @pytest.mark.parametrize("normalize", [True, False]) def test_sum_spectra(tmp_path, monkeypatch, array_chunk_size, normalize): filename = str(tmp_path / "data.h5") npts = 10 data = { "mca_det0": { "data": numpy.random.uniform(10, 100, (npts, 2048)), "live_time": numpy.random.uniform(0.05, 0.099, npts), }, "mca_det1": { "data": numpy.random.uniform(10, 100, (npts, 2048)), "live_time": numpy.random.uniform(0.05, 0.099, npts), }, } if normalize: mca_det0_weighted = ( data["mca_det0"]["data"] / data["mca_det0"]["live_time"][:, numpy.newaxis] * 0.1 ) mca_det1_weighted = ( data["mca_det1"]["data"] / data["mca_det1"]["live_time"][:, numpy.newaxis] * 0.1 ) expected_sum_spectra = mca_det0_weighted + mca_det1_weighted else: expected_sum_spectra = data["mca_det0"]["data"] + data["mca_det1"]["data"] with h5py.File(filename, "w") as f: f["/1.1/instrument/mca_det0/data"] = data["mca_det0"]["data"] f["/1.1/instrument/mca_det0/live_time"] = data["mca_det0"]["live_time"] f["/1.1/instrument/mca_det1/data"] = data["mca_det1"]["data"] f["/1.1/instrument/mca_det1/live_time"] = data["mca_det1"]["live_time"] def patched_array_chunk_size(*args, **_): return array_chunk_size monkeypatch.setattr(sum_utils, "array_chunk_size", patched_array_chunk_size) if normalize: detector_normalization_template = "0.1/<instrument/{}/live_time>" else: detector_normalization_template = None sum_spectra = sum_utils.sum_spectra_from_hdf5( bliss_scan_uri=f"{filename}::/1.1", xrf_spectra_uri_template="instrument/{}/data", detector_normalization_template=detector_normalization_template, detector_names=["mca_det0", "mca_det1"], ) numpy.testing.assert_allclose(sum_spectra, expected_sum_spectra)