Source code for dials.util.nexus

from __future__ import annotations

from time import strftime

import h5py

from dials.util.nexus import nx_mx, nx_reflections


[docs] def get_entry(filename, mode="a"): handle = h5py.File(filename, mode) if "entry" in handle: entry = handle["entry"] assert entry.attrs["NX_class"] == "NXentry" else: entry = handle.create_group("entry") entry.attrs["NX_class"] = "NXentry" handle.attrs["file_name"] = filename handle.attrs["file_time"] = strftime("%Y-%m-%dT%H:%M:%S") return entry
[docs] def load(filename): entry = get_entry(filename, "r") ref, exp_index = nx_reflections.load(entry) exp = nx_mx.load(entry, exp_index) return exp, ref
[docs] def dump(experiments, reflections, params): filename = params.hklout entry = get_entry(filename, "w") experiments = nx_mx.dump(entry, experiments, params) nx_reflections.dump(entry, reflections, experiments)