Source code for ewoksdata.tests.test_data_bliss

import numpy
import h5py
from fabio.edfimage import edfimage
import pytest
from ..data import bliss


[docs] def test_get_data_edf(tmpdir): filename = str(tmpdir / "data.edf") img1 = numpy.random.uniform(((10, 12))) edf = edfimage(data=img1) edf.write(filename) img2 = bliss.get_data(filename) numpy.testing.assert_array_equal(img1, img2)
[docs] def test_get_data_hdf5(tmpdir): filename = str(tmpdir / "data.h5") img1 = numpy.random.uniform(((10, 12))) with h5py.File(filename, "w") as f: f["img"] = img1 img2 = bliss.get_data(f"{filename}::/img") numpy.testing.assert_array_equal(img1, img2) img3 = bliss.get_data(f"{filename}?path=/img") numpy.testing.assert_array_equal(img1, img3)
[docs] @pytest.mark.parametrize("lima_names", [(), ("p3",), ("p3", "p4")]) @pytest.mark.parametrize("counter_names", [(), ("diode1",), ("diode1", "diode2")]) def test_iter_bliss_data(lima_names, counter_names, bliss_scan): nexpected = len(lima_names) + len(counter_names) index = None filename, npoints, scan_nb = bliss_scan with bliss.iter_bliss_data( filename, scan_nb, lima_names=lima_names, counter_names=counter_names ) as bliss_data_iterator: for index, data in bliss_data_iterator: assert len(data) == nexpected if "diode1" in counter_names: assert data["diode1"] == index if "diode2" in counter_names: assert data["diode2"] == index if "p3" in lima_names: assert (data["p3"] == index).all() if "p4" in lima_names: assert (data["p4"] == index).all() if nexpected: assert index == npoints - 1 else: assert index is None
[docs] def test_closure_of_iter_bliss_data(bliss_scan): filename, npoints, scan_nb = bliss_scan # This opens filename with `locking=False` with bliss.iter_bliss_data( filename, scan_nb, counter_names=[], lima_names=("p3",) ) as lima_iterator: for i in range(npoints): next(lima_iterator) # Make sure that the file is closed and can be reopened with a different locking flag with h5py.File(filename, "r", locking=True): pass