diff --git a/.cspell/custom-dictionary.txt b/.cspell/custom-dictionary.txt
index 78b0b26551..b4b1cf8c01 100644
--- a/.cspell/custom-dictionary.txt
+++ b/.cspell/custom-dictionary.txt
@@ -1,39 +1,5 @@
-# Custom Dictionary Words
-
-## NeXus related words
-AXISNAME
-FIELDNAME
-GROUPNAME
-NAPI
-NIAC
-TASKCONFIG
-TASKPROCESSED
-UDUNITS
-UDunits
-UNKNOWNTYPE
-_NXcanSAS_minimum
-docstrings
-groupname
-nxdl
-nxdlformat
-somenxdl
-
-## LateX, XML
-bibtex
-boldsymbol
-linenos
-linspace
-literalinclude
-mathbf
-mathcal
-mathrm
-mtex
-stylesheet
-textalpha
-varphi
-mathfrak
-# Words related to experimental techniques
+# Custom Dictionary Words
360-gons
4DSTEM
532nmlaser
@@ -43,28 +9,67 @@ ACOM
ARPES
ARXPS
ASTAR
+AXISNAME
+Acta
+Acta.Crysta
+Adrien
+Adv. Opt. Techn.
+Aimo
+Akaike
Analzer
Angström
+Ankerest
Ansatz
+Appl
+Aspnes
+Azimuthally
+Azzam
Backscatter
Backscattered
+Baluffi
+Bashara
Beampath
Beamsplitter
Beamstops
+Bergmann
+Berkels
Bfield
Bitdepth
+Bollmann
+Bonse
+Borkowski
+Bravais
+Breen
+Britton
+Bruker
+Brückner
+Bünger
CEOS
CGAL
CHANNELNAME
CMOS
CNRI
+Cameca
+Cameca's
+Cardona
Coeff
Coprecipitation
+DAFS
+DAXIS
DCOM
+DESY
DFM
DXRD
Defocus
Delocalization
+Diehl
+Dierksen
+Dillamore
+Dimiduk
+Dimkou
+Doniach-Sunjic
+Dresselhaus
+Dunin
EASI
EBSD
EBSP
@@ -73,33 +78,66 @@ ECMOS
EDAX
EDAXH5
EDXS
+EIKOS
ESCA
+EXAFS
E_LAPLACE_RITCHARDSON
Efield
-Efield
Einzel
Ellipsometry
+Erlangen
+Ewald
FFTW
+FIELDNAME
FVNQHLCGSHLVEALYLVCGERGFFYTPKA
FWHM
+Felfer
+Fleischmann
+Fluerasu
+Freysoldt
+Friedel
+Frigo
Fullerenes
GEOREF
GISAS
GIVEQCCTSICSLYQLENYCN
GLOBULITIC
+GROUPNAME
+Gault
+Gehrke
+Gerd
+Gernot
+Ghebi
+Giannuzzi
Gibbsian
Gini
+Ginkel
+Glan
+Glan-Focault
Globar
+Gottstein
+Graeff
+Granularizing
+Groeber
+Götz
+Güntherodt
HAGB
HAXPES
HDBSCAN
HEDM
+HERFD
HPDB
HRTEM
HWHM
+Haase
Halfwidth
+Hartmeier
Hashvalue
+Hawkes
+Heusler
+Hielscher
Histo
+Hoshen-Kopelman
ICAMS
ICAT
ICME
@@ -107,37 +145,114 @@ ICSD
IFES
IGSN
IGSNs
+INDU
+IPFY
ISFET
ISNI
ISSN
+IUPAC
IVAS
Idev
Inconel
-INDU
Inplane
+Inspico
+Institut
Iontype
Iontypes
Isocontour
+J. Appl. Cryst.
+J. Phys. D: Appl. Phys.
+JEOL
+Jorio
+Jägle
+Katnagallu
+Keerthi
Kfactor
+Kikuchi
+Kitrick
+Kocks
+Konijnenberg
+Kopelman
+Krakauer
+Krakauer/Seidman
+Kushnir
+Kühbach
+LAWATAP
LIMS
+Laidlaw
+Leoben
+Leuning
+Levenberg-Marquardt
+Lewiner
+Liesenjohann
+Lili
+Lorensen
+Lumma
MPES
+Malac
+Manz
+Markus
+MatWerk
+Mater Charac
+McInnes
+McStas
+Megas
+Mersenne
Microstructures
+Miessen
+Mießen
+Monajem
Monochromatized
+Morawiec
+NAPI
NAPXPS
+NCNR
+NFDI
NFFT
+NIAC
+NION
NNNC
+Nadal
+Nanobeam
+Nanonis
+Neighbour
+Nellist
+Neumann
Ngrains
Nicol
+Niessen
+Nion
+Nolze
+Normarski
Nuclides
+OINA
+OMERO
+ORCID
+ORNL
+Ophus
+PANalytical
PEEM
+PONI
PRNG
PVDF
PYCCAPT
Parabolical
+Paraview
+Patala
+Pauly
+Pawley
+Pedersen
+Peltier
+Pennycock
Piezo
Plottable
-PONI
+Poac
+Popko
+Poschenrieder
Prefactor
+Preiß
+Primig
+Protochips
QUBE
Qdev
Qmean
@@ -146,8 +261,18 @@ RDMS
RHIT
RRAW
RRNG
+Rainer
Raman
+Reichmann
+Reimer
+Remmele
+Rielli
+Rietveld
+Rochon
+Rollett
+Romaner
Ronchigram
+Rowenhorst
SAS
SAXS
SENB
@@ -158,38 +283,94 @@ SPLEED
SPPERS
STXM
SXES
+Saxena
+Schmitz's
+Schoenflies
+Schröder
+Sebald
+Seblock
+Seidman
+Seitz
+Senarmont
+Shermann
+Soller
+Stender
Stereology
Stigmator
Superlattices
Supermirror
+TAPHR
+TASKCONFIG
+TASKPROCESSED
TCSPC
TERMS
TERS
+Tait
+Tanaka
Tdev
+Techn
+Tera
+Teutrie
+Thilo
Titanates
+Tougaard
Trac
Traj
Transfermatrix
Triplejunction
+Tsai
+Turnbull
+Typke
+UDUNITS
+UDunits
+UNKNOWNTYPE
+Uchic
+Uncentrainties
Unidata
+VIBSO
VLEED
+VORONOI
+VORONOY
VOXELIZED
+Voigt
+Volterra
+Voronoi
WAXS
WSAS
WWPDB
+Wellenreuther
+Weppelman
+Windl
+Winkelmann
+XAXIS
XDMF
+XEOL
XFEL
XPCS
+XYZpiezo
+XYpiezo
Xtranslation
+Zaver
+Zener
Zincblende
Zirconate
+Zollner
+_NXcanSAS_minimum
aabb
abundancies
+acquistion
+acquistions
aequatorial
alphabetagamma
alphaone
alphatwo
+analyse
+analyser
+analysers
+asscociated
autophase
+azim
+azimuthally
azint
backgr
backprojection
@@ -203,6 +384,8 @@ beampath
beamsplitter
beamsplitters
beamstop
+behaviour
+bibtex
bicrystal
biprism
bitdepth
@@ -213,10 +396,16 @@ bitmasked
bitshift
blackbox
blankers
+bluesky
+boldsymbol
+bookkeep
+bookkeeps
+bookkept
bromoiodide
bytesize
calib
calipher
+cameca
canSAS
cand
castaing_henry
@@ -229,6 +418,7 @@ cdeformed
ceos
cgal
channeltron
+characterizable
childs
clambed
clust
@@ -237,6 +427,7 @@ coarsement
collectioncolumn
combinatorially
coorporation
+copernicium
coprecipitates
coprecipitation
countrate
@@ -244,6 +435,8 @@ cryo
cryostate
cvinfo
cxidb
+dafs
+darmstadtium
datablock
dataconverters
dataspace
@@ -255,6 +448,7 @@ deconvolution
decorrelation
defocus
defocusing
+defracted
deloc
delocalization
delocalized
@@ -264,10 +458,12 @@ deuterated
diagionalized
diffractogram
diffractograms
+dimensioness
disclination
disorientations
dispersoids
distancer
+docstrings
dodecapole
downsample
downsampled
@@ -275,6 +471,7 @@ downsampling
dspacing
ebeam
ebsd
+edgecolors
einzel
electronanalyzer
electronvolt
@@ -289,16 +486,24 @@ equisized
equispaced
eucentric
eulerian
+extremal
+fRecoVolume
+facecolors
fastaxisname
feedthrough
+figsize
flatfield
+flerovium
fluence
focallength
folksonomies
+folowing
+fontsize
forw
fractography
frustrum
fscan
+gatan_imaging
gault
geiser
globar
@@ -307,10 +512,13 @@ golay
granularization
granularize
granularized
+groupname
hagb
halfwidth
hashvalues
hdbscan
+hehe
+heteronuclear
heterophase
hexahedrally
hexapole
@@ -323,11 +531,16 @@ hydroxonium
hyperslab
hyperspectral
ibeam
+icatproject.org
+ifes_apt_tc_data_modeling
+inbetween
+inchi
infty
inplane
interconvert
interp
intersector
+invizo
ionlabels
iontype
iontypes
@@ -339,12 +552,24 @@ isovalue
ityp
ivec
ivecmax
+kanapy
kbeta
+kuehbach
lagb
+laplace_ritchardson
laserline
+lepoac
linearities
+linenos
+linspace
+literalinclude
+livermorium
lockin
magn
+mathbf
+mathcal
+mathfrak
+mathrm
max_sothree_bandwidth
max_stwo_bandwidth
measurand
@@ -354,15 +579,20 @@ microstructures
microtip
microtips
misorientations
+misorienting
+mkuehbach
mmcif
monochromating
monochromator
monochromators
monoclinic
+moscovium
mosek
+mplot
mqmax
mqmin
mrad
+mtex
multicomponent
multidetector
multipole
@@ -371,10 +601,19 @@ multiscale
n-gons
n_speci
nabla
+nadal
+nanochem
nanoparticle
+nanoprobe
ncal
ndim
+neighbour
+nihonium
+nion
nonlinearities
+normalisation
+normalise
+normalised
npts
nshapepar
nstd
@@ -393,22 +632,34 @@ numvalue
numx
numy
nvalue
+nxdl
+nxdlformat
objs
octupole
+oganesson
oned
openloop
+optimisation
orcid
orientable
+orientation_rodrigues
outcoming
overvoltage
+oxidising
+parametrizations
+parametrizing
+paraprobe
+paraprobe-parmsetup-nanochem
pdbx
phaseplate
photodiode
piezo
piezoelectrics
piezos
+piola
plottable
pmatrix
+polarisation
polariton
polarizers
polepiece
@@ -423,26 +674,39 @@ polytopes
polyvinylidene
poni
potentiostat
+practise
+presense
+processability
+propto
proxigram
pseudosymmetry
ptychography
+pynxtools
+pyxem
raman
+rangeable
raylight
rdeform
readback
recalibrations
+recreatable
rediscretization
rediscretized
rediscretizing
reflectometer
reflectron
+reflexafs
regrid
regridding
+reproducability
retardance
retrieveable
reusage
ripleyk
+roentgenium
rois
+rollett_holm
+rotation_rodrigues
sasdata
sasdetector
sasentry
@@ -457,17 +721,23 @@ saveframe
scanbox
scanfield
scanpoints
+schottky
+sebald_gottstein
+seblock
semiaxes
setpoint
setpoints
sextett
shapepar
+shermann
shipswing
shring
slowaxisname
soller_angle
+somenxdl
sonoluminescence
spatstat
+speciality
spectr.
spectralfilter
sphx
@@ -475,24 +745,34 @@ spwidth
stepsize
stigmators
stxm
+stylesheet
subgrain
subgrains
subprocessing
+summarised
superconcepts
supercontinuum
supermirror
supermirrors
+synchronised
tautomeric
+tennessine
tensorial
tessellator
tetrahedralization
tetrahedralize
+textalpha
thermalized
thermomechanical
+timeslot
+timestamping
+toolkits
+tracability
traj
transferfunction
transfermatrices
transfermatrix
+transimpedance
triglycine
turbomolecular
twotheta
@@ -500,9 +780,17 @@ twotime
underconstrained
underload
undulator
+unlooped
+unranged
unvalidated
+utilised
varepsilon
+varphi
+verts
vibropolishing
+visualisation
+von Neumann
+voronoi
voxelated
voxelization
watertightness
@@ -510,305 +798,14 @@ wavelen
wavelenghts
wavenumber
waveplate
+weared
wilhelmy
xdim
xdmf
-ydim
-zener
-zoneplate
-XYZpiezo
-XYpiezo
-transimpedance
-
-# Names used for publications, places, companies, etc.
-Acta
-Acta.Crysta
-Adrien
-Adv. Opt. Techn.
-Aimo
-Akaike
-Ankerest
-Appl
-Aspnes
-Azzam
-Baluffi
-Bashara
-Bergmann
-Berkels
-Bollmann
-Bonse
-Borkowski
-Bravais
-Breen
-Britton
-Bruker
-Brückner
-Bünger
-Cameca
-Cameca's
-Cardona
-DESY
-Diehl
-Dierksen
-Dillamore
-Dimiduk
-Dimkou
-Doniach-Sunjic
-Dresselhaus
-Dunin
-EIKOS
-Erlangen
-Ewald
-Felfer
-Fleischmann
-Fluerasu
-Freysoldt
-Friedel
-Frigo
-Gault
-Gehrke
-Gerd
-Gernot
-Gernot
-Ghebi
-Giannuzzi
-Ginkel
-Glan
-Glan-Focault
-Gottstein
-Graeff
-Groeber
-Götz
-Güntherodt
-Haase
-Hartmeier
-Hawkes
-Heusler
-Hielscher
-Hoshen-Kopelman
-IUPAC
-Inspico
-J. Appl. Cryst.
-J. Phys. D: Appl. Phys.
-JEOL
-Jorio
-Jägle
-Katnagallu
-Keerthi
-Kikuchi
-Kitrick
-Kocks
-Konijnenberg
-Kopelman
-Krakauer
-Krakauer/Seidman
-Kushnir
-Kühbach
-LAWATAP
-Laidlaw
-Leoben
-Leuning
-Levenberg-Marquardt
-Lewiner
-Liesenjohann
-Lili
-Lorensen
-Lumma
-Malac
-Manz
-Markus
-MatWerk
-Mater Charac
-McInnes
-McStas
-Megas
-Mersenne
-Miessen
-Mießen
-Monajem
-Morawiec
-Nadal
-NCNR
-NFDI
-NION
-Nanonis
-Nellist
-Neumann
-Niessen
-Nion
-Nolze
-Normarski
-OINA
-ORCID
-ORNL
-Ophus
-PANalytical
-Patala
-Pauly
-Pawley
-Pedersen
-Peltier
-Pennycock
-Poac
-Popko
-Poschenrieder
-Preiß
-Primig
-Protochips
-Rainer
-Reichmann
-Reimer
-Remmele
-Rielli
-Rietveld
-Rochon
-Rollett
-Romaner
-Rowenhorst
-Saxena
-Schmitz's
-Schoenflies
-Schröder
-Sebald
-Seblock
-Seidman
-Seitz
-Senarmont
-Shermann
-Soller
-Stender
-TAPHR
-Tait
-Tanaka
-Techn
-Tera
-Teutrie
-Thilo
-Tougaard
-Tsai
-Turnbull
-Typke
-Uchic
-VIBSO
-VORONOI
-VORONOY
-Voigt
-Volterra
-Voronoi
-Wellenreuther
-Weppelman
-Windl
-Winkelmann
-Zaver
-Zener
-Zollner
-bluesky
-cameca
-fRecoVolume
-gatan_imaging
-icatproject.org
-inchi
-invizo
-kanapy
-kuehbach
-laplace_ritchardson
-lepoac
-mkuehbach
-nadal
-nion
-orientation_rodrigues
-piola
-ripleyk
-rollett_holm
-rotation_rodrigues
-schottky
-sebald_gottstein
-seblock
-shermann
-von Neumann
-voronoi
-
-# Software
-Nanobeam
-OMERO
-Paraview
-ifes_apt_tc_data_modeling
-nanochem
-nanoprobe
-paraprobe
-paraprobe-parmsetup-nanochem
-pynxtools
-pyxem
-
-# Data plotting
-azim
-DAXIS
-edgecolors
-facecolors
-figsize
-fontsize
-mplot
-toolkits
-verts
-XAXIS
+xeol
xlim
+ydim
ylim
+zener
zlim
-
-# other languages
-Institut
-
-# en-UK which requires to many changes
-Neighbour
-analyse
-analyser
-analysers
-behaviour
-defracted
-neighbour
-normalisation
-normalise
-normalised
-optimisation
-oxidising
-polarisation
-practise
-presense
-summarised
-synchronised
-utilised
-visualisation
-
-# misc
-Azimuthally
-Granularizing
-azimuthally
-bookkeep
-bookkeeps
-bookkept
-characterizable
-extremal
-hehe
-inbetween
-misorienting
-parametrizations
-parametrizing
-processability
-rangeable
-recreatable
-speciality
-timeslot
-timestamping
-tracability
-unlooped
-unranged
-weared
-
-# to fix in future releases (all in NXstress)
-acquistion
-acquistions
-asscociated
-dimensioness
-folowing
-reproducability
-Uncentrainties
+zoneplate
diff --git a/contributed_definitions/NXedge.nxdl.xml b/contributed_definitions/NXedge.nxdl.xml
new file mode 100644
index 0000000000..37a64e2a4b
--- /dev/null
+++ b/contributed_definitions/NXedge.nxdl.xml
@@ -0,0 +1,58 @@
+
+
+
+
+ Absorption edge
+
+
+ Name of the edge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/contributed_definitions/NXelement.nxdl.xml b/contributed_definitions/NXelement.nxdl.xml
new file mode 100644
index 0000000000..714c788343
--- /dev/null
+++ b/contributed_definitions/NXelement.nxdl.xml
@@ -0,0 +1,171 @@
+
+
+
+
+ Definition of a chemical element.
+
+
+ For each symbol, the atomic number, common English name, and standard atomic weight are also given.
+
+
+ - Z=1, name="hydrogen", standard_atomic_weight=1.0078
+ - Z=2, name="helium", standard_atomic_weight=4.0026
+ - Z=3, name="lithium", standard_atomic_weight=6.94
+ - Z=4, name="beryllium", standard_atomic_weight=9.0122
+ - Z=5, name="boron", standard_atomic_weight=10.81
+ - Z=6, name="carbon", standard_atomic_weight=12.011
+ - Z=7, name="nitrogen", standard_atomic_weight=14.007
+ - Z=8, name="oxygen", standard_atomic_weight=15.999
+ - Z=9, name="fluorine", standard_atomic_weight=18.9984
+ - Z=10, name="neon", standard_atomic_weight=20.1797
+ - Z=11, name="sodium", standard_atomic_weight=22.9898
+ - Z=12, name="magnesium", standard_atomic_weight=24.305
+ - Z=13, name="aluminum", standard_atomic_weight=26.9815
+ - Z=14, name="silicon", standard_atomic_weight=28.085
+ - Z=15, name="phosphorus", standard_atomic_weight=30.9738
+ - Z=16, name="sulfur", standard_atomic_weight=32.06
+ - Z=17, name="chlorine", standard_atomic_weight=35.453
+ - Z=18, name="argon", standard_atomic_weight=39.948
+ - Z=19, name="potassium", standard_atomic_weight=39.0983
+ - Z=20, name="calcium", standard_atomic_weight=40.078
+ - Z=21, name="scandium", standard_atomic_weight=44.9559
+ - Z=22, name="titanium", standard_atomic_weight=47.867
+ - Z=23, name="vanadium", standard_atomic_weight=50.9415
+ - Z=24, name="chromium", standard_atomic_weight=51.996
+ - Z=25, name="manganese", standard_atomic_weight=54.938
+ - Z=26, name="iron", standard_atomic_weight=55.845
+ - Z=27, name="cobalt", standard_atomic_weight=58.9332
+ - Z=28, name="nickel", standard_atomic_weight=58.6934
+ - Z=29, name="copper", standard_atomic_weight=63.546
+ - Z=30, name="zinc", standard_atomic_weight=65.38
+ - Z=31, name="gallium", standard_atomic_weight=69.72
+ - Z=32, name="germanium", standard_atomic_weight=72.63
+ - Z=33, name="arsenic", standard_atomic_weight=74.9216
+ - Z=34, name="selenium", standard_atomic_weight=78.971
+ - Z=35, name="bromine", standard_atomic_weight=79.904
+ - Z=36, name="krypton", standard_atomic_weight=83.798
+ - Z=37, name="rubidium", standard_atomic_weight=85.4678
+ - Z=38, name="strontium", standard_atomic_weight=87.62
+ - Z=39, name="yttrium", standard_atomic_weight=88.9058
+ - Z=40, name="zirconium", standard_atomic_weight=91.224
+ - Z=41, name="niobium", standard_atomic_weight=92.9064
+ - Z=42, name="molybdenum", standard_atomic_weight=95.95
+ - Z=43, name="technetium", standard_atomic_weight=97.907
+ - Z=44, name="ruthenium", standard_atomic_weight=101.07
+ - Z=45, name="rhodium", standard_atomic_weight=102.906
+ - Z=46, name="palladium", standard_atomic_weight=106.42
+ - Z=47, name="silver", standard_atomic_weight=107.868
+ - Z=48, name="cadmium", standard_atomic_weight=112.414
+ - Z=49, name="indium", standard_atomic_weight=114.818
+ - Z=50, name="tin", standard_atomic_weight=118.71
+ - Z=51, name="antimony", standard_atomic_weight=121.76
+ - Z=52, name="tellurium", standard_atomic_weight=127.6
+ - Z=53, name="iodine", standard_atomic_weight=126.905
+ - Z=54, name="xenon", standard_atomic_weight=131.293
+ - Z=55, name="cesium", standard_atomic_weight=132.905
+ - Z=56, name="barium", standard_atomic_weight=137.327
+ - Z=57, name="lanthanum", standard_atomic_weight=138.905
+ - Z=58, name="cerium", standard_atomic_weight=140.116
+ - Z=59, name="praseodymium", standard_atomic_weight=140.908
+ - Z=60, name="neodymium", standard_atomic_weight=144.242
+ - Z=61, name="promethium", standard_atomic_weight=145.0
+ - Z=62, name="samarium", standard_atomic_weight=150.36
+ - Z=63, name="europium", standard_atomic_weight=151.96
+ - Z=64, name="gadolinium", standard_atomic_weight=157.25
+ - Z=65, name="terbium", standard_atomic_weight=158.925
+ - Z=66, name="dysprosium", standard_atomic_weight=162.5
+ - Z=67, name="holmium", standard_atomic_weight=164.93
+ - Z=68, name="erbium", standard_atomic_weight=167.259
+ - Z=69, name="thulium", standard_atomic_weight=168.934
+ - Z=70, name="ytterbium", standard_atomic_weight=173.045
+ - Z=71, name="lutetium", standard_atomic_weight=174.967
+ - Z=72, name="hafnium", standard_atomic_weight=178.49
+ - Z=73, name="tantalum", standard_atomic_weight=180.948
+ - Z=74, name="tungsten", standard_atomic_weight=183.84
+ - Z=75, name="rhenium", standard_atomic_weight=186.207
+ - Z=76, name="osmium", standard_atomic_weight=190.23
+ - Z=77, name="iridium", standard_atomic_weight=192.217
+ - Z=78, name="platinum", standard_atomic_weight=195.084
+ - Z=79, name="gold", standard_atomic_weight=196.967
+ - Z=80, name="mercury", standard_atomic_weight=200.592
+ - Z=81, name="thallium", standard_atomic_weight=204.383
+ - Z=82, name="lead", standard_atomic_weight=207.2
+ - Z=83, name="bismuth", standard_atomic_weight=208.98
+ - Z=84, name="polonium", standard_atomic_weight=209.0
+ - Z=85, name="astatine", standard_atomic_weight=210.0
+ - Z=86, name="radon", standard_atomic_weight=222.0
+ - Z=87, name="francium", standard_atomic_weight=223.0
+ - Z=88, name="radium", standard_atomic_weight=226.0
+ - Z=89, name="actinium", standard_atomic_weight=227.0
+ - Z=90, name="thorium", standard_atomic_weight=232.038
+ - Z=91, name="protactinium", standard_atomic_weight=231.036
+ - Z=92, name="uranium", standard_atomic_weight=238.029
+ - Z=93, name="neptunium", standard_atomic_weight=237.048
+ - Z=94, name="plutonium", standard_atomic_weight=239.052
+ - Z=95, name="americium", standard_atomic_weight=243.0
+ - Z=96, name="curium", standard_atomic_weight=247.0
+ - Z=97, name="berkelium", standard_atomic_weight=247.0
+ - Z=98, name="californium", standard_atomic_weight=251.0
+ - Z=99, name="einsteinium", standard_atomic_weight=252
+ - Z=100, name="fermium", standard_atomic_weight=257
+ - Z=101, name="mendelevium", standard_atomic_weight=258
+ - Z=102, name="nobelium", standard_atomic_weight=259
+ - Z=103, name="lawrencium", standard_atomic_weight=266
+ - Z=104, name="rutherfordium", standard_atomic_weight=267
+ - Z=105, name="dubnium", standard_atomic_weight=268
+ - Z=106, name="seaborgium", standard_atomic_weight=269
+ - Z=107, name="bohrium", standard_atomic_weight=270
+ - Z=108, name="hassium", standard_atomic_weight=269
+ - Z=109, name="meitnerium", standard_atomic_weight=278
+ - Z=110, name="darmstadtium", standard_atomic_weight=281
+ - Z=111, name="roentgenium", standard_atomic_weight=282
+ - Z=112, name="copernicium", standard_atomic_weight=285
+ - Z=113, name="nihonium", standard_atomic_weight=286
+ - Z=114, name="flerovium", standard_atomic_weight=289
+ - Z=115, name="moscovium", standard_atomic_weight=290
+ - Z=116, name="livermorium", standard_atomic_weight=293
+ - Z=117, name="tennessine", standard_atomic_weight=294
+ - Z=118, name="oganesson", standard_atomic_weight=294
+
+
+
+ The charge number *Z* of the atomic nucleus.
+
+
+
+ *Relative atomic mass* of the element in *amu*. It can be but is not restricted to the
+ *standard atomic weight* (using the natural abundance of isotopes).
+
+
+
+ The charge of the atom after ionic approximation of its heteronuclear bonds.
+
+
\ No newline at end of file
diff --git a/contributed_definitions/NXemission_lines.nxdl.xml b/contributed_definitions/NXemission_lines.nxdl.xml
new file mode 100644
index 0000000000..081e3a5aad
--- /dev/null
+++ b/contributed_definitions/NXemission_lines.nxdl.xml
@@ -0,0 +1,46 @@
+
+
+
+
+ Emission lines
+
+
+ The emission lines are written using the IUPAC notation, i.e. an
+ initial and final edge separated by a hyphen.
+
+ TODO: Extend the enumeration to include all possible emission lines.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/contributed_definitions/NXxas_mode.nxdl.xml b/contributed_definitions/NXxas_mode.nxdl.xml
new file mode 100644
index 0000000000..abd9815bd3
--- /dev/null
+++ b/contributed_definitions/NXxas_mode.nxdl.xml
@@ -0,0 +1,141 @@
+
+
+
+
+ XAS measurement mode
+
+
+ X-ray absorption spectroscopy (XAS) is a technique that measures the absorption coefficient :math:`\mu(E)` of a material as a function of energy.
+
+ The name of the XAS mode indicates the type of process being monitored to obtain the spectrum. Below is a description of the available modes, with emphasis on the expected values for the `intensity` and `monitor` fields.
+
+ 1. Transmission
+
+ The absorption coefficient is obtained by measuring the intensity of the incident :math:`I_0` and transmitted beam :math:`I`.
+
+ .. math::
+ \mu(E) = -\ln(I/I_0)
+
+ 2. Total fluorescence yield (TFY)
+
+ The absorption coefficient is obtained by measuring the intensity of the emitted fluorescence :math:`I_f` and the incident beam :math:`I_0`.
+
+ .. math::
+ \mu(E) \propto I_f/I_0
+
+ 3. Partial fluorescence yield (PFY)
+
+ 4. Inverse partial fluorescence yield (IPFY)
+
+ 5. High-energy resolution fluorescence detection (HERFD)
+
+ 6. Total electron yield (TEY)
+
+ 7. Partial electron yield (PEY)
+
+ 8. Electron energy loss (EELS)
+
+ 9. X-ray Raman Scattering (XRS)
+
+ 10. Diffraction Anomalous Fine Structure (DAFS)
+
+ 11. X-ray Excited Optical Luminescence (XEOL)
+
+ 12. Grazing Angle Reflection Extended X-ray Absorption Fine Structure (ReflEXAFS)
+
+ 13. Other
+
+
+ -
+
+ Transmission
+
+
+ -
+
+ Total Fluorescence Yield
+
+
+ -
+
+ Partial Fluorescence Yield
+
+
+ -
+
+ Inverse Partial Fluorescence Yield
+
+
+ -
+
+ High Energy Resolution Fluorescence Detected
+
+
+ -
+
+ Total Electron Yield
+
+
+ -
+
+ Partial Electron Yield
+
+
+ -
+
+ Electron Energy Loss
+
+
+ -
+
+ X-ray Raman Scattering
+
+
+ -
+
+ Diffraction Anomalous Fine Structure
+
+
+ -
+
+ X-ray Excited Optical Luminescence
+
+
+ -
+
+ Grazing Angle Reflection Extended X-ray Absorption Fine Structure
+
+
+ -
+
+ Other
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/contributed_definitions/NXxas_new.nxdl.xml b/contributed_definitions/NXxas_new.nxdl.xml
new file mode 100644
index 0000000000..f2f4e13bec
--- /dev/null
+++ b/contributed_definitions/NXxas_new.nxdl.xml
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+ The symbol(s) listed here will be used below to coordinate datasets with the same shape.
+
+
+ Number of energy data points
+
+
+ Number of electronic transitions
+
+
+
+ This is an application definition for X-ray absorption spectroscopy.
+
+
+
+ Official NeXus NXDL schema to which this file conforms. TODO: replace NXxas
+
+
+
+
+
+
+
+
+ Excited element
+
+
+ Absorption edge
+
+
+ Specify if the data comes from a calculation
+
+
+ TODO
+
+
+
+
+
+ TODO
+
+
+
+
+
+ TODO
+
+
+
+
+
+
+ Descriptive name of the sample
+
+
+
+
+ Description on how :ref:`energy </NXxas_new/ENTRY/energy-field>`
+ and :ref:`intensity </NXxas_new/ENTRY/intensity-field>` were obtained
+ from the raw data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ spacing between crystal planes of the reflection
+
+
+ Type or material of monochromating substance (Si, Ge, Multilayer).
+
+
+ Miller indices (hkl) values of nominal reflection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XAS intensity versus energy plot
+
+
+
+
+
+ Table like data structure common in the XAS domain.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/contributed_definitions/nyaml/NXedge.yaml b/contributed_definitions/nyaml/NXedge.yaml
new file mode 100644
index 0000000000..1fdef6f1b6
--- /dev/null
+++ b/contributed_definitions/nyaml/NXedge.yaml
@@ -0,0 +1,71 @@
+category: base
+doc: |
+ Absorption edge
+type: group
+NXedge(NXobject):
+ name(NX_CHAR):
+ exists: ['min', '1', 'max', '1']
+ doc: |
+ Name of the edge
+ enumeration: [K, L1, L2, L3, M1, M2, M3, M4, M5, N1, N2, N3, N4, N5, N6, N7, O1, O2, O3, P1, P2, P3]
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# 8ad6f4ecd50bb5d05b0448e9ca0b6dc86942bd125a2893458a2d71fb58323c91
+#
+#
+#
+#
+# Absorption edge
+#
+#
+# Name of the edge
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
\ No newline at end of file
diff --git a/contributed_definitions/nyaml/NXelement.yaml b/contributed_definitions/nyaml/NXelement.yaml
new file mode 100644
index 0000000000..9a2ea705f0
--- /dev/null
+++ b/contributed_definitions/nyaml/NXelement.yaml
@@ -0,0 +1,552 @@
+category: base
+doc: |
+ Definition of a chemical element.
+type: group
+NXelement(NXobject):
+ symbol(NX_CHAR):
+ exists: ['min', '1', 'max', '1']
+ doc: |
+ For each symbol, the atomic number, common English name, and standard atomic weight are also given.
+ enumeration:
+ H:
+ doc: |
+ Z=1, name="hydrogen", standard_atomic_weight=1.0078
+ He:
+ doc: |
+ Z=2, name="helium", standard_atomic_weight=4.0026
+ Li:
+ doc: |
+ Z=3, name="lithium", standard_atomic_weight=6.94
+ Be:
+ doc: |
+ Z=4, name="beryllium", standard_atomic_weight=9.0122
+ B:
+ doc: |
+ Z=5, name="boron", standard_atomic_weight=10.81
+ C:
+ doc: |
+ Z=6, name="carbon", standard_atomic_weight=12.011
+ N:
+ doc: |
+ Z=7, name="nitrogen", standard_atomic_weight=14.007
+ O:
+ doc: |
+ Z=8, name="oxygen", standard_atomic_weight=15.999
+ F:
+ doc: |
+ Z=9, name="fluorine", standard_atomic_weight=18.9984
+ Ne:
+ doc: |
+ Z=10, name="neon", standard_atomic_weight=20.1797
+ Na:
+ doc: |
+ Z=11, name="sodium", standard_atomic_weight=22.9898
+ Mg:
+ doc: |
+ Z=12, name="magnesium", standard_atomic_weight=24.305
+ Al:
+ doc: |
+ Z=13, name="aluminum", standard_atomic_weight=26.9815
+ Si:
+ doc: |
+ Z=14, name="silicon", standard_atomic_weight=28.085
+ P:
+ doc: |
+ Z=15, name="phosphorus", standard_atomic_weight=30.9738
+ S:
+ doc: |
+ Z=16, name="sulfur", standard_atomic_weight=32.06
+ Cl:
+ doc: |
+ Z=17, name="chlorine", standard_atomic_weight=35.453
+ Ar:
+ doc: |
+ Z=18, name="argon", standard_atomic_weight=39.948
+ K:
+ doc: |
+ Z=19, name="potassium", standard_atomic_weight=39.0983
+ Ca:
+ doc: |
+ Z=20, name="calcium", standard_atomic_weight=40.078
+ Sc:
+ doc: |
+ Z=21, name="scandium", standard_atomic_weight=44.9559
+ Ti:
+ doc: |
+ Z=22, name="titanium", standard_atomic_weight=47.867
+ V:
+ doc: |
+ Z=23, name="vanadium", standard_atomic_weight=50.9415
+ Cr:
+ doc: |
+ Z=24, name="chromium", standard_atomic_weight=51.996
+ Mn:
+ doc: |
+ Z=25, name="manganese", standard_atomic_weight=54.938
+ Fe:
+ doc: |
+ Z=26, name="iron", standard_atomic_weight=55.845
+ Co:
+ doc: |
+ Z=27, name="cobalt", standard_atomic_weight=58.9332
+ Ni:
+ doc: |
+ Z=28, name="nickel", standard_atomic_weight=58.6934
+ Cu:
+ doc: |
+ Z=29, name="copper", standard_atomic_weight=63.546
+ Zn:
+ doc: |
+ Z=30, name="zinc", standard_atomic_weight=65.38
+ Ga:
+ doc: |
+ Z=31, name="gallium", standard_atomic_weight=69.72
+ Ge:
+ doc: |
+ Z=32, name="germanium", standard_atomic_weight=72.63
+ As:
+ doc: |
+ Z=33, name="arsenic", standard_atomic_weight=74.9216
+ Se:
+ doc: |
+ Z=34, name="selenium", standard_atomic_weight=78.971
+ Br:
+ doc: |
+ Z=35, name="bromine", standard_atomic_weight=79.904
+ Kr:
+ doc: |
+ Z=36, name="krypton", standard_atomic_weight=83.798
+ Rb:
+ doc: |
+ Z=37, name="rubidium", standard_atomic_weight=85.4678
+ Sr:
+ doc: |
+ Z=38, name="strontium", standard_atomic_weight=87.62
+ Y:
+ doc: |
+ Z=39, name="yttrium", standard_atomic_weight=88.9058
+ Zr:
+ doc: |
+ Z=40, name="zirconium", standard_atomic_weight=91.224
+ Nb:
+ doc: |
+ Z=41, name="niobium", standard_atomic_weight=92.9064
+ Mo:
+ doc: |
+ Z=42, name="molybdenum", standard_atomic_weight=95.95
+ Tc:
+ doc: |
+ Z=43, name="technetium", standard_atomic_weight=97.907
+ Ru:
+ doc: |
+ Z=44, name="ruthenium", standard_atomic_weight=101.07
+ Rh:
+ doc: |
+ Z=45, name="rhodium", standard_atomic_weight=102.906
+ Pd:
+ doc: |
+ Z=46, name="palladium", standard_atomic_weight=106.42
+ Ag:
+ doc: |
+ Z=47, name="silver", standard_atomic_weight=107.868
+ Cd:
+ doc: |
+ Z=48, name="cadmium", standard_atomic_weight=112.414
+ In:
+ doc: |
+ Z=49, name="indium", standard_atomic_weight=114.818
+ Sn:
+ doc: |
+ Z=50, name="tin", standard_atomic_weight=118.71
+ Sb:
+ doc: |
+ Z=51, name="antimony", standard_atomic_weight=121.76
+ Te:
+ doc: |
+ Z=52, name="tellurium", standard_atomic_weight=127.6
+ I:
+ doc: |
+ Z=53, name="iodine", standard_atomic_weight=126.905
+ Xe:
+ doc: |
+ Z=54, name="xenon", standard_atomic_weight=131.293
+ Cs:
+ doc: |
+ Z=55, name="cesium", standard_atomic_weight=132.905
+ Ba:
+ doc: |
+ Z=56, name="barium", standard_atomic_weight=137.327
+ La:
+ doc: |
+ Z=57, name="lanthanum", standard_atomic_weight=138.905
+ Ce:
+ doc: |
+ Z=58, name="cerium", standard_atomic_weight=140.116
+ Pr:
+ doc: |
+ Z=59, name="praseodymium", standard_atomic_weight=140.908
+ Nd:
+ doc: |
+ Z=60, name="neodymium", standard_atomic_weight=144.242
+ Pm:
+ doc: |
+ Z=61, name="promethium", standard_atomic_weight=145.0
+ Sm:
+ doc: |
+ Z=62, name="samarium", standard_atomic_weight=150.36
+ Eu:
+ doc: |
+ Z=63, name="europium", standard_atomic_weight=151.96
+ Gd:
+ doc: |
+ Z=64, name="gadolinium", standard_atomic_weight=157.25
+ Tb:
+ doc: |
+ Z=65, name="terbium", standard_atomic_weight=158.925
+ Dy:
+ doc: |
+ Z=66, name="dysprosium", standard_atomic_weight=162.5
+ Ho:
+ doc: |
+ Z=67, name="holmium", standard_atomic_weight=164.93
+ Er:
+ doc: |
+ Z=68, name="erbium", standard_atomic_weight=167.259
+ Tm:
+ doc: |
+ Z=69, name="thulium", standard_atomic_weight=168.934
+ Yb:
+ doc: |
+ Z=70, name="ytterbium", standard_atomic_weight=173.045
+ Lu:
+ doc: |
+ Z=71, name="lutetium", standard_atomic_weight=174.967
+ Hf:
+ doc: |
+ Z=72, name="hafnium", standard_atomic_weight=178.49
+ Ta:
+ doc: |
+ Z=73, name="tantalum", standard_atomic_weight=180.948
+ W:
+ doc: |
+ Z=74, name="tungsten", standard_atomic_weight=183.84
+ Re:
+ doc: |
+ Z=75, name="rhenium", standard_atomic_weight=186.207
+ Os:
+ doc: |
+ Z=76, name="osmium", standard_atomic_weight=190.23
+ Ir:
+ doc: |
+ Z=77, name="iridium", standard_atomic_weight=192.217
+ Pt:
+ doc: |
+ Z=78, name="platinum", standard_atomic_weight=195.084
+ Au:
+ doc: |
+ Z=79, name="gold", standard_atomic_weight=196.967
+ Hg:
+ doc: |
+ Z=80, name="mercury", standard_atomic_weight=200.592
+ Tl:
+ doc: |
+ Z=81, name="thallium", standard_atomic_weight=204.383
+ Pb:
+ doc: |
+ Z=82, name="lead", standard_atomic_weight=207.2
+ Bi:
+ doc: |
+ Z=83, name="bismuth", standard_atomic_weight=208.98
+ Po:
+ doc: |
+ Z=84, name="polonium", standard_atomic_weight=209.0
+ At:
+ doc: |
+ Z=85, name="astatine", standard_atomic_weight=210.0
+ Rn:
+ doc: |
+ Z=86, name="radon", standard_atomic_weight=222.0
+ Fr:
+ doc: |
+ Z=87, name="francium", standard_atomic_weight=223.0
+ Ra:
+ doc: |
+ Z=88, name="radium", standard_atomic_weight=226.0
+ Ac:
+ doc: |
+ Z=89, name="actinium", standard_atomic_weight=227.0
+ Th:
+ doc: |
+ Z=90, name="thorium", standard_atomic_weight=232.038
+ Pa:
+ doc: |
+ Z=91, name="protactinium", standard_atomic_weight=231.036
+ U:
+ doc: |
+ Z=92, name="uranium", standard_atomic_weight=238.029
+ Np:
+ doc: |
+ Z=93, name="neptunium", standard_atomic_weight=237.048
+ Pu:
+ doc: |
+ Z=94, name="plutonium", standard_atomic_weight=239.052
+ Am:
+ doc: |
+ Z=95, name="americium", standard_atomic_weight=243.0
+ Cm:
+ doc: |
+ Z=96, name="curium", standard_atomic_weight=247.0
+ Bk:
+ doc: |
+ Z=97, name="berkelium", standard_atomic_weight=247.0
+ Cf:
+ doc: |
+ Z=98, name="californium", standard_atomic_weight=251.0
+ Es:
+ doc: |
+ Z=99, name="einsteinium", standard_atomic_weight=252
+ Fm:
+ doc: |
+ Z=100, name="fermium", standard_atomic_weight=257
+ Md:
+ doc: |
+ Z=101, name="mendelevium", standard_atomic_weight=258
+ No:
+ doc: |
+ Z=102, name="nobelium", standard_atomic_weight=259
+ Lr:
+ doc: |
+ Z=103, name="lawrencium", standard_atomic_weight=266
+ Rf:
+ doc: |
+ Z=104, name="rutherfordium", standard_atomic_weight=267
+ Db:
+ doc: |
+ Z=105, name="dubnium", standard_atomic_weight=268
+ Sg:
+ doc: |
+ Z=106, name="seaborgium", standard_atomic_weight=269
+ Bh:
+ doc: |
+ Z=107, name="bohrium", standard_atomic_weight=270
+ Hs:
+ doc: |
+ Z=108, name="hassium", standard_atomic_weight=269
+ Mt:
+ doc: |
+ Z=109, name="meitnerium", standard_atomic_weight=278
+ Ds:
+ doc: |
+ Z=110, name="darmstadtium", standard_atomic_weight=281
+ Rg:
+ doc: |
+ Z=111, name="roentgenium", standard_atomic_weight=282
+ Cn:
+ doc: |
+ Z=112, name="copernicium", standard_atomic_weight=285
+ Nh:
+ doc: |
+ Z=113, name="nihonium", standard_atomic_weight=286
+ Fl:
+ doc: |
+ Z=114, name="flerovium", standard_atomic_weight=289
+ Mc:
+ doc: |
+ Z=115, name="moscovium", standard_atomic_weight=290
+ Lv:
+ doc: |
+ Z=116, name="livermorium", standard_atomic_weight=293
+ Ts:
+ doc: |
+ Z=117, name="tennessine", standard_atomic_weight=294
+ Og:
+ doc: |
+ Z=118, name="oganesson", standard_atomic_weight=294
+ atomic_number(NX_INT):
+ exists: optional
+ doc: |
+ The charge number *Z* of the atomic nucleus.
+ atomic_weight(NX_FLOAT):
+ unit: NX_MASS
+ exists: optional
+ doc: |
+ *Relative atomic mass* of the element in *amu*. It can be but is not restricted to the
+ *standard atomic weight* (using the natural abundance of isotopes).
+ oxidation_state(NX_CHAR):
+ exists: optional
+ doc: |
+ The charge of the atom after ionic approximation of its heteronuclear bonds.
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# c53b28664f543f276c59769021ea5bdddae8c6a673120ce7298ad11f2f512f13
+#
+#
+#
+#
+# Definition of a chemical element.
+#
+#
+# For each symbol, the atomic number, common English name, and standard atomic weight are also given.
+#
+#
+# - Z=1, name="hydrogen", standard_atomic_weight=1.0078
+# - Z=2, name="helium", standard_atomic_weight=4.0026
+# - Z=3, name="lithium", standard_atomic_weight=6.94
+# - Z=4, name="beryllium", standard_atomic_weight=9.0122
+# - Z=5, name="boron", standard_atomic_weight=10.81
+# - Z=6, name="carbon", standard_atomic_weight=12.011
+# - Z=7, name="nitrogen", standard_atomic_weight=14.007
+# - Z=8, name="oxygen", standard_atomic_weight=15.999
+# - Z=9, name="fluorine", standard_atomic_weight=18.9984
+# - Z=10, name="neon", standard_atomic_weight=20.1797
+# - Z=11, name="sodium", standard_atomic_weight=22.9898
+# - Z=12, name="magnesium", standard_atomic_weight=24.305
+# - Z=13, name="aluminum", standard_atomic_weight=26.9815
+# - Z=14, name="silicon", standard_atomic_weight=28.085
+# - Z=15, name="phosphorus", standard_atomic_weight=30.9738
+# - Z=16, name="sulfur", standard_atomic_weight=32.06
+# - Z=17, name="chlorine", standard_atomic_weight=35.453
+# - Z=18, name="argon", standard_atomic_weight=39.948
+# - Z=19, name="potassium", standard_atomic_weight=39.0983
+# - Z=20, name="calcium", standard_atomic_weight=40.078
+# - Z=21, name="scandium", standard_atomic_weight=44.9559
+# - Z=22, name="titanium", standard_atomic_weight=47.867
+# - Z=23, name="vanadium", standard_atomic_weight=50.9415
+# - Z=24, name="chromium", standard_atomic_weight=51.996
+# - Z=25, name="manganese", standard_atomic_weight=54.938
+# - Z=26, name="iron", standard_atomic_weight=55.845
+# - Z=27, name="cobalt", standard_atomic_weight=58.9332
+# - Z=28, name="nickel", standard_atomic_weight=58.6934
+# - Z=29, name="copper", standard_atomic_weight=63.546
+# - Z=30, name="zinc", standard_atomic_weight=65.38
+# - Z=31, name="gallium", standard_atomic_weight=69.72
+# - Z=32, name="germanium", standard_atomic_weight=72.63
+# - Z=33, name="arsenic", standard_atomic_weight=74.9216
+# - Z=34, name="selenium", standard_atomic_weight=78.971
+# - Z=35, name="bromine", standard_atomic_weight=79.904
+# - Z=36, name="krypton", standard_atomic_weight=83.798
+# - Z=37, name="rubidium", standard_atomic_weight=85.4678
+# - Z=38, name="strontium", standard_atomic_weight=87.62
+# - Z=39, name="yttrium", standard_atomic_weight=88.9058
+# - Z=40, name="zirconium", standard_atomic_weight=91.224
+# - Z=41, name="niobium", standard_atomic_weight=92.9064
+# - Z=42, name="molybdenum", standard_atomic_weight=95.95
+# - Z=43, name="technetium", standard_atomic_weight=97.907
+# - Z=44, name="ruthenium", standard_atomic_weight=101.07
+# - Z=45, name="rhodium", standard_atomic_weight=102.906
+# - Z=46, name="palladium", standard_atomic_weight=106.42
+# - Z=47, name="silver", standard_atomic_weight=107.868
+# - Z=48, name="cadmium", standard_atomic_weight=112.414
+# - Z=49, name="indium", standard_atomic_weight=114.818
+# - Z=50, name="tin", standard_atomic_weight=118.71
+# - Z=51, name="antimony", standard_atomic_weight=121.76
+# - Z=52, name="tellurium", standard_atomic_weight=127.6
+# - Z=53, name="iodine", standard_atomic_weight=126.905
+# - Z=54, name="xenon", standard_atomic_weight=131.293
+# - Z=55, name="cesium", standard_atomic_weight=132.905
+# - Z=56, name="barium", standard_atomic_weight=137.327
+# - Z=57, name="lanthanum", standard_atomic_weight=138.905
+# - Z=58, name="cerium", standard_atomic_weight=140.116
+# - Z=59, name="praseodymium", standard_atomic_weight=140.908
+# - Z=60, name="neodymium", standard_atomic_weight=144.242
+# - Z=61, name="promethium", standard_atomic_weight=145.0
+# - Z=62, name="samarium", standard_atomic_weight=150.36
+# - Z=63, name="europium", standard_atomic_weight=151.96
+# - Z=64, name="gadolinium", standard_atomic_weight=157.25
+# - Z=65, name="terbium", standard_atomic_weight=158.925
+# - Z=66, name="dysprosium", standard_atomic_weight=162.5
+# - Z=67, name="holmium", standard_atomic_weight=164.93
+# - Z=68, name="erbium", standard_atomic_weight=167.259
+# - Z=69, name="thulium", standard_atomic_weight=168.934
+# - Z=70, name="ytterbium", standard_atomic_weight=173.045
+# - Z=71, name="lutetium", standard_atomic_weight=174.967
+# - Z=72, name="hafnium", standard_atomic_weight=178.49
+# - Z=73, name="tantalum", standard_atomic_weight=180.948
+# - Z=74, name="tungsten", standard_atomic_weight=183.84
+# - Z=75, name="rhenium", standard_atomic_weight=186.207
+# - Z=76, name="osmium", standard_atomic_weight=190.23
+# - Z=77, name="iridium", standard_atomic_weight=192.217
+# - Z=78, name="platinum", standard_atomic_weight=195.084
+# - Z=79, name="gold", standard_atomic_weight=196.967
+# - Z=80, name="mercury", standard_atomic_weight=200.592
+# - Z=81, name="thallium", standard_atomic_weight=204.383
+# - Z=82, name="lead", standard_atomic_weight=207.2
+# - Z=83, name="bismuth", standard_atomic_weight=208.98
+# - Z=84, name="polonium", standard_atomic_weight=209.0
+# - Z=85, name="astatine", standard_atomic_weight=210.0
+# - Z=86, name="radon", standard_atomic_weight=222.0
+# - Z=87, name="francium", standard_atomic_weight=223.0
+# - Z=88, name="radium", standard_atomic_weight=226.0
+# - Z=89, name="actinium", standard_atomic_weight=227.0
+# - Z=90, name="thorium", standard_atomic_weight=232.038
+# - Z=91, name="protactinium", standard_atomic_weight=231.036
+# - Z=92, name="uranium", standard_atomic_weight=238.029
+# - Z=93, name="neptunium", standard_atomic_weight=237.048
+# - Z=94, name="plutonium", standard_atomic_weight=239.052
+# - Z=95, name="americium", standard_atomic_weight=243.0
+# - Z=96, name="curium", standard_atomic_weight=247.0
+# - Z=97, name="berkelium", standard_atomic_weight=247.0
+# - Z=98, name="californium", standard_atomic_weight=251.0
+# - Z=99, name="einsteinium", standard_atomic_weight=252
+# - Z=100, name="fermium", standard_atomic_weight=257
+# - Z=101, name="mendelevium", standard_atomic_weight=258
+# - Z=102, name="nobelium", standard_atomic_weight=259
+# - Z=103, name="lawrencium", standard_atomic_weight=266
+# - Z=104, name="rutherfordium", standard_atomic_weight=267
+# - Z=105, name="dubnium", standard_atomic_weight=268
+# - Z=106, name="seaborgium", standard_atomic_weight=269
+# - Z=107, name="bohrium", standard_atomic_weight=270
+# - Z=108, name="hassium", standard_atomic_weight=269
+# - Z=109, name="meitnerium", standard_atomic_weight=278
+# - Z=110, name="darmstadtium", standard_atomic_weight=281
+# - Z=111, name="roentgenium", standard_atomic_weight=282
+# - Z=112, name="copernicium", standard_atomic_weight=285
+# - Z=113, name="nihonium", standard_atomic_weight=286
+# - Z=114, name="flerovium", standard_atomic_weight=289
+# - Z=115, name="moscovium", standard_atomic_weight=290
+# - Z=116, name="livermorium", standard_atomic_weight=293
+# - Z=117, name="tennessine", standard_atomic_weight=294
+# - Z=118, name="oganesson", standard_atomic_weight=294
+#
+#
+#
+# The charge number *Z* of the atomic nucleus.
+#
+#
+#
+# *Relative atomic mass* of the element in *amu*. It can be but is not restricted to the
+# *standard atomic weight* (using the natural abundance of isotopes).
+#
+#
+#
+# The charge of the atom after ionic approximation of its heteronuclear bonds.
+#
+#
\ No newline at end of file
diff --git a/contributed_definitions/nyaml/NXemission_lines.yaml b/contributed_definitions/nyaml/NXemission_lines.yaml
new file mode 100644
index 0000000000..17ceccdf8f
--- /dev/null
+++ b/contributed_definitions/nyaml/NXemission_lines.yaml
@@ -0,0 +1,61 @@
+category: base
+doc: |
+ Emission lines
+type: group
+NXemission_lines(NXobject):
+ name(NX_CHAR):
+ doc: |
+ The emission lines are written using the IUPAC notation, i.e. an
+ initial and final edge separated by a hyphen.
+
+ TODO: Extend the enumeration to include all possible emission lines.
+ enumeration: [K-L1, K-L2, K-L3, K-M1, K-M2, K-M3, K-M4, K-M5]
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# fe76ba3bd5c4f5efb3a0007afadfdbe551fbb2382504ea2524fc2d92055b0f9a
+#
+#
+#
+#
+# Emission lines
+#
+#
+# The emission lines are written using the IUPAC notation, i.e. an
+# initial and final edge separated by a hyphen.
+#
+# TODO: Extend the enumeration to include all possible emission lines.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
\ No newline at end of file
diff --git a/contributed_definitions/nyaml/NXxas_mode.yaml b/contributed_definitions/nyaml/NXxas_mode.yaml
new file mode 100644
index 0000000000..2bae6fa483
--- /dev/null
+++ b/contributed_definitions/nyaml/NXxas_mode.yaml
@@ -0,0 +1,233 @@
+category: base
+doc: |
+ XAS measurement mode
+type: group
+NXxas_mode(NXobject):
+ name(NX_CHAR):
+ exists: ['min', '1', 'max', '1']
+ doc: |
+ X-ray absorption spectroscopy (XAS) is a technique that measures the absorption coefficient :math:`\mu(E)` of a material as a function of energy.
+
+ The name of the XAS mode indicates the type of process being monitored to obtain the spectrum. Below is a description of the available modes, with emphasis on the expected values for the `intensity` and `monitor` fields.
+
+ 1. Transmission
+
+ The absorption coefficient is obtained by measuring the intensity of the incident :math:`I_0` and transmitted beam :math:`I`.
+
+ .. math::
+ \mu(E) = -\ln(I/I_0)
+
+ 2. Total fluorescence yield (TFY)
+
+ The absorption coefficient is obtained by measuring the intensity of the emitted fluorescence :math:`I_f` and the incident beam :math:`I_0`.
+
+ .. math::
+ \mu(E) \propto I_f/I_0
+
+ 3. Partial fluorescence yield (PFY)
+
+ 4. Inverse partial fluorescence yield (IPFY)
+
+ 5. High-energy resolution fluorescence detection (HERFD)
+
+ 6. Total electron yield (TEY)
+
+ 7. Partial electron yield (PEY)
+
+ 8. Electron energy loss (EELS)
+
+ 9. X-ray Raman Scattering (XRS)
+
+ 10. Diffraction Anomalous Fine Structure (DAFS)
+
+ 11. X-ray Excited Optical Luminescence (XEOL)
+
+ 12. Grazing Angle Reflection Extended X-ray Absorption Fine Structure (ReflEXAFS)
+
+ 13. Other
+ enumeration:
+ transmission:
+ doc: |
+ Transmission
+ tfy:
+ doc: |
+ Total Fluorescence Yield
+ pfy:
+ doc: |
+ Partial Fluorescence Yield
+ ipfy:
+ doc: |
+ Inverse Partial Fluorescence Yield
+ herfd:
+ doc: |
+ High Energy Resolution Fluorescence Detected
+ tey:
+ doc: |
+ Total Electron Yield
+ pey:
+ doc: |
+ Partial Electron Yield
+ eels:
+ doc: |
+ Electron Energy Loss
+ raman:
+ doc: |
+ X-ray Raman Scattering
+ dafs:
+ doc: |
+ Diffraction Anomalous Fine Structure
+ xeol:
+ doc: |
+ X-ray Excited Optical Luminescence
+ reflexafs:
+ doc: |
+ Grazing Angle Reflection Extended X-ray Absorption Fine Structure
+ other:
+ doc: |
+ Other
+ emission_lines(NXemission_lines):
+ exists: optional
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# 94aad6d69f8821222b19073bd4ed61f29de660f1b6b28012b2958d3eda8a94bc
+#
+#
+#
+#
+# XAS measurement mode
+#
+#
+# X-ray absorption spectroscopy (XAS) is a technique that measures the absorption coefficient :math:`\mu(E)` of a material as a function of energy.
+#
+# The name of the XAS mode indicates the type of process being monitored to obtain the spectrum. Below is a description of the available modes, with emphasis on the expected values for the `intensity` and `monitor` fields.
+#
+# 1. Transmission
+#
+# The absorption coefficient is obtained by measuring the intensity of the incident :math:`I_0` and transmitted beam :math:`I`.
+#
+# .. math::
+# \mu(E) = -\ln(I/I_0)
+#
+# 2. Total fluorescence yield (TFY)
+#
+# The absorption coefficient is obtained by measuring the intensity of the emitted fluorescence :math:`I_f` and the incident beam :math:`I_0`.
+#
+# .. math::
+# \mu(E) \propto I_f/I_0
+#
+# 3. Partial fluorescence yield (PFY)
+#
+# 4. Inverse partial fluorescence yield (IPFY)
+#
+# 5. High-energy resolution fluorescence detection (HERFD)
+#
+# 6. Total electron yield (TEY)
+#
+# 7. Partial electron yield (PEY)
+#
+# 8. Electron energy loss (EELS)
+#
+# 9. X-ray Raman Scattering (XRS)
+#
+# 10. Diffraction Anomalous Fine Structure (DAFS)
+#
+# 11. X-ray Excited Optical Luminescence (XEOL)
+#
+# 12. Grazing Angle Reflection Extended X-ray Absorption Fine Structure (ReflEXAFS)
+#
+# 13. Other
+#
+#
+# -
+#
+# Transmission
+#
+#
+# -
+#
+# Total Fluorescence Yield
+#
+#
+# -
+#
+# Partial Fluorescence Yield
+#
+#
+# -
+#
+# Inverse Partial Fluorescence Yield
+#
+#
+# -
+#
+# High Energy Resolution Fluorescence Detected
+#
+#
+# -
+#
+# Total Electron Yield
+#
+#
+# -
+#
+# Partial Electron Yield
+#
+#
+# -
+#
+# Electron Energy Loss
+#
+#
+# -
+#
+# X-ray Raman Scattering
+#
+#
+# -
+#
+# Diffraction Anomalous Fine Structure
+#
+#
+# -
+#
+# X-ray Excited Optical Luminescence
+#
+#
+# -
+#
+# Grazing Angle Reflection Extended X-ray Absorption Fine Structure
+#
+#
+# -
+#
+# Other
+#
+#
+#
+#
+#
+#
+#
+#
\ No newline at end of file
diff --git a/contributed_definitions/nyaml/NXxas_new.yaml b/contributed_definitions/nyaml/NXxas_new.yaml
new file mode 100644
index 0000000000..2d86817c0d
--- /dev/null
+++ b/contributed_definitions/nyaml/NXxas_new.yaml
@@ -0,0 +1,294 @@
+category: application
+doc: |
+ This is an application definition for X-ray absorption spectroscopy.
+symbols:
+ doc: |
+ The symbol(s) listed here will be used below to coordinate datasets with the same shape.
+ nEnergy: |
+ Number of energy data points
+ nTransitions: |
+ Number of electronic transitions
+type: group
+NXxas_new(NXobject):
+ (NXentry):
+ definition:
+ doc: |
+ Official NeXus NXDL schema to which this file conforms. TODO: replace NXxas
+ enumeration: [NXxas_new]
+ mode(NXxas_mode):
+ doc: |
+ element(NXelement):
+ doc: |
+ Excited element
+ edge(NXedge):
+ doc: |
+ Absorption edge
+ calculated(NX_BOOLEAN):
+ unit: NX_UNITLESS
+ exists: optional
+ doc: |
+ Specify if the data comes from a calculation
+ energy(NX_FLOAT):
+ unit: NX_ENERGY
+ doc: |
+ TODO
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ intensity(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ TODO
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ intensity_errors(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ TODO
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ (NXsample):
+ name:
+ doc: |
+ Descriptive name of the sample
+ (NXprocess):
+ exists: optional
+ doc: |
+ Description on how :ref:`energy `
+ and :ref:`intensity ` were obtained
+ from the raw data.
+ (NXinstrument):
+ exists: optional
+ (NXsource):
+ type:
+ name:
+ probe:
+ enumeration: [x-ray]
+ monochromator(NXmonochromator):
+ exists: optional
+ energy(NX_FLOAT):
+ unit: NX_ENERGY
+ exists: optional
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ crystal(NXcrystal):
+ exists: optional
+ d_spacing(NX_FLOAT):
+ unit: NX_LENGTH
+ doc: |
+ spacing between crystal planes of the reflection
+ type:
+ doc: |
+ Type or material of monochromating substance (Si, Ge, Multilayer).
+ reflection(NX_INT):
+ unit: NX_UNITLESS
+ doc: |
+ Miller indices (hkl) values of nominal reflection
+ dimensions:
+ dim: (3,)
+ (NXdetector):
+ exists: ['min', '0', 'max', 'unbounded']
+ data(NX_NUMBER):
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ i0(NXdetector):
+ exists: optional
+ data(NX_NUMBER):
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ (NXdata):
+ exists: optional
+ doc: |
+ XAS intensity versus energy plot
+ energy(link):
+ target: /NXentry/energy
+ intensity(link):
+ target: /NXentry/intensity
+ (NXcollection):
+ exists: optional
+ (NXdata):
+ exists: optional
+ doc: |
+ Table like data structure common in the XAS domain.
+ data(NX_NUMBER):
+ dimensions:
+ rank: 2
+ dim: (nChan, nEnergy)
+ columns(NX_CHAR):
+ dimensions:
+ rank: 1
+ dim: (nEnergy,)
+ data_collector(NXuser):
+ exists: optional
+ name:
+ orcid:
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# 763065003f3d92a5c815e5e648cc4e3abc0289e94ca51eb495a512419913c70b
+#
+#
+#
+#
+#
+#
+# The symbol(s) listed here will be used below to coordinate datasets with the same shape.
+#
+#
+# Number of energy data points
+#
+#
+# Number of electronic transitions
+#
+#
+#
+# This is an application definition for X-ray absorption spectroscopy.
+#
+#
+#
+# Official NeXus NXDL schema to which this file conforms. TODO: replace NXxas
+#
+#
+#
+#
+#
+#
+#
+#
+# Excited element
+#
+#
+# Absorption edge
+#
+#
+# Specify if the data comes from a calculation
+#
+#
+# TODO
+#
+#
+#
+#
+#
+# TODO
+#
+#
+#
+#
+#
+# TODO
+#
+#
+#
+#
+#
+#
+# Descriptive name of the sample
+#
+#
+#
+#
+# Description on how :ref:`energy </NXxas_new/ENTRY/energy-field>`
+# and :ref:`intensity </NXxas_new/ENTRY/intensity-field>` were obtained
+# from the raw data.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# spacing between crystal planes of the reflection
+#
+#
+# Type or material of monochromating substance (Si, Ge, Multilayer).
+#
+#
+# Miller indices (hkl) values of nominal reflection
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# XAS intensity versus energy plot
+#
+#
+#
+#
+#
+# Table like data structure common in the XAS domain.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
\ No newline at end of file
diff --git a/dev_tools/docs/nxdl.py b/dev_tools/docs/nxdl.py
index 01884e759c..9b32380523 100644
--- a/dev_tools/docs/nxdl.py
+++ b/dev_tools/docs/nxdl.py
@@ -587,7 +587,7 @@ def long_doc(self, ns, node, left_margin):
def _print_doc_enum(self, indent, ns, node, required=False):
collapse_indent = indent
node_list = node.xpath("nx:enumeration", namespaces=ns)
- (doclen, line, blocks) = self.long_doc(ns, node, len(indent))
+ doclen, line, blocks = self.long_doc(ns, node, len(indent))
if len(node_list) + doclen > 1:
collapse_indent = f"{indent} "
self._print(f"{indent}{self._INDENTATION_UNIT}.. collapse:: {line} ...\n")
diff --git a/dev_tools/tests/test_nxdl_utils.py b/dev_tools/tests/test_nxdl_utils.py
index a5a0527118..5a0d1567ab 100644
--- a/dev_tools/tests/test_nxdl_utils.py
+++ b/dev_tools/tests/test_nxdl_utils.py
@@ -99,7 +99,7 @@ def test_get_inherited_nodes():
nxdl_file_path = local_dir / "NXtest.nxdl.xml"
elem = ET.parse(nxdl_file_path).getroot()
- (_, _, elist) = nexus.get_inherited_nodes(nxdl_path="/ENTRY/NXODD_name", elem=elem)
+ _, _, elist = nexus.get_inherited_nodes(nxdl_path="/ENTRY/NXODD_name", elem=elem)
print(elist)
assert len(elist) == 5
@@ -108,17 +108,17 @@ def test_get_inherited_nodes():
)
elem = ET.parse(nxdl_file_path).getroot()
- (_, _, elist) = nexus.get_inherited_nodes(
+ _, _, elist = nexus.get_inherited_nodes(
nxdl_path="/ENTRY/INSTRUMENT/ENVIRONMENT", elem=elem
)
assert len(elist) == 4
- (_, _, elist) = nexus.get_inherited_nodes(
+ _, _, elist = nexus.get_inherited_nodes(
nxdl_path="/ENTRY/INSTRUMENT/ENVIRONMENT/voltage_controller", elem=elem
)
assert len(elist) == 6
- (_, _, elist) = nexus.get_inherited_nodes(
+ _, _, elist = nexus.get_inherited_nodes(
nxdl_path="/ENTRY/INSTRUMENT/ENVIRONMENT/voltage_controller",
nx_name="NXiv_temp",
)
diff --git a/dev_tools/utils/nxdl_utils.py b/dev_tools/utils/nxdl_utils.py
index f0a4f4bfbd..d0256fbe27 100644
--- a/dev_tools/utils/nxdl_utils.py
+++ b/dev_tools/utils/nxdl_utils.py
@@ -552,7 +552,7 @@ def check_attr_name_nxdl(param):
"""Check for ATTRIBUTENAME_units in NXDL (normal).
If not defined, check for ATTRIBUTENAME to see if the ATTRIBUTE
is in the SCHEMA, but no units category were defined."""
- (logger, elem, nxdl_path, doc, attr, req_str) = param
+ logger, elem, nxdl_path, doc, attr, req_str = param
orig_elem = elem
elem2 = get_nxdl_child(elem, attr, nexus_type="attribute")
if elem2 is not None: # check for ATTRIBUTENAME_units in NXDL (normal)
@@ -846,7 +846,7 @@ def get_best_child(nxdl_elem, hdf_node, hdf_name, hdf_class_name, nexus_type):
and hdf_node.parent is not None
and decode_or_not(hdf_node.parent.attrs.get("NX_class")) == "NXdata"
):
- (fnd_child, fit) = get_best_nxdata_child(nxdl_elem, hdf_node, hdf_name)
+ fnd_child, fit = get_best_nxdata_child(nxdl_elem, hdf_node, hdf_name)
if fnd_child is not None:
return (fnd_child, fit)
for child in nxdl_elem:
@@ -880,7 +880,7 @@ def walk_elist(elist, html_name):
for potential_direct_parent in elist:
main_child = get_direct_child(potential_direct_parent, html_name)
if main_child is not None:
- (fitting_child, _) = get_best_child(
+ fitting_child, _ = get_best_child(
elist[ind],
None,
html_name,
@@ -941,7 +941,7 @@ def get_node_at_nxdl_path(
if nxdl_path.count("/") == 1 and not nxdl_path.upper().startswith("/ENTRY"):
elem = None
nx_name = "NXroot"
- (class_path, nxdlpath, elist) = get_inherited_nodes(nxdl_path, nx_name, elem)
+ class_path, nxdlpath, elist = get_inherited_nodes(nxdl_path, nx_name, elem)
except ValueError as value_error:
if exc:
raise NxdlAttributeNotFoundError(