From 372c6fc9e5272c3f7a60cf497e9fca38145e7663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=B6ne=2C=20Tjark=20Leon=20Raphael?= <tjark.leon.raphael.groene@uni-hamburg.de> Date: Tue, 17 Jun 2025 09:34:59 +0200 Subject: [PATCH] Update file maxwell_integrate_to_h5.py --- maxwell_integrate_to_h5.py | 48 ++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/maxwell_integrate_to_h5.py b/maxwell_integrate_to_h5.py index f7d7e50..5976eb6 100644 --- a/maxwell_integrate_to_h5.py +++ b/maxwell_integrate_to_h5.py @@ -137,30 +137,42 @@ def integrate_ims_in_dir(path_im, path_int, dtype_im=".tif", dtype_int=".dat"): os.remove(output_file) with h5py.File(output_file, "w") as f: - entry = f.create_group("entry") - entry.attrs["NX_class"] = np.string_("NXentry") - entry.attrs["default"] = np.string_("1.1") # Optional + # Top-level NXroot + nxroot = f.create_group(subdir_name) + nxroot.attrs["NX_class"] = np.string_("NXroot") + nxroot.attrs["default"] = np.string_("1.1") for idx, result in enumerate(results_data, start=1): - group_name = f"{idx}.1" - g = entry.create_group(group_name) - g.attrs["NX_class"] = np.string_("NXentry") - g.attrs["default"] = np.string_("measurement") - - meas = g.create_group("measurement") - meas.attrs["NX_class"] = np.string_("NXdata") - meas.attrs["signal"] = np.string_("I") - meas.attrs["axes"] = np.string_("q") - meas.attrs["filename"] = np.string_(result["filename"]) # 👈 capture filename - meas.attrs["title"] = np.string_(result["filename"]) # (H5Web may show this) - - # Store datasets + entry_name = f"{idx}.1" + entry = nxroot.create_group(entry_name) + entry.attrs["NX_class"] = np.string_("NXentry") + entry.attrs["default"] = np.string_("plotdata") + + # Create full measurement group + meas = entry.create_group("measurement") + meas.attrs["NX_class"] = np.string_("NXcollection") + meas.attrs["filename"] = np.string_(result["filename"]) + meas.create_dataset("q", data=result["q"]) meas.create_dataset("I", data=result["I"]) meas.create_dataset("dI", data=result["dI"]) - # Optional: add filename as long_name attribute on I - meas["I"].attrs["long_name"] = np.string_(result["filename"]) + # Create plotdata group with proper NXdata spec + plot = entry.create_group("plotdata") + plot.attrs["NX_class"] = np.string_("NXdata") + plot.attrs["signal"] = np.string_("I") + plot.attrs["axes"] = np.string_("q") + plot.attrs["title"] = np.string_(result["filename"]) + + plot.create_dataset("q", data=result["q"]) + dset_I = plot.create_dataset("I", data=result["I"]) + dset_I.attrs["long_name"] = np.string_(result["filename"]) + plot["I"].attrs["long_name"] = "Intensity" + plot["q"].attrs["long_name"] = "Ang^-1" + + plot.create_dataset("dI", data=result["dI"]) + plot["dI"].attrs["long_name"] = np.string_("Uncertainty in I") + print(f"✅ HDF5 file '{output_file}' created with {len(results_data)} spectra.") # # Sort results_data by filename -- GitLab