From 50a124e9dcb632461b5b522afe9074e83e740385 Mon Sep 17 00:00:00 2001 From: x10da Date: Wed, 1 Jul 2026 08:58:39 +0200 Subject: [PATCH] adaption to Debye structure --- .../file_writer/superxas_nexus_structure.py | 112 ++++++++++-------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/superxas_bec/file_writer/superxas_nexus_structure.py b/superxas_bec/file_writer/superxas_nexus_structure.py index fbfacb3..1a0c882 100644 --- a/superxas_bec/file_writer/superxas_nexus_structure.py +++ b/superxas_bec/file_writer/superxas_nexus_structure.py @@ -220,52 +220,59 @@ class SuperXASNexusStructure(DefaultFormat): self.configuration.get("nidaq", {}).get("nidaq_add_chans", {}).get("value") ) + rle = ( + self.configuration.get("nidaq", {}).get("nidaq_enable_compression", {}).get("value") + ) + measurement_mode = entry.create_group(name="mode") measurement_mode.attrs["NX_class"] = "NX_CHAR" - if (int(ci_chans_bits) & 0x7F) != 0: - # Create a dataset - rayspec_sdd_active = measurement_mode.create_group( - name="Multi_Element_Partial_Fluorescence_Yield" - ) - me_sdd = rayspec_sdd_active.create_dataset( - name="Detector", data="Rayspec 7 element Silicon Drift Detector" - ) - me_sdd.attrs["NX_class"] = "NX_CHAR" + if ci_chans_bits is not None: + if (int(ci_chans_bits) & 0x7F) != 0: + # Create a dataset + rayspec_sdd_active = measurement_mode.create_group( + name="Multi_Element_Partial_Fluorescence_Yield" + ) + me_sdd = rayspec_sdd_active.create_dataset( + name="Detector", data="Rayspec 7 element Silicon Drift Detector" + ) + me_sdd.attrs["NX_class"] = "NX_CHAR" - if (int(ci_chans_bits) & (1 << 8)) != 0: - # Create a dataset - ketek_sdd_active = measurement_mode.create_group( - name="Single_Element_Partial_Fluorescence_Yield" - ) - se_sdd = ketek_sdd_active.create_dataset( - name="Detector", data="Ketex mini single element Silicon Drift Detector" - ) - se_sdd.attrs["NX_class"] = "NX_CHAR" + if (int(ci_chans_bits) & (1 << 8)) != 0: + # Create a dataset + ketek_sdd_active = measurement_mode.create_group( + name="Single_Element_Partial_Fluorescence_Yield" + ) + se_sdd = ketek_sdd_active.create_dataset( + name="Detector", data="Ketex mini single element Silicon Drift Detector" + ) + se_sdd.attrs["NX_class"] = "NX_CHAR" - if (int(ai_chans_bits) & (1 << 6)) != 0: - # Create a dataset - pips_active = measurement_mode.create_group(name="Total_Flourescence_Yield") - tfy = pips_active.create_dataset( - name="Detector", data="Mirion Technologies Partially Depeleted PIPS Detector" - ) - tfy.attrs["NX_class"] = "NX_CHAR" + if ai_chans_bits is not None: + if (int(ai_chans_bits) & (1 << 6)) != 0: + # Create a dataset + pips_active = measurement_mode.create_group(name="Total_Flourescence_Yield") + tfy = pips_active.create_dataset( + name="Detector", + data="Mirion Technologies Partially Depeleted PIPS Detector", + ) + tfy.attrs["NX_class"] = "NX_CHAR" - if ((int(ai_chans_bits) & (1 << 0)) != 0) & ((int(ai_chans_bits) & (1 << 2)) != 0): - # Create a dataset - ai0ai2_active = measurement_mode.create_group(name="Sample_Transmission") - sam_trans = ai0ai2_active.create_dataset( - name="Detector", data="Ionitec 15 cm gas filled Ionisation Chambers" - ) - sam_trans.attrs["NX_class"] = "NX_CHAR" + if ((int(ai_chans_bits) & (1 << 0)) != 0) & ((int(ai_chans_bits) & (1 << 2)) != 0): + # Create a dataset + ai0ai2_active = measurement_mode.create_group(name="Sample_Transmission") + sam_trans = ai0ai2_active.create_dataset( + name="Detector", data="Ionitec 15 cm gas filled Ionisation Chambers" + ) + sam_trans.attrs["NX_class"] = "NX_CHAR" - if ((int(ai_chans_bits) & (1 << 2)) != 0) & ((int(ai_chans_bits) & (1 << 4)) != 0): - # Create a dataset - ai2ai4_active = measurement_mode.create_group(name="Reference_Transmission") - ref_trans = ai2ai4_active.create_dataset( - name="Detector", data="Ionitec 15 cm gas filled Ionisation Chambers" - ) - ref_trans.attrs["NX_class"] = "NX_CHAR" + if ((int(ai_chans_bits) & (1 << 2)) != 0) & ((int(ai_chans_bits) & (1 << 4)) != 0): + # Create a dataset + ai2ai4_active = measurement_mode.create_group(name="Reference_Transmission") + ref_trans = ai2ai4_active.create_dataset( + name="Detector", data="Ionitec 15 cm gas filled Ionisation Chambers" + ) + ref_trans.attrs["NX_class"] = "NX_CHAR" main_data = entry.create_group(name="data") main_data.attrs["NX_class"] = "NXdata" @@ -292,10 +299,11 @@ class SuperXASNexusStructure(DefaultFormat): i0.attrs["NX_class"] = "NXdata" i0.attrs["units"] = "V" - main_data.create_soft_link( - name="i0", - target="/entry/collection/readout_groups/async/nidaq/nidaq_ai0_mean/value", - ) + if rle: + target = "/entry/collection/readout_groups/async/nidaq/nidaq_ai0_mean/value" + else: + target = "/entry/collection/readout_groups/async/nidaq/nidaq_ai0/value" + main_data.create_soft_link(name="i0", target=target) ################## ## i1 @@ -306,10 +314,11 @@ class SuperXASNexusStructure(DefaultFormat): i1.attrs["NX_class"] = "NXdata" i1.attrs["units"] = "V" - main_data.create_soft_link( - name="i1", - target="/entry/collection/readout_groups/async/nidaq/nidaq_ai2_mean/value", - ) + if rle: + target = "/entry/collection/readout_groups/async/nidaq/nidaq_ai2_mean/value" + else: + target = "/entry/collection/readout_groups/async/nidaq/nidaq_ai2/value" + main_data.create_soft_link(name="i1", target=target) ################## ## i2 @@ -320,10 +329,11 @@ class SuperXASNexusStructure(DefaultFormat): i2.attrs["NX_class"] = "NXdata" i2.attrs["units"] = "V" - main_data.create_soft_link( - name="i2", - target="/entry/collection/readout_groups/async/nidaq/nidaq_ai4_mean/value", - ) + if rle: + target = "/entry/collection/readout_groups/async/nidaq/nidaq_ai4_mean/value" + else: + target = "/entry/collection/readout_groups/async/nidaq/nidaq_ai4/value" + main_data.create_soft_link(name="i2", target=target) ################## ## ci sum