Source code for ewoksscxrd.tests.test_eiger2cbf

from pathlib import Path
from os import PathLike

import fabio
import h5py
import numpy as np
import pytest

from ewoksscxrd.tasks.eiger2cbf import Eiger2CBF

EIGER_FILE = Path(__file__).parent / "data" / "eiger_0000.h5"


[docs] @pytest.fixture(scope="module") def eiger_h5_path(): assert EIGER_FILE.exists(), f"Test data file not found: {EIGER_FILE}" return str(EIGER_FILE)
[docs] def test_eiger2cbf_task(tmp_path: PathLike, eiger_h5_path): with h5py.File(eiger_h5_path, "r") as h5file: frames = h5file["/entry_0000/measurement/data"][()] output_dir = tmp_path / "cbf" output_pattern = output_dir / "frame_{index}.cbf" task = Eiger2CBF( inputs={ "images": [eiger_h5_path], "output": str(output_pattern), "offset": 1, "rotation": 180, "flip_lr": True, "wavelength": 0.2846, "distance": 0.1518, "beam": [1052, 1102], "alpha": 50, "phi": "0", "omega": "-36.000000-index*-0.500000", } ) task.execute() result = task.get_output_values() assert result["output_path"] == str(output_dir) generated_files = sorted(output_dir.glob("*.cbf")) assert len(generated_files) == frames.shape[0] expected_frame = np.fliplr(np.rot90(frames[0].astype(np.int32), k=2)) generated_frame = fabio.open(str(generated_files[0])).data assert np.array_equal(generated_frame, expected_frame)