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)