feat(debye-nexus-structure): add first nexus template for debye
This commit is contained in:
@@ -10,17 +10,88 @@ class DebyeNexusStructure(DefaultFormat):
|
||||
entry.attrs["NX_class"] = "NXentry"
|
||||
instrument = entry.create_group(name="instrument")
|
||||
instrument.attrs["NX_class"] = "NXinstrument"
|
||||
monochromator = instrument.create_group(name="monochromator")
|
||||
# monochromator.attrs["NX_class"] = "NXmonochromator" -> to be checked
|
||||
crystal = monochromator.create_group(name="crystal")
|
||||
|
||||
###################
|
||||
## mo1_bragg specific information
|
||||
###################
|
||||
|
||||
# Logic if device exist
|
||||
if "mo_trx" in self.device_manager.devices:
|
||||
if "mo1_bragg" in self.device_manager.devices:
|
||||
|
||||
monochromator = instrument.create_group(name="monochromator")
|
||||
monochromator.attrs["NX_class"] = "NXmonochromator"
|
||||
crystal = monochromator.create_group(name="crystal")
|
||||
crystal.attrs["NX_class"] = "NXcrystal"
|
||||
|
||||
# Create a dataset
|
||||
chemical_formular = crystal.create_dataset(name="chemical_formular", data='Si')
|
||||
chemical_formular.attrs["NX_class"] = "NX_CHAR"
|
||||
|
||||
# Create a softlink
|
||||
chemical_formular = crystal.create_soft_link(name="chemical_formular", target="/entry/collection/devices/mo_trx/mo_trx")
|
||||
chemical_formular.attrs["NX_class"] = "NXdata"
|
||||
|
||||
d_spacing = crystal.create_soft_link(name="d_spacing", target="/entry/collection/devices/mo1_bragg/mo1_bragg_crystal_current_d_spacing/value")
|
||||
d_spacing.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
offset = crystal.create_soft_link(name="offset", target="/entry/collection/devices/mo1_bragg/mo1_bragg_crystal_current_offset/value")
|
||||
offset.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
reflection = crystal.create_soft_link(name="reflection", target="/entry/collection/devices/mo1_bragg/mo1_bragg_crystal_current_xtal_string/value")
|
||||
reflection.attrs["NX_class"] = "NX_CHAR"
|
||||
|
||||
|
||||
##################
|
||||
## cm mirror specific information
|
||||
###################
|
||||
|
||||
collimating_mirror = instrument.create_group(name="collimating_mirror")
|
||||
collimating_mirror.attrs["NX_class"] = "NXmirror"
|
||||
|
||||
cm_substrate_material = collimating_mirror.create_dataset(name="substrate_material", data='Si')
|
||||
cm_substrate_material.attrs["NX_class"] = "NX_CHAR"
|
||||
|
||||
cm_bending_radius = collimating_mirror.create_soft_link(name="sagittal radius", target="/entry/collection/devices/cm_bnd_radius/cm_bnd_radius/value")
|
||||
cm_bending_radius.attrs["NX_class"] = "NX_FLOAT"
|
||||
cm_bending_radius.attrs["units"] = 'km'
|
||||
|
||||
cm_incidence_angle = collimating_mirror.create_soft_link(name="incidence angle", target="/entry/collection/devices/cm_rotx/cm_rotx/value")
|
||||
cm_incidence_angle.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
cm_yaw_angle = collimating_mirror.create_soft_link(name="incident angle", target="/entry/collection/devices/cm_roty/cm_roty/value")
|
||||
cm_yaw_angle.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
##################
|
||||
## fm mirror specific information
|
||||
###################
|
||||
|
||||
focusing_mirror = instrument.create_group(name="focusing_mirror")
|
||||
focusing_mirror.attrs["NX_class"] = "NXmirror"
|
||||
|
||||
fm_substrate_material = focusing_mirror.create_dataset(name="substrate_material", data='Si')
|
||||
fm_substrate_material.attrs["NX_class"] = "NX_CHAR"
|
||||
|
||||
fm_bending_radius = focusing_mirror.create_soft_link(name="sagittal radius", target="/entry/collection/devices/fm_bnd_radius/fm_bnd_radius/value")
|
||||
fm_bending_radius.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
fm_incidence_angle = focusing_mirror.create_soft_link(name="incidence angle", target="/entry/collection/devices/fm_incidence_angle/fm_incidence_angle/value")
|
||||
fm_incidence_angle.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
fm_yaw_angle = focusing_mirror.create_soft_link(name="yaw angle", target="/entry/collection/devices/fm_roty/fm_roty/value")
|
||||
fm_yaw_angle.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
fm_roll_angle = focusing_mirror.create_soft_link(name="roll angle", target="/entry/collection/devices/fm_rotz/fm_rotz/value")
|
||||
fm_roll_angle.attrs["NX_class"] = "NX_FLOAT"
|
||||
|
||||
##################
|
||||
## source specific information
|
||||
###################
|
||||
|
||||
source = instrument.create_group(name="source")
|
||||
source.attrs["NX_class"] = "NXsource"
|
||||
|
||||
beamline_name = source.create_dataset(name="beamline_name", data='Debye')
|
||||
beamline_name.attrs["NX_class"] = "NX_CHAR"
|
||||
|
||||
facility_name = source.create_dataset(name="facility_name", data='Swiss Light Source')
|
||||
facility_name.attrs["NX_class"] = "NX_CHAR"
|
||||
|
||||
probe = source.create_dataset(name="probe", data='X-ray')
|
||||
probe.attrs["NX_class"] = "NX_CHAR"
|
||||
Reference in New Issue
Block a user