From 59e173c54f9985288b0eaf63c84a577cfabf76891a284532ddae9447b9a5169c Mon Sep 17 00:00:00 2001 From: PioApocalypse Date: Mon, 16 Feb 2026 19:40:23 +0100 Subject: [PATCH] adds rastering and annealing metadata incl. UoM's --- src/main.py | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/main.py b/src/main.py index 4acf251..ba39256 100644 --- a/src/main.py +++ b/src/main.py @@ -297,16 +297,22 @@ def build_nexus_file(pld_fabrication, output_path): nx_layer.attrs["NX_class"] = "NXsubentry" layer_dict = multilayer_dict[layer] # Sub-groups of a layer + ## Target nx_target = nx_layer.create_group("target") nx_target.attrs["NX_class"] = "NXsample" target_dict = layer_dict["target"] + ## Rastering and Annealing 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" + rastering_dict = layer_dict["laser_rastering"] + nx_pre_annealing = nx_layer.create_group("pre_annealing") 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" + post_ann_dict = layer_dict["post_annealing"] + ## Target metadata try: nx_target.create_dataset("name", data = target_dict["name"]) 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"]) except TypeError as te: raise TypeError(te) + ## Other layer-specific metadata try: nx_layer.create_dataset("start_time", data = layer_dict["start_time"]) 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"] except TypeError as 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 if __name__=="__main__":