import numpy as np
import h5py
with h5py.File("nexus.nx", "w") as h5file:
root_group = h5file
root_group.attrs["NX_class"] = "NXroot"
root_group.attrs["default"] = "entry"
entry = root_group.create_group("entry")
entry.attrs["NX_class"] = "NXentry"
entry.attrs["default"] = "process/spectrum"
process = entry.create_group("process")
process.attrs["NX_class"] = "NXprocess"
process.attrs["default"] = "spectrum"
spectrum = process.create_group("spectrum")
spectrum.attrs["NX_class"] = "NXdata"
spectrum.attrs["signal"] = "data"
spectrum.attrs["auxiliary_signals"] = ["aux1", "aux2"]
data = np.array([np.linspace(-x, x, 10) for x in range(1, 6)])
spectrum["data"] = data ** 2
spectrum["aux1"] = -(data ** 2)
spectrum["aux2"] = -data
spectrum["data"].attrs["interpretation"] = "spectrum"
image = process.create_group("image")
image.attrs["NX_class"] = "NXdata"
image.attrs["signal"] = "data"
x = np.linspace(-5, 5, 50)
x0 = np.linspace(10, 100, 10)
image["data"] = [a*x**2 for a in x0]
image["X"] = np.linspace(-2, 2, 50, endpoint=False)
image["X"].attrs["units"] = u"µm"
image["Y"] = np.linspace(0, 0.1, 10, endpoint=False)
image["Y"].attrs["units"] = "s"
image.attrs["axes"] = ["X"]
image.attrs["axes"] = ["Y", "X"]