adds rastering and annealing metadata incl. UoM's

This commit is contained in:
2026-02-16 19:40:23 +01:00
parent 712cbc4788
commit 59e173c54f

View File

@@ -297,16 +297,22 @@ def build_nexus_file(pld_fabrication, output_path):
nx_layer.attrs["NX_class"] = "NXsubentry" nx_layer.attrs["NX_class"] = "NXsubentry"
layer_dict = multilayer_dict[layer] layer_dict = multilayer_dict[layer]
# Sub-groups of a layer # Sub-groups of a layer
## Target
nx_target = nx_layer.create_group("target") nx_target = nx_layer.create_group("target")
nx_target.attrs["NX_class"] = "NXsample" nx_target.attrs["NX_class"] = "NXsample"
target_dict = layer_dict["target"] target_dict = layer_dict["target"]
## Rastering and Annealing
nx_laser_rastering = nx_layer.create_group("laser_rastering") nx_laser_rastering = nx_layer.create_group("laser_rastering")
nx_pre_annealing = nx_layer.create_group("pre_annealing")
nx_post_annealing = nx_layer.create_group("post_annealing")
nx_laser_rastering.attrs["NX_class"] = "NXprocess" nx_laser_rastering.attrs["NX_class"] = "NXprocess"
rastering_dict = layer_dict["laser_rastering"]
nx_pre_annealing = nx_layer.create_group("pre_annealing")
nx_pre_annealing.attrs["NX_class"] = "NXprocess" nx_pre_annealing.attrs["NX_class"] = "NXprocess"
pre_ann_dict = layer_dict["pre_annealing"]
nx_post_annealing = nx_layer.create_group("post_annealing")
nx_post_annealing.attrs["NX_class"] = "NXprocess" nx_post_annealing.attrs["NX_class"] = "NXprocess"
post_ann_dict = layer_dict["post_annealing"]
## Target metadata
try: try:
nx_target.create_dataset("name", data = target_dict["name"]) nx_target.create_dataset("name", data = target_dict["name"])
nx_target.create_dataset("chemical_formula", data = target_dict["chemical_formula"]) nx_target.create_dataset("chemical_formula", data = target_dict["chemical_formula"])
@@ -320,6 +326,7 @@ def build_nexus_file(pld_fabrication, output_path):
nx_target.create_dataset("batch_id", data = target_dict["batch_id"]) nx_target.create_dataset("batch_id", data = target_dict["batch_id"])
except TypeError as te: except TypeError as te:
raise TypeError(te) raise TypeError(te)
## Other layer-specific metadata
try: try:
nx_layer.create_dataset("start_time", data = layer_dict["start_time"]) nx_layer.create_dataset("start_time", data = layer_dict["start_time"])
nx_layer.create_dataset("operator", data = layer_dict["operator"]) nx_layer.create_dataset("operator", data = layer_dict["operator"])
@@ -346,6 +353,34 @@ def build_nexus_file(pld_fabrication, output_path):
nx_layer["laser_energy"].attrs["units"] = layer_dict["laser_energy"]["units"] nx_layer["laser_energy"].attrs["units"] = layer_dict["laser_energy"]["units"]
except TypeError as te: except TypeError as te:
raise TypeError(te) raise TypeError(te)
## Rastering metadata
try:
nx_laser_rastering.create_dataset("geometry", data = rastering_dict["geometry"])
nx_laser_rastering.create_dataset("positions", data = rastering_dict["positions"])
nx_laser_rastering.create_dataset("velocities", data = rastering_dict["velocities"])
except TypeError as te:
raise TypeError(te)
## Annealing metadata
try:
nx_pre_annealing.create_dataset("ambient_gas", data = pre_ann_dict["ambient_gas"])
nx_pre_annealing.create_dataset("pressure", data = pre_ann_dict["pressure"]["value"])
nx_pre_annealing["pressure"].attrs["units"] = pre_ann_dict["pressure"]["units"]
nx_pre_annealing.create_dataset("temperature", data = pre_ann_dict["temperature"]["value"])
nx_pre_annealing["temperature"].attrs["units"] = pre_ann_dict["temperature"]["units"]
nx_pre_annealing.create_dataset("duration", data = pre_ann_dict["duration"]["value"])
nx_pre_annealing["duration"].attrs["units"] = pre_ann_dict["duration"]["units"]
except TypeError as te:
raise TypeError(te)
try:
nx_post_annealing.create_dataset("ambient_gas", data = post_ann_dict["ambient_gas"])
nx_post_annealing.create_dataset("pressure", data = post_ann_dict["pressure"]["value"])
nx_post_annealing["pressure"].attrs["units"] = post_ann_dict["pressure"]["units"]
nx_post_annealing.create_dataset("temperature", data = post_ann_dict["temperature"]["value"])
nx_post_annealing["temperature"].attrs["units"] = post_ann_dict["temperature"]["units"]
nx_post_annealing.create_dataset("duration", data = post_ann_dict["duration"]["value"])
nx_post_annealing["duration"].attrs["units"] = post_ann_dict["duration"]["units"]
except TypeError as te:
raise TypeError(te)
return return
if __name__=="__main__": if __name__=="__main__":