From Eiger HDF5 to CBF frames#
This tutorial shows the CBF conversion path provided by ewoksscxrd through
fabio.app.eiger2cbf, with bundled XDS.INP generation.
1. Choose the bundled workflow#
Use:
src/ewoksscxrd/workflows/demo_eiger2cbf.json
2. Inspect task inputs#
ewoks show src/ewoksscxrd/workflows/demo_eiger2cbf.json
The main runtime inputs are:
images: list of Eiger or LImA HDF5 filesoutput: CBF filename template such asframe_{index}.cbf
Useful optional inputs include offset, mask, pilatus, energy or
wavelength, distance, beam, goniometer angles, and the image transform
flags (rotation, transpose, flip_ud, flip_lr).
Because the workflow also runs CreateXDSInp, you must also provide the XDS
geometry inputs such as detector, nx, ny, qx, qy, data_range,
and oscillation_range. Provide starting_angle only if you want
STARTING_ANGLE and STARTING_FRAME written into XDS.INP.
3. Execute the workflow from Python#
import json
from pathlib import Path
from ewoks import execute_graph
workflow_path = Path("src/ewoksscxrd/workflows/demo_eiger2cbf.json")
workflow = json.loads(workflow_path.read_text())
inputs = [
{
"name": "images",
"value": ["/data/.../scan0001/eiger_0000.h5"],
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "output",
"value": "/data/.../scan0001/cbf/frame_{index:04d}.cbf",
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "offset",
"value": 1,
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "wavelength",
"value": 0.2846,
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "distance",
"value": 0.1518,
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "beam",
"value": [1052, 1102],
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "rotation",
"value": 180,
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "flip_lr",
"value": True,
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
{
"name": "omega",
"value": "-36.000000-index*-0.500000",
"task_identifier": "ewoksscxrd.tasks.eiger2cbf.Eiger2CBF",
},
]
execute_graph(
workflow,
inputs=inputs,
convert_destination="executed_demo_eiger2cbf.json",
merge_outputs=False,
)
4. Execute the script#
python run_eiger2cbf.py
5. Validate produced files#
The conversion creates one .cbf file per frame under the directory selected
by the output template.