diff --git a/pynxtools/dataconverter/readers/example/reader.py b/pynxtools/dataconverter/readers/example/reader.py index dead8f167..7236b3bae 100644 --- a/pynxtools/dataconverter/readers/example/reader.py +++ b/pynxtools/dataconverter/readers/example/reader.py @@ -17,9 +17,10 @@ # """An example reader implementation for the DataConverter.""" -import os -from typing import Tuple, Any import json +import os +from typing import Any, Tuple + import numpy as np from pynxtools.dataconverter.readers.base.reader import BaseReader @@ -86,17 +87,13 @@ def read( } # external links - template[("/ENTRY" "[entry]/test_link" "/external_link")] = { + template[("/ENTRY[entry]/test_link/external_link")] = { "link": f"{os.path.dirname(__file__)}/../../../../tests/" - f"data/dataconverter/readers/mpes/" - f"xarray_saved_small_calibration.h5:/axes/ax3" + "data/nexus/xarray_saved_small_calibration.h5:/axes/ax3" } # virtual datasets concatenation - my_path = str( - f"{os.path.dirname(__file__)}/../../../../tests/" - f"data/dataconverter/readers/mpes" - ) + my_path = str(f"{os.path.dirname(__file__)}/../../../../tests/data/nexus") my_datasets = { "link": [ f"{my_path}/xarray_saved_small_calibration.h5:/axes/ax0", @@ -109,10 +106,7 @@ def read( ] = my_datasets # virtual datasets slicing - my_path = str( - f"{os.path.dirname(__file__)}/../../../../tests/" - f"data/dataconverter/readers/mpes" - ) + my_path = str(f"{os.path.dirname(__file__)}/../../../../tests/data/nexus") template[("/ENTRY[entry]" "/test_virtual" "_dataset/sliced" "_dataset")] = { "link": ( f"{my_path}/xarray_saved_small_" "calibration.h5:/binned/BinnedData" diff --git a/pynxtools/dataconverter/readers/mpes/README.md b/pynxtools/dataconverter/readers/mpes/README.md deleted file mode 100644 index c189d6a47..000000000 --- a/pynxtools/dataconverter/readers/mpes/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# mpes reader - -## Contact person in FAIRmat for this reader -Florian Dobner diff --git a/pynxtools/dataconverter/readers/mpes/__init__.py b/pynxtools/dataconverter/readers/mpes/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/pynxtools/dataconverter/readers/mpes/reader.py b/pynxtools/dataconverter/readers/mpes/reader.py deleted file mode 100644 index 4bec171d9..000000000 --- a/pynxtools/dataconverter/readers/mpes/reader.py +++ /dev/null @@ -1,366 +0,0 @@ -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -"""MPES reader implementation for the DataConverter.""" -import errno -import os -from functools import reduce -from typing import Any, Tuple - -import h5py -import xarray as xr -import yaml - -from pynxtools.dataconverter.readers.base.reader import BaseReader -from pynxtools.dataconverter.readers.utils import ( - FlattenSettings, - flatten_and_replace, - parse_flatten_json, -) - -DEFAULT_UNITS = { - "X": "step", - "Y": "step", - "t": "step", - "tofVoltage": "V", - "extractorVoltage": "V", - "extractorCurrent": "A", - "cryoTemperature": "K", - "sampleTemperature": "K", - "dldTimeBinSize": "ns", - "delay": "ps", - "timeStamp": "s", - "energy": "eV", - "kx": "1/A", - "ky": "1/A", -} - - -def res_to_xarray(res, bin_names, bin_axes, metadata=None): - """creates a BinnedArray (xarray subclass) out of the given np.array - Parameters: - res: np.array - nd array of binned data - bin_names (list): list of names of the binned axes - bin_axes (list): list of np.arrays with the values of the axes - Returns: - ba: BinnedArray (xarray) - an xarray-like container with binned data, axis, and all - available metadata - """ - dims = bin_names - coords = {} - for name, vals in zip(bin_names, bin_axes): - coords[name] = vals - - xres = xr.DataArray(res, dims=dims, coords=coords) - - for name in bin_names: - try: - xres[name].attrs["unit"] = DEFAULT_UNITS[name] - except KeyError: - pass - - xres.attrs["units"] = "counts" - xres.attrs["long_name"] = "photoelectron counts" - - if metadata is not None: - xres.attrs["metadata"] = metadata - - return xres - - -def h5_to_xarray(faddr, mode="r"): - """Rear xarray data from formatted hdf5 file - Args: - faddr (str): complete file name (including path) - mode (str): hdf5 read/write mode - Returns: - xarray (xarray.DataArray): output xarra data - """ - with h5py.File(faddr, mode) as h5_file: - # Reading data array - try: - data = h5_file["binned"]["BinnedData"] - except KeyError: - print("Wrong Data Format, data not found") - raise - - # Reading the axes - axes = [] - bin_names = [] - - try: - for axis in h5_file["axes"]: - axes.append(h5_file["axes"][axis]) - bin_names.append(h5_file["axes"][axis].attrs["name"]) - except KeyError: - print("Wrong Data Format, axes not found") - raise - - # load metadata - if "metadata" in h5_file: - - def recursive_parse_metadata(node): - if isinstance(node, h5py.Group): - dictionary = {} - for key, value in node.items(): - dictionary[key] = recursive_parse_metadata(value) - - else: - dictionary = node[...] - try: - dictionary = dictionary.item() - if isinstance(dictionary, (bytes, bytearray)): - dictionary = dictionary.decode() - except ValueError: - pass - - return dictionary - - metadata = recursive_parse_metadata(h5_file["metadata"]) - # Segment to change Vset to V in lens voltages - if "file" in metadata.keys(): - for k in list(metadata["file"]): - if "VSet" in k: - key = k[:-3] - metadata["file"][key] = metadata["file"][k] - del metadata["file"][k] - - xarray = res_to_xarray(data, bin_names, axes, metadata) - return xarray - - -def iterate_dictionary(dic, key_string): - """Recursively iterate in dictionary and give back its values""" - keys = key_string.split("/", 1) - if keys[0] in dic: - if len(keys) == 1: - return dic[keys[0]] - if not len(keys) == 1: - return iterate_dictionary(dic[keys[0]], keys[1]) - else: - raise KeyError - return None - - -CONVERT_DICT = { - "Instrument": "INSTRUMENT[instrument]", - "Analyzer": "ELECTRONANALYSER[electronanalyser]", - "Manipulator": "MANIPULATOR[manipulator]", - "Beam": "beam_TYPE[beam]", - "unit": "@units", - "Sample": "SAMPLE[sample]", - "Source": "source_TYPE[source]", - "User": "USER[user]", - "energy_resolution": "energy_resolution/resolution", - "momentum_resolution": "RESOLUTION[momentum_resolution]/resolution", - "temporal_resolution": "RESOLUTION[temporal_resolution]/resolution", - "spatial_resolution": "RESOLUTION[spatial_resolution]/resolution", - "sample_temperature": "temperature_sensor/value", -} - -REPLACE_NESTED = { - "SAMPLE[sample]/chemical_formula": "SAMPLE[sample]/SUBSTANCE[substance]/molecular_formula_hill", - "source_TYPE[source]/Probe": "source_TYPE[source_probe]", - "source_TYPE[source]/Pump": "source_TYPE[source_pump]", - "beam_TYPE[beam]/Probe": "beam_TYPE[beam_probe]", - "beam_TYPE[beam]/Pump": "beam_TYPE[beam_pump]", - "sample_history": "sample_history/notes", - "ELECTRONANALYSER[electronanalyser]/RESOLUTION[momentum_resolution]": ( - "ELECTRONANALYSER[electronanalyser]/momentum_resolution" - ), - "ELECTRONANALYSER[electronanalyser]/RESOLUTION[spatial_resolution]": ( - "ELECTRONANALYSER[electronanalyser]/spatial_resolution" - ), - "SAMPLE[sample]/gas_pressure": "INSTRUMENT[instrument]/pressure_gauge/value", - "SAMPLE[sample]/temperature": ( - "INSTRUMENT[instrument]/MANIPULATOR[manipulator]/temperature_sensor/value" - ), -} - - -def handle_h5_and_json_file(file_paths, objects): - """Handle h5 or json input files.""" - x_array_loaded = xr.DataArray() - config_file_dict = {} - eln_data_dict = {} - - for file_path in file_paths: - try: - file_extension = file_path[file_path.rindex(".") :] - except ValueError as exc: - raise ValueError( - f"The file path {file_path} must have an extension.", - ) from exc - - extentions = [".h5", ".json", ".yaml", ".yml"] - if file_extension not in extentions: - print( - f"WARNING \n" - f"The reader only supports files of type {extentions}, " - f"but {file_path} does not match.", - ) - - if not os.path.exists(file_path): - raise FileNotFoundError( - errno.ENOENT, - os.strerror(errno.ENOENT), - file_path, - ) - - if file_extension == ".h5": - x_array_loaded = h5_to_xarray(file_path) - elif file_extension == ".json": - config_file_dict = parse_flatten_json(file_path) - elif file_extension in [".yaml", ".yml"]: - with open(file_path, encoding="utf-8") as feln: - eln_data_dict = flatten_and_replace( - FlattenSettings( - dic=yaml.safe_load(feln), - convert_dict=CONVERT_DICT, - replace_nested=REPLACE_NESTED, - ) - ) - - if objects is not None: - # For the case of a single object - assert isinstance( - objects, - xr.core.dataarray.DataArray, - ), "The given object must be an xarray" - x_array_loaded = objects - - return x_array_loaded, config_file_dict, eln_data_dict - - -def rgetattr(obj, attr): - """Get attributes recursively""" - - def _getattr(obj, attr): - return getattr(obj, attr) - - if "index" in attr: - axis = attr.split(".")[0] - return obj.dims.index(f"{axis}") - - return reduce(_getattr, [obj] + attr.split(".")) - - -def fill_data_indices_in_config(config_file_dict, x_array_loaded): - """Add data indices key value pairs to the config_file - dictionary from the xarray dimensions if not already - present. - """ - for key in list(config_file_dict): - if "*" in key: - value = config_file_dict[key] - for dim in x_array_loaded.dims: - new_key = key.replace("*", dim) - new_value = value.replace("*", dim) - - if ( - new_key not in config_file_dict.keys() - and new_value not in config_file_dict.values() - ): - config_file_dict[new_key] = new_value - - config_file_dict.pop(key) - - -class MPESReader(BaseReader): - """MPES-specific reader class""" - - # pylint: disable=too-few-public-methods - - # Whitelist for the NXDLs that the reader supports and can process - supported_nxdls = ["NXmpes"] - - def read( # pylint: disable=too-many-branches - self, - template: dict = None, - file_paths: Tuple[str] = None, - objects: Tuple[Any] = None, - ) -> dict: - """Reads data from given file or alternatively an xarray object - and returns a filled template dictionary""" - - if not file_paths: - raise IOError("No input files were given to MPES Reader.") - - ( - x_array_loaded, - config_file_dict, - eln_data_dict, - ) = handle_h5_and_json_file(file_paths, objects) - - fill_data_indices_in_config(config_file_dict, x_array_loaded) - - for key, value in config_file_dict.items(): - if isinstance(value, str) and ":" in value: - precursor = value.split(":")[0] - value = value[value.index(":") + 1 :] - - # Filling in the data and axes along with units from xarray - if precursor == "@data": - try: - template[key] = rgetattr( - obj=x_array_loaded, - attr=value, - ) - if key.split("/")[-1] == "@axes": - template[key] = list(template[key]) - - except ValueError: - print( - f"Incorrect axis name corresponding to " f"the path {key}", - ) - - except AttributeError: - print( - f"Incorrect naming syntax or the xarray doesn't " - f"contain entry corresponding to the path {key}", - ) - - # Filling in the metadata from xarray - elif precursor == "@attrs": - if key not in eln_data_dict: - try: # Tries to fill the metadata - template[key] = iterate_dictionary( - x_array_loaded.attrs, - value, - ) - - except KeyError: - print( - f"[info]: Path {key} not found. " - f"Skipping the entry.", - ) - - else: - # Fills in the fixed metadata - template[key] = value - - # Filling in ELN metadata and overwriting the common paths by - # giving preference to the ELN metadata - for key, value in eln_data_dict.items(): - template[key] = value - - return template - - -READER = MPESReader diff --git a/pyproject.toml b/pyproject.toml index cc55f00bd..c9fc14827 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,6 +66,9 @@ dev = [ "pip-tools", "pre-commit", ] +mpes = [ + "pynxtools-mpes", +] [project.scripts] read_nexus = "pynxtools.nexus.nexus:main" diff --git a/tests/data/dataconverter/readers/mpes/ELN_metadata_example.yaml b/tests/data/dataconverter/readers/mpes/ELN_metadata_example.yaml deleted file mode 100644 index 36859c178..000000000 --- a/tests/data/dataconverter/readers/mpes/ELN_metadata_example.yaml +++ /dev/null @@ -1,2 +0,0 @@ -PROCESS[process]/CALIBRATION[momentum_calibration]/scaling: 1.0 -USER[user]/name: User \ No newline at end of file diff --git a/tests/data/dataconverter/readers/mpes/Ref_nexus_mpes.log b/tests/data/dataconverter/readers/mpes/Ref_nexus_mpes.log deleted file mode 100644 index dd6c26ebe..000000000 --- a/tests/data/dataconverter/readers/mpes/Ref_nexus_mpes.log +++ /dev/null @@ -1,6759 +0,0 @@ -DEBUG - ===== GROUP (//entry [NXmpes::/NXentry]): -DEBUG - classpath: ['NXentry'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY -NXentry.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:): -DEBUG - - (**required**) :ref:`NXentry` describes the measurement. - - The top-level NeXus group which contains all the data and associated - information that comprise a single measurement. - It is mandatory that there is at least one - group of this type in the NeXus file. - -DEBUG - ===== ATTRS (//entry@NX_class) -DEBUG - value: NXentry -DEBUG - classpath: ['NXentry'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY -NXentry.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== ATTRS (//entry@default) -DEBUG - value: data -DEBUG - classpath: ['NXentry'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY -NXentry.nxdl.xml: -DEBUG - NXmpes.nxdl.xml:/ENTRY@default - [NX_CHAR] -DEBUG - NXentry.nxdl.xml:@default - [NX_CHAR] -DEBUG - documentation (NXentry.nxdl.xml:/default): -DEBUG - - .. index:: find the default plottable data - .. index:: plotting - .. index:: default attribute value - - Declares which :ref:`NXdata` group contains the data - to be shown by default. - It is used to resolve ambiguity when - one :ref:`NXdata` group exists. - The value :ref:`names ` a child group. If that group - itself has a ``default`` attribute, continue this chain until an - :ref:`NXdata` group is reached. - - For more information about how NeXus identifies the default - plottable data, see the - :ref:`Find Plottable Data, v3 ` - section. - -DEBUG - ===== FIELD (//entry/collection_time): -DEBUG - value: 2317.343 -DEBUG - classpath: ['NXentry', 'NX_FLOAT'] -DEBUG - classes: -NXentry.nxdl.xml:/collection_time -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/collection_time): -DEBUG - - Time transpired actually collecting data i.e. taking out time when collection was - suspended due to e.g. temperature out of range - -DEBUG - ===== ATTRS (//entry/collection_time@units) -DEBUG - value: s -DEBUG - classpath: ['NXentry', 'NX_FLOAT'] -DEBUG - classes: -NXentry.nxdl.xml:/collection_time -DEBUG - NXentry.nxdl.xml:/collection_time@units [NX_TIME] -DEBUG - ===== GROUP (//entry/data [NXmpes::/NXentry/NXdata]): -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data): -DEBUG - - The default NXdata field containing a view on the measured data. - This NXdata field contains a collection of the main relevant fields (axes). - In NXmpes, it is required to provide an energy axis. - If you want to provide additional views on your data, you can additionally use - the generic NXdata group of NXentry. - The other data fields inside this NXdata group should be named according to conventions - to ensure compatibility. We recommened the following field names - for common data fields: - - - **kx**: Calibrated x axis in k-space. Unit category: NX_ANY (e.g., 1/Angström). - - **ky**: Calibrated y axis in k-space. Unit category: NX_ANY (1/Angström). - - **kz**: Calibrated z axis in k-space. Unit category: NX_ANY (1/Angström). - - **angular0**: Fast-axis angular coordinate (or second slow axis if angularly integrated). - Unit category: NX_ANGLE - - **angular1**: Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in 2 dimensions) - Unit category: NX_ANGLE - - **spatial0**: Fast-axis spatial coordinate (or second slow axis if spatially integrated) - Unit category: NX_LENGTH - - **spatial1**: Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in 2 dimensions) - Unit category: NX_LENGTH - - **delay**: Calibrated delay time. Unit category: NX_TIME (s). - - **polarization_angle**: Linear polarization angle of the incoming or - outgoing beam. This could be a link to - /entry/instrument/beam/incident_polarization_angle or - /entry/instrument/beam/final_polarization_angle if they exist. - Unit category: NX_ANGLE (° or rad) - - **ellipticity**: Ellipticity of the incoming or outgoing beam. - Could be a link to /entry/instrument/beam/incident_ellipticity or - /entry/instrument/beam/final_ellipticity if they exist. - Unit category: NX_ANGLE (° or rad) - -DEBUG - documentation (NXentry.nxdl.xml:/DATA): -DEBUG - - The data group - - .. note:: Before the NIAC2016 meeting [#]_, at least one - :ref:`NXdata` group was required in each :ref:`NXentry` group. - At the NIAC2016 meeting, it was decided to make :ref:`NXdata` - an optional group in :ref:`NXentry` groups for data files that - do not use an application definition. - It is recommended strongly that all NeXus data files provide - a NXdata group. - It is permissable to omit the NXdata group only when - defining the default plot is not practical or possible - from the available data. - - For example, neutron event data may not have anything that - makes a useful plot without extensive processing. - - Certain application definitions override this decision and - require an :ref:`NXdata` group - in the :ref:`NXentry` group. The ``minOccurs=0`` attribute - in the application definition will indicate the - :ref:`NXdata` group - is optional, otherwise, it is required. - - .. [#] NIAC2016: - https://www.nexusformat.org/NIAC2016.html, - https://github.com/nexusformat/NIAC/issues/16 - -DEBUG - documentation (NXdata.nxdl.xml:): -DEBUG - - :ref:`NXdata` describes the plottable data and related dimension scales. - - .. index:: plotting - - It is strongly recommended that there is at least one :ref:`NXdata` - group in each :ref:`NXentry` group. - Note that the fields named ``AXISNAME`` and ``DATA`` - can be defined with different names. - (Upper case is used to indicate that the actual name is left to the user.) - The ``signal`` and ``axes`` attributes of the - ``data`` group define which items - are plottable data and which are *dimension scales*, respectively. - - :ref:`NXdata` is used to implement one of the basic motivations in NeXus, - to provide a default plot for the data of this :ref:`NXentry`. The actual data - might be stored in another group and (hard) linked to the :ref:`NXdata` group. - - * Each :ref:`NXdata` group will define one field as the default - plottable data. The value of the ``signal`` attribute names this field. - Additional fields may be used to describe the dimension scales and - uncertainities. - The ``auxiliary_signals`` attribute is a list of the other fields - to be plotted with the ``signal`` data. - * The plottable data may be of arbitrary rank up to a maximum - of ``NX_MAXRANK=32`` (for compatibility with backend file formats). - * The plottable data will be named as the value of - the group ``signal`` attribute, such as:: - - data:NXdata - @signal = "counts" - @axes = "mr" - @mr_indices = 0 - counts: float[100] --> the default dependent data - mr: float[100] --> the default independent data - - The field named in the ``signal`` attribute **must** exist, either - directly as a NeXus field or defined through a link. - - * The group ``axes`` attribute will name the - *dimension scale* associated with the plottable data. - - If available, the standard deviations of the data are to be - stored in a data set of the same rank and dimensions, with the name ``errors``. - - * For each data dimension, there should be a one-dimensional array - of the same length. - * These one-dimensional arrays are the *dimension scales* of the - data, *i.e*. the values of the independent variables at which the data - is measured, such as scattering angle or energy transfer. - - .. index:: link - .. index:: axes (attribute) - - The preferred method to associate each data dimension with - its respective dimension scale is to specify the field name - of each dimension scale in the group ``axes`` attribute as a string list. - Here is an example for a 2-D data set *data* plotted - against *time*, and *pressure*. (An additional *temperature* data set - is provided and could be selected as an alternate for the *pressure* axis.):: - - data_2d:NXdata - @signal="data" - @axes=["time", "pressure"] - @pressure_indices=1 - @temperature_indices=1 - @time_indices=0 - data: float[1000,20] - pressure: float[20] - temperature: float[20] - time: float[1000] - - .. rubric:: Old methods to identify the plottable data - - There are two older methods of associating - each data dimension to its respective dimension scale. - Both are now out of date and - should not be used when writing new data files. - However, client software should expect to see data files - written with any of these methods. - - * One method uses the ``axes`` - attribute to specify the names of each *dimension scale*. - - * The oldest method uses the ``axis`` attribute on each - *dimension scale* to identify - with an integer the axis whose value is the number of the dimension. - - .. index: !plot; axis label - plot, axis units - units - dimension scale - - Each axis of the plot may be labeled with information from the - dimension scale for that axis. The optional ``@long_name`` attribute - is provided as the axis label default. If ``@long_name`` is not - defined, then use the name of the dimension scale. A ``@units`` attribute, - if available, may be added to the axis label for further description. - See the section :ref:`Design-Units` for more information. - - .. index: !plot; axis title - - The optional ``title`` field, if available, provides a suggested - title for the plot. If no ``title`` field is found in the :ref:`NXdata` - group, look for a ``title`` field in the parent :ref:`NXentry` group, - with a fallback to displaying the path to the :ref:`NXdata` group. - - NeXus is about how to find and annotate the data to be plotted - but not to describe how the data is to be plotted. - (https://www.nexusformat.org/NIAC2018Minutes.html#nxdata-plottype--attribute) - -DEBUG - ===== ATTRS (//entry/data@NX_class) -DEBUG - value: NXdata -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== ATTRS (//entry/data@axes) -DEBUG - value: ['kx' 'ky' 'energy' 'delay'] -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - NXdata.nxdl.xml:@axes - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXdata.nxdl.xml:/axes): -DEBUG - - .. index:: plotting - - Array of strings holding the :ref:`names ` of - the independent data fields used in the default plot for all of - the dimensions of the :ref:`signal ` - as well as any :ref:`auxiliary signals `. - - One name is provided for every dimension in the *signal* or *auxiliary signal* fields. - - The *axes* values are the names of fields or links that *must* exist and be direct - children of this NXdata group. - - An axis slice is specified using a field named ``AXISNAME_indices`` - as described below (where the text shown here as ``AXISNAME`` is to be - replaced by the actual field name). - - When no default axis is available for a particular dimension - of the plottable data, use a "." in that position. - Such as:: - - @axes=["time", ".", "."] - - Since there are three items in the list, the *signal* field - must be a three-dimensional array (rank=3). The first dimension - is described by the values of a one-dimensional array named ``time`` - while the other two dimensions have no fields to be used as dimension scales. - - See examples provided on the NeXus wiki: - https://www.nexusformat.org/2014_axes_and_uncertainties.html - - If there are no axes at all (such as with a stack of images), - the axes attribute can be omitted. - -DEBUG - ===== ATTRS (//entry/data@delay_indices) -DEBUG - value: 3 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @delay_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@energy_indices) -DEBUG - value: 2 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - NXmpes.nxdl.xml:/ENTRY/data@energy_indices - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/energy_indices): -DEBUG - -DEBUG - ===== ATTRS (//entry/data@kx_indices) -DEBUG - value: 0 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @kx_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@ky_indices) -DEBUG - value: 1 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @ky_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@signal) -DEBUG - value: data -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - NXmpes.nxdl.xml:/ENTRY/data@signal - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/data/signal): -DEBUG - -> data -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/signal): -DEBUG - -DEBUG - NXdata.nxdl.xml:@signal - [NX_CHAR] -DEBUG - documentation (NXdata.nxdl.xml:/signal): -DEBUG - - .. index:: find the default plottable data - .. index:: plotting - .. index:: signal attribute value - - Declares which NeXus field is the default. - The value is the :ref:`name ` of the data field to be plotted. - This field or link *must* exist and be a direct child of this NXdata group. - - It is recommended (as of NIAC2014) to use this attribute - rather than adding a signal attribute to the field. - See https://www.nexusformat.org/2014_How_to_find_default_data.html - for a summary of the discussion. - -DEBUG - ===== FIELD (//entry/data/data): -DEBUG - value: [[[1.14760e+04 1.64560e+04 1.55440e+04 1.48940e+04 1.08810e+04] ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/data -NXdata.nxdl.xml:/DATA -DEBUG - <> -DEBUG - Dataset referenced as NXdata SIGNAL -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/data): -DEBUG - - Represents a measure of one- or more-dimensional photoemission counts, where the - varied axis may be for example energy, momentum, spatial coordinate, pump-probe - delay, spin index, temperature, etc. The axes traces should be linked to the - actual encoder position in NXinstrument or calibrated axes in NXprocess. - -DEBUG - documentation (NXdata.nxdl.xml:/DATA): -DEBUG - - .. index:: plotting - - This field contains the data values to be used as the - NeXus *plottable data*. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/data@units) -DEBUG - value: counts -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/data -NXdata.nxdl.xml:/DATA -DEBUG - NXmpes.nxdl.xml:/ENTRY/data/data@units [NX_ANY] -DEBUG - NXdata.nxdl.xml:/DATA@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/delay): -DEBUG - value: [-2000. 125. 2250. 4375. 6500.] -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #3 -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/delay@units) -DEBUG - value: ps -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/energy): -DEBUG - value: [-4. -3.44444444 -2.88888889 -2.33333333 -1.77777778 -1.22222222 ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/energy -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #2 -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/energy): -DEBUG - - Calibrated energy axis. - - This could be a link to either - /entry/process/energy_calibration/calibrated_axis or - /entry/process/energy_correction/calibrated_axis. - -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/energy@type) -DEBUG - value: binding -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/energy -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXmpes.nxdl.xml:/ENTRY/data/energy@type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/data/energy/type): -DEBUG - -> kinetic -DEBUG - -> binding -DEBUG - Dataset referenced as NXdata AXIS #2 -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/energy/type): -DEBUG - - The energy can be either stored as kinetic or as binding energy. - -DEBUG - ===== ATTRS (//entry/data/energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/energy -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXmpes.nxdl.xml:/ENTRY/data/energy@units [NX_ENERGY] -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/kx): -DEBUG - value: [-1.5 -1.16666667 -0.83333333 -0.5 -0.16666667 0.16666667 ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #0 -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/kx@units) -DEBUG - value: 1/A -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/ky): -DEBUG - value: [-1.5 -1.16666667 -0.83333333 -0.5 -0.16666667 0.16666667 ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #1 -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/ky@units) -DEBUG - value: 1/A -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/definition): -DEBUG - value: b'NXmpes' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/definition -NXentry.nxdl.xml:/definition -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/definition): -DEBUG - -> NXmpes -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/definition): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:/definition): -DEBUG - - (alternate use: see same field in :ref:`NXsubentry` for preferred) - - Official NeXus NXDL schema to which this entry conforms which must be - the name of the NXDL file (case sensitive without the file extension) - that the NXDL schema is defined in. - - For example the ``definition`` field for a file that conformed to the - *NXarpes.nxdl.xml* definition must contain the string **NXarpes**. - - This field is provided so that :ref:`NXentry` can be the overlay position - in a NeXus data file for an application definition and its - set of groups, fields, and attributes. - - *It is advised* to use :ref:`NXsubentry`, instead, as the overlay position. - -DEBUG - ===== ATTRS (//entry/definition@version) -DEBUG - value: None -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/definition -NXentry.nxdl.xml:/definition -DEBUG - NXmpes.nxdl.xml:/ENTRY/definition@version - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/definition/version): -DEBUG - -DEBUG - NXentry.nxdl.xml:/definition@version - [NX_CHAR] -DEBUG - documentation (NXentry.nxdl.xml:/definition/version): -DEBUG - - NXDL version number - -DEBUG - ===== FIELD (//entry/duration): -DEBUG - value: 2317 -DEBUG - classpath: ['NXentry', 'NX_INT'] -DEBUG - classes: -NXentry.nxdl.xml:/duration -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/duration): -DEBUG - - Duration of measurement - -DEBUG - ===== ATTRS (//entry/duration@units) -DEBUG - value: s -DEBUG - classpath: ['NXentry', 'NX_INT'] -DEBUG - classes: -NXentry.nxdl.xml:/duration -DEBUG - NXentry.nxdl.xml:/duration@units [NX_TIME] -DEBUG - ===== FIELD (//entry/end_time): -DEBUG - value: b'2019-05-23T18:52:32+00:00' -DEBUG - classpath: ['NXentry', 'NX_DATE_TIME'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/end_time -NXentry.nxdl.xml:/end_time -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/end_time): -DEBUG - - Datetime of the end of the measurement. - Should be a ISO8601 date/time stamp. It is recommended to add an explicit time zone, - otherwise the local time zone is assumed per ISO8601. - -DEBUG - documentation (NXentry.nxdl.xml:/end_time): -DEBUG - - Ending time of measurement - -DEBUG - ===== FIELD (//entry/entry_identifier): -DEBUG - value: b'2019/2019_05/2019_05_23/Scan005' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/entry_identifier -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/entry_identifier): -DEBUG - - unique identifier for the measurement, defined by the facility. - -DEBUG - ===== FIELD (//entry/experiment_facility): -DEBUG - value: b'Time Resolved ARPES' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/experiment_facility -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/experiment_facility): -DEBUG - - Name of the experimental facility - -DEBUG - ===== FIELD (//entry/experiment_institution): -DEBUG - value: b'Fritz Haber Institute - Max Planck Society' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/experiment_institution -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/experiment_institution): -DEBUG - - Name of the institution hosting the facility - -DEBUG - ===== FIELD (//entry/experiment_laboratory): -DEBUG - value: b'Clean Room 4' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/experiment_laboratory -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/experiment_laboratory): -DEBUG - - Name of the laboratory or beamline - -DEBUG - ===== GROUP (//entry/instrument [NXmpes::/NXentry/NXinstrument]): -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT -NXentry.nxdl.xml:/INSTRUMENT -NXinstrument.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT): -DEBUG - - Description of the MPES spectrometer and its individual parts. - - This concept is related to term `12.58`_ of the ISO 18115-1:2023 standard. - - .. _12.58: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.58 - -DEBUG - documentation (NXentry.nxdl.xml:/INSTRUMENT): -DEBUG - -DEBUG - documentation (NXinstrument.nxdl.xml:): -DEBUG - - Collection of the components of the instrument or beamline. - - Template of instrument descriptions comprising various beamline components. - Each component will also be a NeXus group defined by its distance from the - sample. Negative distances represent beamline components that are before the - sample while positive distances represent components that are after the sample. - This device allows the unique identification of beamline components in a way - that is valid for both reactor and pulsed instrumentation. - -DEBUG - ===== ATTRS (//entry/instrument@NX_class) -DEBUG - value: NXinstrument -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT -NXentry.nxdl.xml:/INSTRUMENT -NXinstrument.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/beam_probe [NXmpes::/NXentry/NXinstrument/NXbeam]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/BEAM): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:): -DEBUG - - Properties of the neutron or X-ray beam at a given location. - - This group is intended to be referenced - by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. This group is - especially valuable in storing the results of instrument simulations in which it is useful - to specify the beam profile, time distribution etc. at each beamline component. Otherwise, - its most likely use is in the :ref:`NXsample` group in which it defines the results of the neutron - scattering by the sample, e.g., energy transfer, polarizations. Finally, There are cases where the beam is - considered as a beamline component and this group may be defined as a subgroup directly inside - :ref:`NXinstrument`, in which case it is recommended that the position of the beam is specified by an - :ref:`NXtransformations` group, unless the beam is at the origin (which is the sample). - - Note that incident_wavelength and related fields can be a scalar values or arrays, depending on the use case. - To support these use cases, the explicit dimensionality of these fields is not specified, but it can be inferred - by the presense of and shape of accompanying fields, such as incident_wavelength_weights for a polychromatic beam. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe@NX_class) -DEBUG - value: NXbeam -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/beam_probe/associated_source): -DEBUG - value: b'/entry/instrument/source_probe' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/beam_probe/distance): -DEBUG - value: 0.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/distance -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/distance): -DEBUG - - Distance from sample. Note, it is recommended to use NXtransformations instead. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/distance@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/distance -DEBUG - NXbeam.nxdl.xml:/distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/extent): -DEBUG - value: [ 80. 190.] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/extent -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/extent): -DEBUG - - Size of the beam entering this component. Note this represents - a rectangular beam aperture, and values represent FWHM - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/extent@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/extent -DEBUG - NXbeam.nxdl.xml:/extent@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/incident_energy): -DEBUG - value: 21.7 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy): -DEBUG - - Energy carried by each particle of the beam on entering the beamline component. - - In the case of a monochromatic beam this is the scalar energy. - Several other use cases are permitted, depending on the - presence of other incident_energy_X fields. - - * In the case of a polychromatic beam this is an array of length m of energies, with the relative weights in incident_energy_weights. - * In the case of a monochromatic beam that varies shot-to-shot, this is an array of energies, one for each recorded shot. - Here, incident_energy_weights and incident_energy_spread are not set. - * In the case of a polychromatic beam that varies shot-to-shot, - this is an array of length m with the relative weights in incident_energy_weights as a 2D array. - * In the case of a polychromatic beam that varies shot-to-shot and where the channels also vary, - this is a 2D array of dimensions nP by m (slow to fast) with the relative weights in incident_energy_weights as a 2D array. - - Note, variants are a good way to represent several of these use cases in a single dataset, - e.g. if a calibrated, single-value energy value is available along with the original spectrum from which it was calibrated. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/incident_energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy -DEBUG - NXbeam.nxdl.xml:/incident_energy@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/incident_energy_spread): -DEBUG - value: 0.11 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy_spread): -DEBUG - - The energy spread FWHM for the corresponding energy(ies) in incident_energy. In the case of shot-to-shot variation in - the energy spread, this is a 2D array of dimension nP by m - (slow to fast) of the spreads of the corresponding - wavelength in incident_wavelength. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/incident_energy_spread@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - NXbeam.nxdl.xml:/incident_energy_spread@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/incident_polarization): -DEBUG - value: [1. 1. 0. 0.] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_polarization -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_polarization): -DEBUG - - Incident polarization as a Stokes vector - on entering beamline component - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/incident_polarization@units) -DEBUG - value: V^2/mm^2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_polarization -DEBUG - NXbeam.nxdl.xml:/incident_polarization@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/pulse_duration): -DEBUG - value: 20.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/pulse_duration): -DEBUG - - FWHM duration of the pulses at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/pulse_duration@units) -DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - NXbeam.nxdl.xml:/pulse_duration@units [NX_TIME] -DEBUG - ===== GROUP (//entry/instrument/beam_pump [NXmpes::/NXentry/NXinstrument/NXbeam]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/BEAM): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:): -DEBUG - - Properties of the neutron or X-ray beam at a given location. - - This group is intended to be referenced - by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. This group is - especially valuable in storing the results of instrument simulations in which it is useful - to specify the beam profile, time distribution etc. at each beamline component. Otherwise, - its most likely use is in the :ref:`NXsample` group in which it defines the results of the neutron - scattering by the sample, e.g., energy transfer, polarizations. Finally, There are cases where the beam is - considered as a beamline component and this group may be defined as a subgroup directly inside - :ref:`NXinstrument`, in which case it is recommended that the position of the beam is specified by an - :ref:`NXtransformations` group, unless the beam is at the origin (which is the sample). - - Note that incident_wavelength and related fields can be a scalar values or arrays, depending on the use case. - To support these use cases, the explicit dimensionality of these fields is not specified, but it can be inferred - by the presense of and shape of accompanying fields, such as incident_wavelength_weights for a polychromatic beam. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump@NX_class) -DEBUG - value: NXbeam -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/beam_pump/associated_source): -DEBUG - value: b'/entry/instrument/source_pump' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/beam_pump/average_power): -DEBUG - value: 444.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/average_power -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/average_power): -DEBUG - - Average power at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/average_power@units) -DEBUG - value: mW -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/average_power -DEBUG - NXbeam.nxdl.xml:/average_power@units [NX_POWER] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/distance): -DEBUG - value: 0.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/distance -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/distance): -DEBUG - - Distance from sample. Note, it is recommended to use NXtransformations instead. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/distance@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/distance -DEBUG - NXbeam.nxdl.xml:/distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/extent): -DEBUG - value: [155. 367.] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/extent -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/extent): -DEBUG - - Size of the beam entering this component. Note this represents - a rectangular beam aperture, and values represent FWHM - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/extent@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/extent -DEBUG - NXbeam.nxdl.xml:/extent@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/fluence): -DEBUG - value: 1.3 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/fluence -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/fluence): -DEBUG - - Incident fluence at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/fluence@units) -DEBUG - value: mJ/cm^2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/fluence -DEBUG - NXbeam.nxdl.xml:/fluence@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_energy): -DEBUG - value: 1.2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy): -DEBUG - - Energy carried by each particle of the beam on entering the beamline component. - - In the case of a monochromatic beam this is the scalar energy. - Several other use cases are permitted, depending on the - presence of other incident_energy_X fields. - - * In the case of a polychromatic beam this is an array of length m of energies, with the relative weights in incident_energy_weights. - * In the case of a monochromatic beam that varies shot-to-shot, this is an array of energies, one for each recorded shot. - Here, incident_energy_weights and incident_energy_spread are not set. - * In the case of a polychromatic beam that varies shot-to-shot, - this is an array of length m with the relative weights in incident_energy_weights as a 2D array. - * In the case of a polychromatic beam that varies shot-to-shot and where the channels also vary, - this is a 2D array of dimensions nP by m (slow to fast) with the relative weights in incident_energy_weights as a 2D array. - - Note, variants are a good way to represent several of these use cases in a single dataset, - e.g. if a calibrated, single-value energy value is available along with the original spectrum from which it was calibrated. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy -DEBUG - NXbeam.nxdl.xml:/incident_energy@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_energy_spread): -DEBUG - value: 0.05 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy_spread): -DEBUG - - The energy spread FWHM for the corresponding energy(ies) in incident_energy. In the case of shot-to-shot variation in - the energy spread, this is a 2D array of dimension nP by m - (slow to fast) of the spreads of the corresponding - wavelength in incident_wavelength. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_energy_spread@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - NXbeam.nxdl.xml:/incident_energy_spread@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_polarization): -DEBUG - value: [1 1 0 0] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_polarization -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_polarization): -DEBUG - - Incident polarization as a Stokes vector - on entering beamline component - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_polarization@units) -DEBUG - value: V^2/mm^2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_polarization -DEBUG - NXbeam.nxdl.xml:/incident_polarization@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_wavelength): -DEBUG - value: 1030.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_wavelength -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_wavelength): -DEBUG - - In the case of a monochromatic beam this is the scalar - wavelength. - - Several other use cases are permitted, depending on the - presence or absence of other incident_wavelength_X - fields. - - In the case of a polychromatic beam this is an array of - length **m** of wavelengths, with the relative weights - in ``incident_wavelength_weights``. - - In the case of a monochromatic beam that varies shot- - to-shot, this is an array of wavelengths, one for each - recorded shot. Here, ``incident_wavelength_weights`` and - incident_wavelength_spread are not set. - - In the case of a polychromatic beam that varies shot-to- - shot, this is an array of length **m** with the relative - weights in ``incident_wavelength_weights`` as a 2D array. - - In the case of a polychromatic beam that varies shot-to- - shot and where the channels also vary, this is a 2D array - of dimensions **nP** by **m** (slow to fast) with the - relative weights in ``incident_wavelength_weights`` as a 2D - array. - - Note, :ref:`variants ` are a good way - to represent several of these use cases in a single dataset, - e.g. if a calibrated, single-value wavelength value is - available along with the original spectrum from which it - was calibrated. - Wavelength on entering beamline component - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_wavelength@units) -DEBUG - value: nm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_wavelength -DEBUG - NXbeam.nxdl.xml:/incident_wavelength@units [NX_WAVELENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/pulse_duration): -DEBUG - value: 140.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/pulse_duration): -DEBUG - - FWHM duration of the pulses at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/pulse_duration@units) -DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - NXbeam.nxdl.xml:/pulse_duration@units [NX_TIME] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/pulse_energy): -DEBUG - value: 0.889 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_energy -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/pulse_energy): -DEBUG - - Energy of a single pulse at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/pulse_energy@units) -DEBUG - value: µJ -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_energy -DEBUG - NXbeam.nxdl.xml:/pulse_energy@units [NX_ENERGY] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser [NXmpes::/NXentry/NXinstrument/NXelectronanalyser]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER -NXelectronanalyser.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:): -DEBUG - - Basic class for describing a electron analyzer. - - This concept is related to term `12.59`_ of the ISO 18115-1:2023 standard. - - .. _12.59: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.59 - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser@NX_class) -DEBUG - value: NXelectronanalyser -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER -NXelectronanalyser.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN -NXelectronanalyser.nxdl.xml:/COLLECTIONCOLUMN -NXcollectioncolumn.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/COLLECTIONCOLUMN): -DEBUG - - Describes the electron collection (spatial and momentum imaging) column - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:): -DEBUG - - Subclass of NXelectronanalyser to describe the electron collection - column of a photoelectron analyser. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn@NX_class) -DEBUG - value: NXcollectioncolumn -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN -NXelectronanalyser.nxdl.xml:/COLLECTIONCOLUMN -NXcollectioncolumn.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/contrast_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/contrast_aperture): -DEBUG - - The size and position of the contrast aperture inserted in the column. To add - additional or other apertures use the APERTURE group of NXcollectioncolumn. - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/APERTURE): -DEBUG - - The size and position of an aperture inserted in the column, e.g. field aperture - or contrast aperture - -DEBUG - documentation (NXaperture.nxdl.xml:): -DEBUG - - A beamline aperture. This group is deprecated, use NXslit instead. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture@NX_class) -DEBUG - value: NXaperture -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/contrast_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3 [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture/NXpositioner]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/POSITIONER): -DEBUG - - Stores the raw positions of aperture motors. - -DEBUG - documentation (NXpositioner.nxdl.xml:): -DEBUG - - A generic positioner such as a motor or piezo-electric transducer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3@NX_class) -DEBUG - value: NXpositioner -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3/value): -DEBUG - value: -11.49979350759219 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXpositioner.nxdl.xml:/value): -DEBUG - best known value of positioner - need [n] as may be scanned -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3/value@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - NXpositioner.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/shape): -DEBUG - value: b'open' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_CHAR'] -DEBUG - classes: -NXaperture.nxdl.xml:/shape -DEBUG - <> -DEBUG - enumeration (NXaperture.nxdl.xml:/shape): -DEBUG - -> straight slit -DEBUG - -> curved slit -DEBUG - -> pinhole -DEBUG - -> circle -DEBUG - -> square -DEBUG - -> hexagon -DEBUG - -> octagon -DEBUG - -> bladed -DEBUG - -> open -DEBUG - -> grid -DEBUG - documentation (NXaperture.nxdl.xml:/shape): -DEBUG - - Shape of the aperture. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/size): -DEBUG - value: nan -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/size): -DEBUG - - The relevant dimension for the aperture, i.e. slit width, pinhole and iris - diameter - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/size@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - NXaperture.nxdl.xml:/size@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/extractor_current): -DEBUG - value: -0.1309711275510204 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_current -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/extractor_current): -DEBUG - - Current necessary to keep the extractor lens at a set voltage. Variations - indicate leakage, field emission or arc currents to the extractor lens. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/extractor_current@units) -DEBUG - value: µA -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_current -DEBUG - NXcollectioncolumn.nxdl.xml:/extractor_current@units [NX_CURRENT] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/extractor_voltage): -DEBUG - value: 6000.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_voltage -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/extractor_voltage): -DEBUG - - Voltage applied to the extractor lens - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/extractor_voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_voltage -DEBUG - NXcollectioncolumn.nxdl.xml:/extractor_voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/field_aperture [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/field_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/field_aperture): -DEBUG - - The size and position of the field aperture inserted in the column. To add - additional or other apertures use the APERTURE group of NXcollectioncolumn. - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/APERTURE): -DEBUG - - The size and position of an aperture inserted in the column, e.g. field aperture - or contrast aperture - -DEBUG - documentation (NXaperture.nxdl.xml:): -DEBUG - - A beamline aperture. This group is deprecated, use NXslit instead. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture@NX_class) -DEBUG - value: NXaperture -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/field_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1 [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture/NXpositioner]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/POSITIONER): -DEBUG - - Stores the raw positions of aperture motors. - -DEBUG - documentation (NXpositioner.nxdl.xml:): -DEBUG - - A generic positioner such as a motor or piezo-electric transducer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1@NX_class) -DEBUG - value: NXpositioner -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1/value): -DEBUG - value: 3.749874153422982 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXpositioner.nxdl.xml:/value): -DEBUG - best known value of positioner - need [n] as may be scanned -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1/value@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - NXpositioner.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2 [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture/NXpositioner]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/POSITIONER): -DEBUG - - Stores the raw positions of aperture motors. - -DEBUG - documentation (NXpositioner.nxdl.xml:): -DEBUG - - A generic positioner such as a motor or piezo-electric transducer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2@NX_class) -DEBUG - value: NXpositioner -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2/value): -DEBUG - value: -5.200156936301793 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXpositioner.nxdl.xml:/value): -DEBUG - best known value of positioner - need [n] as may be scanned -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2/value@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - NXpositioner.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/shape): -DEBUG - value: b'circle' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_CHAR'] -DEBUG - classes: -NXaperture.nxdl.xml:/shape -DEBUG - <> -DEBUG - enumeration (NXaperture.nxdl.xml:/shape): -DEBUG - -> straight slit -DEBUG - -> curved slit -DEBUG - -> pinhole -DEBUG - -> circle -DEBUG - -> square -DEBUG - -> hexagon -DEBUG - -> octagon -DEBUG - -> bladed -DEBUG - -> open -DEBUG - -> grid -DEBUG - documentation (NXaperture.nxdl.xml:/shape): -DEBUG - - Shape of the aperture. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/size): -DEBUG - value: 200.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/size): -DEBUG - - The relevant dimension for the aperture, i.e. slit width, pinhole and iris - diameter - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/size@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - NXaperture.nxdl.xml:/size@units [NX_LENGTH] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_A [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_A@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_A/name): -DEBUG - value: b'A' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_A/voltage): -DEBUG - value: 784.58 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_A/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_B [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_B@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_B/name): -DEBUG - value: b'B' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_B/voltage): -DEBUG - value: 3253.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_B/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_C [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_C@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_C/name): -DEBUG - value: b'C' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_C/voltage): -DEBUG - value: 752.07 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_C/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_D [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_D@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_D/name): -DEBUG - value: b'D' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_D/voltage): -DEBUG - value: 682.18 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_D/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_E [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_E@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_E/name): -DEBUG - value: b'E' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_E/voltage): -DEBUG - value: 200.93 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_E/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_F [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_F@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_F/name): -DEBUG - value: b'F' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_F/voltage): -DEBUG - value: 68.557 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_F/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc/name): -DEBUG - value: b'Foc' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc/voltage): -DEBUG - value: 158.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_G [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_G@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_G/name): -DEBUG - value: b'G' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_G/voltage): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_G/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_H [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_H@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_H/name): -DEBUG - value: b'H' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_H/voltage): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_H/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_I [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_I@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_I/name): -DEBUG - value: b'I' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_I/voltage): -DEBUG - value: 44.5 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_I/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA/name): -DEBUG - value: b'UCA' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA/voltage): -DEBUG - value: 1200.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA/name): -DEBUG - value: b'UFA' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA/voltage): -DEBUG - value: 600.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_mode): -DEBUG - value: b'6kV_kmodem2.0_30VTOF_MoTe2_2340VMCP.sav' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/lens_mode -NXcollectioncolumn.nxdl.xml:/lens_mode -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/lens_mode): -DEBUG - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/lens_mode): -DEBUG - - Labelling of the lens setting in use. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/projection): -DEBUG - value: b'reciprocal' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/projection -NXcollectioncolumn.nxdl.xml:/projection -DEBUG - <> -DEBUG - enumeration (NXcollectioncolumn.nxdl.xml:/projection): -DEBUG - -> real -DEBUG - -> reciprocal -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/projection): -DEBUG - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/projection): -DEBUG - - The space projected in the angularly dispersive directions, real or reciprocal - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/scheme): -DEBUG - value: b'momentum dispersive' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/scheme -NXcollectioncolumn.nxdl.xml:/scheme -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/scheme): -DEBUG - -> angular dispersive -DEBUG - -> spatial dispersive -DEBUG - -> momentum dispersive -DEBUG - -> non-dispersive -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/scheme): -DEBUG - - Scheme of the electron collection column. - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/scheme): -DEBUG - - Scheme of the electron collection lens, i.e. standard, deflector, PEEM, momentum - microscope, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/working_distance): -DEBUG - value: 4.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/working_distance -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/working_distance): -DEBUG - - Distance between sample and detector entrance - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/working_distance@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/working_distance -DEBUG - NXcollectioncolumn.nxdl.xml:/working_distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/depends_on): -DEBUG - value: b'/entry/instrument/electronanalyser/transformations/trans_z' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/depends_on): -DEBUG - - Refers to the last transformation specifying the position of the electron analyser - in the NXtransformations chain. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/description): -DEBUG - value: b'SPECS Metis 1000 Momentum Microscope' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/description -NXelectronanalyser.nxdl.xml:/description -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/description): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/description): -DEBUG - - Free text description of the type of the detector - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/detector [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXdetector]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR -NXelectronanalyser.nxdl.xml:/DETECTOR -NXdetector.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/DETECTOR): -DEBUG - - Describes the electron detector - -DEBUG - documentation (NXdetector.nxdl.xml:): -DEBUG - - A detector, detector bank, or multidetector. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector@NX_class) -DEBUG - value: NXdetector -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR -NXelectronanalyser.nxdl.xml:/DETECTOR -NXdetector.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/amplifier_bias): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_bias -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/amplifier_bias): -DEBUG - - The low voltage of the amplifier migh not be the ground. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/amplifier_bias@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_bias -DEBUG - NXdetector.nxdl.xml:/amplifier_bias@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/amplifier_type): -DEBUG - value: b'MCP' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/amplifier_type -NXdetector.nxdl.xml:/amplifier_type -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/amplifier_type): -DEBUG - -> MCP -DEBUG - -> channeltron -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/amplifier_type): -DEBUG - - Type of electron amplifier in the first amplification step. - -DEBUG - documentation (NXdetector.nxdl.xml:/amplifier_type): -DEBUG - - Type of electron amplifier, MCP, channeltron, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/amplifier_voltage): -DEBUG - value: 2340.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_voltage -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/amplifier_voltage): -DEBUG - - Voltage applied to the amplifier. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/amplifier_voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_voltage -DEBUG - NXdetector.nxdl.xml:/amplifier_voltage@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/detector_type): -DEBUG - value: b'DLD' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/detector_type -NXdetector.nxdl.xml:/detector_type -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/detector_type): -DEBUG - -> DLD -DEBUG - -> Phosphor+CCD -DEBUG - -> Phosphor+CMOS -DEBUG - -> ECMOS -DEBUG - -> Anode -DEBUG - -> Multi-anode -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/detector_type): -DEBUG - - Description of the detector type. - -DEBUG - documentation (NXdetector.nxdl.xml:/detector_type): -DEBUG - - Description of the detector type, DLD, Phosphor+CCD, CMOS. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/detector_voltage): -DEBUG - value: 399.99712810186986 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/detector_voltage -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/detector_voltage): -DEBUG - - Voltage applied to detector. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/detector_voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/detector_voltage -DEBUG - NXdetector.nxdl.xml:/detector_voltage@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/sensor_pixels): -DEBUG - value: [1800 1800] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_INT'] -DEBUG - classes: -NXdetector.nxdl.xml:/sensor_pixels -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/sensor_pixels): -DEBUG - - Number of raw active elements in each dimension. Important for swept scans. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/device_information [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXfabrication]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information -NXelectronanalyser.nxdl.xml:/FABRICATION -NXfabrication.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/FABRICATION): -DEBUG - -DEBUG - documentation (NXfabrication.nxdl.xml:): -DEBUG - - Details about a component as it is defined by its manufacturer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/device_information@NX_class) -DEBUG - value: NXfabrication -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information -NXelectronanalyser.nxdl.xml:/FABRICATION -NXfabrication.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/device_information/model): -DEBUG - value: b'Metis 1000 Momentum Microscope' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/model -NXfabrication.nxdl.xml:/model -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/model): -DEBUG - -DEBUG - documentation (NXfabrication.nxdl.xml:/model): -DEBUG - - Version or model of the component named by the manufacturer. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/device_information/vendor): -DEBUG - value: b'SPECS GmbH' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/vendor -NXfabrication.nxdl.xml:/vendor -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/vendor): -DEBUG - -DEBUG - documentation (NXfabrication.nxdl.xml:/vendor): -DEBUG - - Company name of the manufacturer. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/energy_resolution [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution -NXelectronanalyser.nxdl.xml:/energy_resolution -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/energy_resolution): -DEBUG - - Energy resolution of the analyser with the current setting. May be linked from an - NXcalibration. - - This concept is related to term `10.24`_ of the ISO 18115-1:2023 standard. - - .. _10.24: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.24 - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energy_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution -NXelectronanalyser.nxdl.xml:/energy_resolution -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energy_resolution/physical_quantity): -DEBUG - value: b'energy' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/physical_quantity -NXelectronanalyser.nxdl.xml:/energy_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/physical_quantity): -DEBUG - -> energy -DEBUG - enumeration (NXelectronanalyser.nxdl.xml:/energy_resolution/physical_quantity): -DEBUG - -> energy -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/energy_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energy_resolution/resolution): -DEBUG - value: 110.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution -NXelectronanalyser.nxdl.xml:/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/energy_resolution/resolution): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energy_resolution/resolution@units) -DEBUG - value: meV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution -NXelectronanalyser.nxdl.xml:/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution@units - REQUIRED, but undefined unit category -DEBUG - NXelectronanalyser.nxdl.xml:/energy_resolution/resolution@units [NX_ENERGY] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energy_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/type -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/type): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/energydispersion [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXenergydispersion]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION -NXelectronanalyser.nxdl.xml:/ENERGYDISPERSION -NXenergydispersion.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/ENERGYDISPERSION): -DEBUG - - Describes the energy dispersion section - -DEBUG - documentation (NXenergydispersion.nxdl.xml:): -DEBUG - - Subclass of NXelectronanalyser to describe the energy dispersion section of a - photoelectron analyser. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energydispersion@NX_class) -DEBUG - value: NXenergydispersion -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION -NXelectronanalyser.nxdl.xml:/ENERGYDISPERSION -NXenergydispersion.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energydispersion/pass_energy): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy -NXenergydispersion.nxdl.xml:/pass_energy -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy): -DEBUG - -DEBUG - documentation (NXenergydispersion.nxdl.xml:/pass_energy): -DEBUG - - Energy of the electrons on the mean path of the analyser. Pass energy for - hemispherics, drift energy for tofs. - - This concept is related to term `12.63`_ of the ISO 18115-1:2023 standard. - - .. _12.63: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.63 - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energydispersion/pass_energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy -NXenergydispersion.nxdl.xml:/pass_energy -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy@units [NX_ENERGY] -DEBUG - NXenergydispersion.nxdl.xml:/pass_energy@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energydispersion/scheme): -DEBUG - value: b'tof' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/scheme -NXenergydispersion.nxdl.xml:/scheme -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/scheme): -DEBUG - -> tof -DEBUG - -> hemispherical -DEBUG - -> double hemispherical -DEBUG - -> cylindrical mirror -DEBUG - -> display mirror -DEBUG - -> retarding grid -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/scheme): -DEBUG - -DEBUG - documentation (NXenergydispersion.nxdl.xml:/scheme): -DEBUG - - Energy dispersion scheme employed, for example: tof, hemispherical, cylindrical, - mirror, retarding grid, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energydispersion/tof_distance): -DEBUG - value: 0.9 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXenergydispersion.nxdl.xml:/tof_distance -DEBUG - <> -DEBUG - documentation (NXenergydispersion.nxdl.xml:/tof_distance): -DEBUG - - Length of the tof drift electrode - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energydispersion/tof_distance@units) -DEBUG - value: m -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXenergydispersion.nxdl.xml:/tof_distance -DEBUG - NXenergydispersion.nxdl.xml:/tof_distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/fast_axes): -DEBUG - value: [b'kx' b'ky' b'E'] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/fast_axes -NXelectronanalyser.nxdl.xml:/fast_axes -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/fast_axes): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/fast_axes): -DEBUG - - List of the axes that are acquired simultaneously by the detector. - These refer only to the experimental variables recorded by the electron analyser. - Other variables such as temperature, manipulator angles etc. are labeled as fast or slow in the data. - - .. csv-table:: Examples - :header: "Mode", "fast_axes", "slow_axes" - - Hemispherical in ARPES mode, "['energy', 'kx']","" - "Hemispherical with channeltron, sweeping energy mode", "", [\"energy\"] - "Tof", "['energy', 'kx', 'ky']","" - "Momentum microscope, spin-resolved", "['energy', 'kx', 'ky']", "['spin up-down', 'spin left-right']" - - Axes may be less abstract than this, i.e. ['detector_x', 'detector_y']. - If energy_scan_mode=sweep, fast_axes: ['energy', 'kx']; slow_axes: ['energy'] is allowed. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/momentum_resolution [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/momentum_resolution): -DEBUG - - Momentum resolution of the electron analyser (FWHM) - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/momentum_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/momentum_resolution@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution -NXresolution.nxdl.xml: -DEBUG - @units - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/momentum_resolution/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXelectronanalyser.nxdl.xml:/momentum_resolution/physical_quantity): -DEBUG - -> momentum -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/momentum_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/momentum_resolution/resolution): -DEBUG - value: 0.08 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/momentum_resolution/resolution@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution@units [NX_WAVENUMBER] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/momentum_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/slow_axes): -DEBUG - value: b'delay' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/slow_axes -NXelectronanalyser.nxdl.xml:/slow_axes -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/slow_axes): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/slow_axes): -DEBUG - - List of the axes that are acquired by scanning a physical parameter, listed in - order of decreasing speed. See fast_axes for examples. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/spatial_resolution [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/spatial_resolution): -DEBUG - - Spatial resolution of the electron analyser (Airy disk radius) - - This concept is related to term `10.15 ff.`_ of the ISO 18115-1:2023 standard. - - .. _10.15 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.15 - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/spatial_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/spatial_resolution/physical_quantity): -DEBUG - value: b'length' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXelectronanalyser.nxdl.xml:/spatial_resolution/physical_quantity): -DEBUG - -> length -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/spatial_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/spatial_resolution/resolution): -DEBUG - value: 10.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/spatial_resolution/resolution@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution@units [NX_LENGTH] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/spatial_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/transformations [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - Collection of axis-based translations and rotations to describe the location and - geometry of the electron analyser as a component in the instrument. Conventions - from the NXtransformations base class are used. In principle, the McStas - coordinate system is used. The first transformation has to point either to - another component of the system or "." (for pointing to the reference frame) to - relate it relative to the experimental setup. Typically, the components of a - system should all be related relative to each other and only one component - should relate to the reference coordinate system. - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/transformations/rot_y): -DEBUG - value: -115.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@depends_on) -DEBUG - value: . -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/transformations/trans_z): -DEBUG - value: 4.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@depends_on) -DEBUG - value: rot_y -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== GROUP (//entry/instrument/energy_resolution [NXmpes::/NXentry/NXinstrument/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution): -DEBUG - - Overall energy resolution of the MPES instrument - - This concept is related to term `10.7 ff.`_ of the ISO 18115-1:2023 standard. - - .. _10.7 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.7 - - This concept is related to term `10.24`_ of the ISO 18115-1:2023 standard. - - .. _10.24: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.24 - -DEBUG - documentation (NXinstrument.nxdl.xml:/RESOLUTION): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/energy_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/energy_resolution/physical_quantity): -DEBUG - value: b'energy' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/physical_quantity): -DEBUG - -> energy -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/energy_resolution/resolution): -DEBUG - value: 140.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/energy_resolution/resolution@units) -DEBUG - value: meV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution@units [NX_ENERGY] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/energy_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/type -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/type): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/instrument/manipulator [NXmpes::/NXentry/NXinstrument/NXmanipulator]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR -NXmanipulator.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR): -DEBUG - - Manipulator for positioning of the sample. - -DEBUG - documentation (NXmanipulator.nxdl.xml:): -DEBUG - - Extension of NXpositioner to include fields to describe the use of manipulators - in photoemission experiments. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator@NX_class) -DEBUG - value: NXmanipulator -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR -NXmanipulator.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/depends_on): -DEBUG - value: b'/entry/instrument/manipulator/transformations/trans_z' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NX_CHAR'] -DEBUG - classes: -NXmanipulator.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXmanipulator.nxdl.xml:/depends_on): -DEBUG - - Refers to the last transformation specifying the positon of the manipulator in - the NXtransformations chain. - -DEBUG - ===== GROUP (//entry/instrument/manipulator/sample_bias_voltmeter [NXmpes::/NXentry/NXinstrument/NXmanipulator/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter -NXmanipulator.nxdl.xml:/sample_bias_voltmeter -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/sample_bias_voltmeter): -DEBUG - - Sensor measuring the voltage applied to sample and sample holder. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/sample_bias_voltmeter@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter -NXmanipulator.nxdl.xml:/sample_bias_voltmeter -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/sample_bias_voltmeter/measurement): -DEBUG - value: b'voltage' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/measurement -NXmanipulator.nxdl.xml:/sample_bias_voltmeter/measurement -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/measurement): -DEBUG - -> voltage -DEBUG - enumeration (NXmanipulator.nxdl.xml:/sample_bias_voltmeter/measurement): -DEBUG - -> voltage -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/measurement): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/sample_bias_voltmeter/measurement): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/instrument/manipulator/sample_bias_voltmeter/name): -DEBUG - value: b'sample_bias' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/name -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/name): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/instrument/manipulator/sample_bias_voltmeter/value): -DEBUG - value: 17.799719004221362 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value -NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value): -DEBUG - - In case of a single or averaged bias measurement, this is the scalar voltage measured between - sample and sample holder. It can also be an 1D array of measured voltages (without time stamps). - -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/sample_bias_voltmeter/value@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value -NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value -NXsensor.nxdl.xml:/value -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value@units - REQUIRED, but undefined unit category -DEBUG - NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value@units [NX_VOLTAGE] -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/manipulator/temperature_sensor [NXmpes::/NXentry/NXinstrument/NXmanipulator/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor -NXmanipulator.nxdl.xml:/temperature_sensor -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/temperature_sensor): -DEBUG - - Temperature sensor measuring the sample temperature. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/temperature_sensor@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor -NXmanipulator.nxdl.xml:/temperature_sensor -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/temperature_sensor/measurement): -DEBUG - value: b'temperature' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/measurement -NXmanipulator.nxdl.xml:/temperature_sensor/measurement -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/measurement): -DEBUG - -> temperature -DEBUG - enumeration (NXmanipulator.nxdl.xml:/temperature_sensor/measurement): -DEBUG - -> temperature -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/measurement): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/temperature_sensor/measurement): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/instrument/manipulator/temperature_sensor/name): -DEBUG - value: b'sample_temperature' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/name -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/name): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/instrument/manipulator/temperature_sensor/value): -DEBUG - value: 23.050763803680983 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value -NXmanipulator.nxdl.xml:/temperature_sensor/value -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/temperature_sensor/value): -DEBUG - - In case of a single or averaged temperature measurement, this is the scalar temperature measured - by the sample temperature sensor. It can also be a 1D array of measured temperatures - (without time stamps). - -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/temperature_sensor/value@units) -DEBUG - value: K -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value -NXmanipulator.nxdl.xml:/temperature_sensor/value -NXsensor.nxdl.xml:/value -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value@units - REQUIRED, but undefined unit category -DEBUG - NXmanipulator.nxdl.xml:/temperature_sensor/value@units [NX_TEMPERATURE] -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/manipulator/transformations [NXmpes::/NXentry/NXinstrument/NXmanipulator/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations'] -DEBUG - classes: -NXmanipulator.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmanipulator.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - Collection of axis-based translations and rotations to describe the location and - geometry of the manipulator as a component in the instrument. Conventions from - the NXtransformations base class are used. In principle, the McStas coordinate - system is used. The first transformation has to point either to another - component of the system or . (for pointing to the reference frame) to relate it - relative to the experimental setup. Typically, the components of a system should - all be related relative to each other and only one component should relate to - the reference coordinate system. - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations'] -DEBUG - classes: -NXmanipulator.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/transformations/rot_x): -DEBUG - value: -90.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@depends_on) -DEBUG - value: . -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@vector) -DEBUG - value: [1 0 0] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/instrument/manipulator/transformations/rot_z): -DEBUG - value: -25.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@depends_on) -DEBUG - value: rot_x -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/instrument/manipulator/transformations/trans_z): -DEBUG - value: -0.32 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@depends_on) -DEBUG - value: rot_z -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@units) -DEBUG - value: m -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== GROUP (//entry/instrument/momentum_resolution [NXmpes::/NXentry/NXinstrument/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/RESOLUTION): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/momentum_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== GROUP (//entry/instrument/momentum_resolution/resolution [NXmpes::/NXentry/NXinstrument/NXresolution/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/instrument/momentum_resolution/resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/instrument/momentum_resolution/resolution@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/resolution/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/resolution/resolution): -DEBUG - value: 0.08 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/instrument/momentum_resolution/resolution/resolution@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== FIELD (//entry/instrument/name): -DEBUG - value: b'Time-of-flight momentum microscope equipped delay line detector, at the endstation of the high rep-rate HHG source at FHI' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_CHAR'] -DEBUG - classes: -NXinstrument.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/name): -DEBUG - - Name of instrument - -DEBUG - ===== ATTRS (//entry/instrument/name@short_name) -DEBUG - value: TR-ARPES @ FHI -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_CHAR'] -DEBUG - classes: -NXinstrument.nxdl.xml:/name -DEBUG - NXinstrument.nxdl.xml:/name@short_name - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/name/short_name): -DEBUG - - short name for instrument, perhaps the acronym - -DEBUG - ===== GROUP (//entry/instrument/pressure_gauge [NXmpes::/NXentry/NXinstrument/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge -NXinstrument.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge): -DEBUG - - Device to measure the gas pressure around the sample. - -DEBUG - documentation (NXinstrument.nxdl.xml:/SENSOR): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/instrument/pressure_gauge@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge -NXinstrument.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/pressure_gauge/measurement): -DEBUG - value: b'pressure' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/measurement -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/measurement): -DEBUG - -> pressure -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/measurement): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/instrument/pressure_gauge/name): -DEBUG - value: b'sample_chamber_pressure' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/name -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/name): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/instrument/pressure_gauge/value): -DEBUG - value: 4.5599999999999996e-11 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value): -DEBUG - - In case of a single or averaged gas pressure measurement, this is the scalar gas pressure around - the sample. It can also be an 1D array of measured pressures (without time stamps). - -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/instrument/pressure_gauge/value@units) -DEBUG - value: mbar -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value -NXsensor.nxdl.xml:/value -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value@units [NX_PRESSURE] -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/source_probe [NXmpes::/NXentry/NXinstrument/NXsource]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/SOURCE): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:): -DEBUG - - Radiation source emitting a beam. - - Examples include particle sources (electrons, neutrons, protons) or sources for electromagnetic radiation (photons). - This base class can also be used to describe neutron or x-ray storage ring/facilities. - -DEBUG - ===== ATTRS (//entry/instrument/source_probe@NX_class) -DEBUG - value: NXsource -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/source_probe/associated_beam): -DEBUG - value: b'/entry/instrument/beam_probe' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/source_probe/frequency): -DEBUG - value: 500.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - <> -DEBUG - documentation (NXsource.nxdl.xml:/frequency): -DEBUG - - Frequency of pulsed source - -DEBUG - ===== ATTRS (//entry/instrument/source_probe/frequency@units) -DEBUG - value: kHz -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - NXsource.nxdl.xml:/frequency@units [NX_FREQUENCY] -DEBUG - ===== FIELD (//entry/instrument/source_probe/mode): -DEBUG - value: b'Single Bunch' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/mode -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/mode): -DEBUG - -> Single Bunch -DEBUG - -> Multi Bunch -DEBUG - documentation (NXsource.nxdl.xml:/mode): -DEBUG - - source operating mode - -DEBUG - ===== FIELD (//entry/instrument/source_probe/name): -DEBUG - value: b'HHG @ TR-ARPES @ FHI' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsource.nxdl.xml:/name): -DEBUG - - Name of source - -DEBUG - ===== FIELD (//entry/instrument/source_probe/probe): -DEBUG - value: b'photon' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/probe -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/probe): -DEBUG - -> neutron -DEBUG - -> photon -DEBUG - -> x-ray -DEBUG - -> muon -DEBUG - -> electron -DEBUG - -> ultraviolet -DEBUG - -> visible light -DEBUG - -> positron -DEBUG - -> proton -DEBUG - documentation (NXsource.nxdl.xml:/probe): -DEBUG - - type of radiation probe (pick one from the enumerated list and spell exactly) - -DEBUG - ===== FIELD (//entry/instrument/source_probe/type): -DEBUG - value: b'HHG laser' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/type): -DEBUG - -> Spallation Neutron Source -DEBUG - -> Pulsed Reactor Neutron Source -DEBUG - -> Reactor Neutron Source -DEBUG - -> Synchrotron X-ray Source -DEBUG - -> Pulsed Muon Source -DEBUG - -> Rotating Anode X-ray -DEBUG - -> Fixed Tube X-ray -DEBUG - -> UV Laser -DEBUG - -> Free-Electron Laser -DEBUG - -> Optical Laser -DEBUG - -> Ion Source -DEBUG - -> UV Plasma Source -DEBUG - -> Metal Jet X-ray -DEBUG - documentation (NXsource.nxdl.xml:/type): -DEBUG - - type of radiation source (pick one from the enumerated list and spell exactly) - -DEBUG - ===== GROUP (//entry/instrument/source_pump [NXmpes::/NXentry/NXinstrument/NXsource]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/SOURCE): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:): -DEBUG - - Radiation source emitting a beam. - - Examples include particle sources (electrons, neutrons, protons) or sources for electromagnetic radiation (photons). - This base class can also be used to describe neutron or x-ray storage ring/facilities. - -DEBUG - ===== ATTRS (//entry/instrument/source_pump@NX_class) -DEBUG - value: NXsource -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/source_pump/associated_beam): -DEBUG - value: b'/entry/instrument/beam_pump' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/source_pump/frequency): -DEBUG - value: 500.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - <> -DEBUG - documentation (NXsource.nxdl.xml:/frequency): -DEBUG - - Frequency of pulsed source - -DEBUG - ===== ATTRS (//entry/instrument/source_pump/frequency@units) -DEBUG - value: kHz -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - NXsource.nxdl.xml:/frequency@units [NX_FREQUENCY] -DEBUG - ===== FIELD (//entry/instrument/source_pump/mode): -DEBUG - value: b'Single Bunch' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/mode -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/mode): -DEBUG - -> Single Bunch -DEBUG - -> Multi Bunch -DEBUG - documentation (NXsource.nxdl.xml:/mode): -DEBUG - - source operating mode - -DEBUG - ===== FIELD (//entry/instrument/source_pump/name): -DEBUG - value: b'OPCPA @ TR-ARPES @ FHI' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsource.nxdl.xml:/name): -DEBUG - - Name of source - -DEBUG - ===== FIELD (//entry/instrument/source_pump/probe): -DEBUG - value: b'visible light' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/probe -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/probe): -DEBUG - -> neutron -DEBUG - -> photon -DEBUG - -> x-ray -DEBUG - -> muon -DEBUG - -> electron -DEBUG - -> ultraviolet -DEBUG - -> visible light -DEBUG - -> positron -DEBUG - -> proton -DEBUG - documentation (NXsource.nxdl.xml:/probe): -DEBUG - - type of radiation probe (pick one from the enumerated list and spell exactly) - -DEBUG - ===== FIELD (//entry/instrument/source_pump/type): -DEBUG - value: b'Optical Laser' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/type): -DEBUG - -> Spallation Neutron Source -DEBUG - -> Pulsed Reactor Neutron Source -DEBUG - -> Reactor Neutron Source -DEBUG - -> Synchrotron X-ray Source -DEBUG - -> Pulsed Muon Source -DEBUG - -> Rotating Anode X-ray -DEBUG - -> Fixed Tube X-ray -DEBUG - -> UV Laser -DEBUG - -> Free-Electron Laser -DEBUG - -> Optical Laser -DEBUG - -> Ion Source -DEBUG - -> UV Plasma Source -DEBUG - -> Metal Jet X-ray -DEBUG - documentation (NXsource.nxdl.xml:/type): -DEBUG - - type of radiation source (pick one from the enumerated list and spell exactly) - -DEBUG - ===== GROUP (//entry/instrument/temporal_resolution [NXmpes::/NXentry/NXinstrument/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/RESOLUTION): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/temporal_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/temporal_resolution/physical_quantity): -DEBUG - value: b'time' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/temporal_resolution/resolution): -DEBUG - value: 35.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/temporal_resolution/resolution@units) -DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXresolution.nxdl.xml:/resolution -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/temporal_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/process [NXmpes::/NXentry/NXprocess]): -DEBUG - classpath: ['NXentry', 'NXprocess'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS -NXentry.nxdl.xml:/PROCESS -NXprocess.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS): -DEBUG - - Document an event of data processing, reconstruction, or analysis for this data. - Describe the appropriate axis calibrations for your experiment using one or more - of the following NXcalibrations - -DEBUG - documentation (NXentry.nxdl.xml:/PROCESS): -DEBUG - -DEBUG - documentation (NXprocess.nxdl.xml:): -DEBUG - - Document an event of data processing, reconstruction, or analysis for this data. - -DEBUG - ===== ATTRS (//entry/process@NX_class) -DEBUG - value: NXprocess -DEBUG - classpath: ['NXentry', 'NXprocess'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS -NXentry.nxdl.xml:/PROCESS -NXprocess.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/process/distortion [NXmpes::/NXentry/NXprocess/NXdistortion]): -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion'] -DEBUG - classes: -NXprocess.nxdl.xml:/DISTORTION -NXdistortion.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXprocess.nxdl.xml:/DISTORTION): -DEBUG - - Describes the operations of image distortion correction - -DEBUG - documentation (NXdistortion.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing distortion correction. - -DEBUG - ===== ATTRS (//entry/process/distortion@NX_class) -DEBUG - value: NXdistortion -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion'] -DEBUG - classes: -NXprocess.nxdl.xml:/DISTORTION -NXdistortion.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/distortion/cdeform_field): -DEBUG - value: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/cdeform_field -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/cdeform_field): -DEBUG - - Column deformation field for general non-rigid distortion corrections. 2D matrix - holding the column information of the mapping of each original coordinate. - -DEBUG - ===== FIELD (//entry/process/distortion/original_centre): -DEBUG - value: [203. 215.] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/original_centre -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/original_centre): -DEBUG - - For symmetry-guided distortion correction. Here we record the coordinates of the - symmetry centre point. - -DEBUG - ===== FIELD (//entry/process/distortion/original_points): -DEBUG - value: [166. 283.] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/original_points -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/original_points): -DEBUG - - For symmetry-guided distortion correction. Here we record the coordinates of the - relevant symmetry points. - -DEBUG - ===== FIELD (//entry/process/distortion/rdeform_field): -DEBUG - value: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/rdeform_field -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/rdeform_field): -DEBUG - - Row deformation field for general non-rigid distortion corrections. 2D matrix - holding the row information of the mapping of each original coordinate. - -DEBUG - ===== FIELD (//entry/process/distortion/symmetry): -DEBUG - value: 6 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXdistortion', 'NX_INT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/symmetry -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/symmetry): -DEBUG - - For `symmetry-guided distortion correction`_, - where a pattern of features is mapped to the regular geometric structure expected - from the symmetry. Here we record the number of elementary symmetry operations. - - .. _symmetry-guided distortion correction: https://www.sciencedirect.com/science/article/abs/pii/S0304399118303474?via%3Dihub - -DEBUG - ===== GROUP (//entry/process/energy_calibration [NXmpes::/NXentry/NXprocess/NXcalibration]): -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS/energy_calibration -NXprocess.nxdl.xml:/CALIBRATION -NXcalibration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS/energy_calibration): -DEBUG - - Calibration event on the energy axis. - - For XPS, the calibration should ideally be performed according to - `ISO 15472:2010`_ specification. - - .. _ISO 15472:2010: https://www.iso.org/standard/74811.html - -DEBUG - documentation (NXprocess.nxdl.xml:/CALIBRATION): -DEBUG - - Describes the operations of calibration procedures, e.g. axis calibrations. - -DEBUG - documentation (NXcalibration.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing calibrations. - -DEBUG - ===== ATTRS (//entry/process/energy_calibration@NX_class) -DEBUG - value: NXcalibration -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS/energy_calibration -NXprocess.nxdl.xml:/CALIBRATION -NXcalibration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/energy_calibration/calibrated_axis): -DEBUG - value: [ 5.22069940e+01 5.10746894e+01 4.99673811e+01 4.88843387e+01 ... -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS/energy_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS/energy_calibration/calibrated_axis): -DEBUG - - This is the calibrated energy axis to be used for data plotting. - -DEBUG - documentation (NXcalibration.nxdl.xml:/calibrated_axis): -DEBUG - - A vector representing the axis after calibration, matching the data length - -DEBUG - ===== FIELD (//entry/process/energy_calibration/coefficients): -DEBUG - value: [ 6.33783929e-01 8.68180227e-07 -2.41647784e+01] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/coefficients -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/coefficients): -DEBUG - - For non-linear energy calibrations, e.g. in a TOF, a polynomial function is fit - to a set of features (peaks) at well defined energy positions to determine - E(TOF). Here we can store the array of fit coefficients. - -DEBUG - ===== FIELD (//entry/process/energy_calibration/fit_function): -DEBUG - value: b'(a0/(x0-a1))**2 + a2' -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_CHAR'] -DEBUG - classes: -NXcalibration.nxdl.xml:/fit_function -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/fit_function): -DEBUG - - For non-linear energy calibrations. Here we can store the formula of the - fit function. - - Use a0, a1, ..., an for the coefficients, corresponding to the values in the coefficients field. - - Use x0, x1, ..., xn for the nth position in the `original_axis` field. - If there is the symbol attribute specified for the `original_axis` this may be used instead of x. - If you want to use the whole axis use `x`. - Alternate axis can also be available as specified by the `input_SYMBOL` field. - The data should then be referred here by the `SYMBOL` name, e.g., for a field - name `input_my_field` it should be referred here by `my_field` or `my_field0` if - you want to read the zeroth element of the array. - - The formula should be numpy compliant. - -DEBUG - ===== FIELD (//entry/process/energy_calibration/original_axis): -DEBUG - value: [ 60027.77777778 60083.33333333 60138.88888889 60194.44444444 ... -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/original_axis -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/original_axis): -DEBUG - - Vector containing the data coordinates in the original uncalibrated axis - -DEBUG - ===== GROUP (//entry/process/kx_calibration [NXmpes::/NXentry/NXprocess/NXcalibration]): -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration'] -DEBUG - classes: -NXprocess.nxdl.xml:/CALIBRATION -NXcalibration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXprocess.nxdl.xml:/CALIBRATION): -DEBUG - - Describes the operations of calibration procedures, e.g. axis calibrations. - -DEBUG - documentation (NXcalibration.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing calibrations. - -DEBUG - ===== ATTRS (//entry/process/kx_calibration@NX_class) -DEBUG - value: NXcalibration -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration'] -DEBUG - classes: -NXprocess.nxdl.xml:/CALIBRATION -NXcalibration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/kx_calibration/calibrated_axis): -DEBUG - value: [-2.68021375 -2.66974416 -2.65927458 -2.64880499 -2.63833541 -2.62786582 ... -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/calibrated_axis): -DEBUG - - A vector representing the axis after calibration, matching the data length - -DEBUG - ===== FIELD (//entry/process/kx_calibration/offset): -DEBUG - value: 256.0 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/offset -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/offset): -DEBUG - - For linear calibration. Offset parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== FIELD (//entry/process/kx_calibration/scaling): -DEBUG - value: 0.01046958495673419 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/scaling -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/scaling): -DEBUG - - For linear calibration. Scaling parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== GROUP (//entry/process/ky_calibration [NXmpes::/NXentry/NXprocess/NXcalibration]): -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration'] -DEBUG - classes: -NXprocess.nxdl.xml:/CALIBRATION -NXcalibration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXprocess.nxdl.xml:/CALIBRATION): -DEBUG - - Describes the operations of calibration procedures, e.g. axis calibrations. - -DEBUG - documentation (NXcalibration.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing calibrations. - -DEBUG - ===== ATTRS (//entry/process/ky_calibration@NX_class) -DEBUG - value: NXcalibration -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration'] -DEBUG - classes: -NXprocess.nxdl.xml:/CALIBRATION -NXcalibration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/ky_calibration/calibrated_axis): -DEBUG - value: [-2.68021375 -2.66974416 -2.65927458 -2.64880499 -2.63833541 -2.62786582 ... -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/calibrated_axis): -DEBUG - - A vector representing the axis after calibration, matching the data length - -DEBUG - ===== FIELD (//entry/process/ky_calibration/offset): -DEBUG - value: 256.0 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/offset -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/offset): -DEBUG - - For linear calibration. Offset parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== FIELD (//entry/process/ky_calibration/scaling): -DEBUG - value: 0.01046958495673419 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/scaling -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/scaling): -DEBUG - - For linear calibration. Scaling parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== GROUP (//entry/process/registration [NXmpes::/NXentry/NXprocess/NXregistration]): -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration'] -DEBUG - classes: -NXprocess.nxdl.xml:/REGISTRATION -NXregistration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXprocess.nxdl.xml:/REGISTRATION): -DEBUG - - Describes the operations of image registration - -DEBUG - documentation (NXregistration.nxdl.xml:): -DEBUG - - Describes image registration procedures. - -DEBUG - ===== ATTRS (//entry/process/registration@NX_class) -DEBUG - value: NXregistration -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration'] -DEBUG - classes: -NXprocess.nxdl.xml:/REGISTRATION -NXregistration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/registration/depends_on): -DEBUG - value: b'/entry/process/registration/tranformations/rot_z' -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NX_CHAR'] -DEBUG - classes: -NXregistration.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXregistration.nxdl.xml:/depends_on): -DEBUG - - Specifies the position by pointing to the last transformation in the - transformation chain in the NXtransformations group. - -DEBUG - ===== GROUP (//entry/process/registration/tranformations [NXmpes::/NXentry/NXprocess/NXregistration/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations'] -DEBUG - classes: -NXregistration.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXregistration.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - To describe the operations of image registration (combinations of rigid - translations and rotations) - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations'] -DEBUG - classes: -NXregistration.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/registration/tranformations/rot_z): -DEBUG - value: -1.0 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@depends_on) -DEBUG - value: trans_y -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@offset) -DEBUG - value: [256. 256. 0.] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@offset - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/offset): -DEBUG - - A fixed offset applied before the transformation (three vector components). - This is not intended to be a substitute for a fixed ``translation`` axis but, for example, - as the mechanical offset from mounting the axis to its dependency. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@vector) -DEBUG - value: [0. 0. 1.] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/process/registration/tranformations/trans_x): -DEBUG - value: 43.0 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@depends_on) -DEBUG - value: . -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@units) -DEBUG - value: pixels -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@vector) -DEBUG - value: [1. 0. 0.] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/process/registration/tranformations/trans_y): -DEBUG - value: 55.0 -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@depends_on) -DEBUG - value: trans_x -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@units) -DEBUG - value: pixels -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@vector) -DEBUG - value: [0. 1. 0.] -DEBUG - classpath: ['NXentry', 'NXprocess', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== GROUP (//entry/sample [NXmpes::/NXentry/NXsample]): -DEBUG - classpath: ['NXentry', 'NXsample'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE -NXentry.nxdl.xml:/SAMPLE -NXsample.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:/SAMPLE): -DEBUG - -DEBUG - documentation (NXsample.nxdl.xml:): -DEBUG - - Any information on the sample. - - This could include scanned variables that - are associated with one of the data dimensions, e.g. the magnetic field, or - logged data, e.g. monitored temperature vs elapsed time. - -DEBUG - ===== ATTRS (//entry/sample@NX_class) -DEBUG - value: NXsample -DEBUG - classpath: ['NXentry', 'NXsample'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE -NXentry.nxdl.xml:/SAMPLE -NXsample.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/bias [NXmpes::/NXentry/NXsample/NXenvironment]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias): -DEBUG - - Bias of the sample with respect to analyser ground. - - This concept is related to term `8.41`_ of the ISO 18115-1:2023 standard. - - .. _8.41: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:8.41 - -DEBUG - documentation (NXsample.nxdl.xml:/ENVIRONMENT): -DEBUG - - Any environmental or external stimuli/measurements. - These can include, among others: - applied pressure, surrounding gas phase and gas pressure, - external electric/magnetic/mechanical fields, temperature, ... - -DEBUG - documentation (NXenvironment.nxdl.xml:): -DEBUG - - Parameters for controlling external conditions - -DEBUG - ===== ATTRS (//entry/sample/bias@NX_class) -DEBUG - value: NXenvironment -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/bias/voltmeter [NXmpes::/NXentry/NXsample/NXenvironment/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias/voltmeter -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias/voltmeter): -DEBUG - - Sensor measuring the applied voltage. - - This should be a link to /entry/instrument/manipulator/sample_bias_voltmeter. - -DEBUG - documentation (NXenvironment.nxdl.xml:/SENSOR): -DEBUG - - Any sensor used to monitor the environment. This can be linked to a sensor - defined in an NXinstrument instance. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/sample/bias/voltmeter@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias/voltmeter -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/bias/voltmeter/measurement): -DEBUG - value: b'voltage' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/sample/bias/voltmeter/name): -DEBUG - value: b'sample_bias' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/sample/bias/voltmeter/value): -DEBUG - value: 17.799719004221362 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/sample/bias/voltmeter/value@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/sample/depends_on): -DEBUG - value: b'/entry/sample/transformations/corrected_phi' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXsample.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/depends_on): -DEBUG - - NeXus positions components by applying a set of translations and rotations - to apply to the component starting from 0, 0, 0. The order of these operations - is critical and forms what NeXus calls a dependency chain. The depends_on - field defines the path to the top most operation of the dependency chain or the - string "." if located in the origin. Usually these operations are stored in a - NXtransformations group. But NeXus allows them to be stored anywhere. - -DEBUG - ===== FIELD (//entry/sample/description): -DEBUG - value: b'MoTe2' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXsample.nxdl.xml:/description -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/description): -DEBUG - - Description of the sample - -DEBUG - ===== GROUP (//entry/sample/gas_pressure [NXmpes::/NXentry/NXsample/NXenvironment]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure): -DEBUG - - Gas pressure surrounding the sample. - -DEBUG - documentation (NXsample.nxdl.xml:/ENVIRONMENT): -DEBUG - - Any environmental or external stimuli/measurements. - These can include, among others: - applied pressure, surrounding gas phase and gas pressure, - external electric/magnetic/mechanical fields, temperature, ... - -DEBUG - documentation (NXenvironment.nxdl.xml:): -DEBUG - - Parameters for controlling external conditions - -DEBUG - ===== ATTRS (//entry/sample/gas_pressure@NX_class) -DEBUG - value: NXenvironment -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/gas_pressure/pressure_gauge [NXmpes::/NXentry/NXsample/NXenvironment/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure/pressure_gauge -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure/pressure_gauge): -DEBUG - - Gauge measuring the gas pressure. - - This should be a link to /entry/instrument/pressure_gauge. - -DEBUG - documentation (NXenvironment.nxdl.xml:/SENSOR): -DEBUG - - Any sensor used to monitor the environment. This can be linked to a sensor - defined in an NXinstrument instance. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/sample/gas_pressure/pressure_gauge@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure/pressure_gauge -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/gas_pressure/pressure_gauge/measurement): -DEBUG - value: b'pressure' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/sample/gas_pressure/pressure_gauge/name): -DEBUG - value: b'sample_chamber_pressure' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/sample/gas_pressure/pressure_gauge/value): -DEBUG - value: 4.5599999999999996e-11 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/sample/gas_pressure/pressure_gauge/value@units) -DEBUG - value: mbar -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/sample/name): -DEBUG - value: b'MoTe2' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/name -NXsample.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/name): -DEBUG - -DEBUG - documentation (NXsample.nxdl.xml:/name): -DEBUG - - Descriptive name of sample - -DEBUG - ===== FIELD (//entry/sample/preparation_date): -DEBUG - value: b'2019-05-22T14:00:00+00:00' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_DATE_TIME'] -DEBUG - classes: -NXsample.nxdl.xml:/preparation_date -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/preparation_date): -DEBUG - - Date of preparation of the sample - -DEBUG - ===== GROUP (//entry/sample/sample_history [NXmpes::/NXentry/NXsample/NXsample_history]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsample_history'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/sample_history -NXsample.nxdl.xml:/SAMPLE_HISTORY -NXsample_history.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/sample_history): -DEBUG - - A set of activities that occurred to the sample prior to/during photoemission - experiment. - -DEBUG - documentation (NXsample.nxdl.xml:/SAMPLE_HISTORY): -DEBUG - - A set of physical processes that occurred to the sample prior/during experiment. - -DEBUG - documentation (NXsample_history.nxdl.xml:): -DEBUG - - A set of activities that occurred to the sample prior/during experiment. - - Ideally, a full report of the previous operations (or links to a chain of operations). - Alternatively, notes allow for additional descriptors in any format. - -DEBUG - ===== ATTRS (//entry/sample/sample_history@NX_class) -DEBUG - value: NXsample_history -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsample_history'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/sample_history -NXsample.nxdl.xml:/SAMPLE_HISTORY -NXsample_history.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/sample_history/notes): -DEBUG - value: b'Cleaved' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsample_history'] -DEBUG - NOT IN SCHEMA -DEBUG - -DEBUG - ===== FIELD (//entry/sample/situation): -DEBUG - value: b'vacuum' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/situation -NXsample.nxdl.xml:/situation -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/SAMPLE/situation): -DEBUG - -> vacuum -DEBUG - -> inert atmosphere -DEBUG - -> oxidising atmosphere -DEBUG - -> reducing atmosphere -DEBUG - enumeration (NXsample.nxdl.xml:/situation): -DEBUG - -> air -DEBUG - -> vacuum -DEBUG - -> inert atmosphere -DEBUG - -> oxidising atmosphere -DEBUG - -> reducing atmosphere -DEBUG - -> sealed can -DEBUG - -> other -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/situation): -DEBUG - -DEBUG - documentation (NXsample.nxdl.xml:/situation): -DEBUG - - The atmosphere will be one of the components, which is where - its details will be stored; the relevant components will be - indicated by the entry in the sample_component member. - -DEBUG - ===== GROUP (//entry/sample/substance [NXmpes::/NXentry/NXsample/NXsubstance]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsubstance'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE -NXsample.nxdl.xml:/SUBSTANCE -NXsubstance.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE): -DEBUG - - For samples containing a single pure substance. For mixtures use the - NXsample_component_set and NXsample_component group in NXsample instead. - -DEBUG - documentation (NXsample.nxdl.xml:/SUBSTANCE): -DEBUG - - If the sample is made from a pure substance and cannot be further divided using - NXsample_component. - -DEBUG - documentation (NXsubstance.nxdl.xml:): -DEBUG - - A form of matter with a constant, definite chemical composition. - - Examples can be single chemical elements, chemical compunds, or alloys. - For further information, see https://en.wikipedia.org/wiki/Chemical_substance. - -DEBUG - ===== ATTRS (//entry/sample/substance@NX_class) -DEBUG - value: NXsubstance -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsubstance'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE -NXsample.nxdl.xml:/SUBSTANCE -NXsubstance.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/substance/molecular_formula_hill): -DEBUG - value: b'MoTe2' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsubstance', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE/molecular_formula_hill -NXsubstance.nxdl.xml:/molecular_formula_hill -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE/molecular_formula_hill): -DEBUG - - The chemical formula of the sample (using CIF conventions). - -DEBUG - documentation (NXsubstance.nxdl.xml:/molecular_formula_hill): -DEBUG - - The chemical formula specified using CIF conventions. - Abbreviated version of CIF standard:107 - This is the *Hill* system used by Chemical Abstracts. - - * Only recognized element symbols may be used. - * Each element symbol is followed by a 'count' number. A count of '1' may be omitted. - * A space or parenthesis must separate each cluster of (element symbol + count). - * Where a group of elements is enclosed in parentheses, the multiplier for the - group must follow the closing parentheses. That is, all element and group - multipliers are assumed to be printed as subscripted numbers. - * Unless the elements are ordered in a manner that corresponds to their chemical - structure, the order of the elements within any group or moiety depends on - whether or not carbon is present. - * If carbon is present, the order should be: - - C, then H, then the other elements in alphabetical order of their symbol. - - If carbon is not present, the elements are listed purely in alphabetic order of their symbol. - -DEBUG - ===== GROUP (//entry/sample/temperature [NXmpes::/NXentry/NXsample/NXenvironment]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature -NXenvironment.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature): -DEBUG - - Sample temperature (either controlled or just measured). - -DEBUG - documentation (NXenvironment.nxdl.xml:): -DEBUG - - Parameters for controlling external conditions - -DEBUG - ===== ATTRS (//entry/sample/temperature@NX_class) -DEBUG - value: NXenvironment -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature -NXenvironment.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/temperature/temperature_sensor [NXmpes::/NXentry/NXsample/NXenvironment/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature/temperature_sensor -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature/temperature_sensor): -DEBUG - - Temperature sensor measuring the sample temperature. - This should be a link to /entry/instrument/manipulator/temperature_sensor. - -DEBUG - documentation (NXenvironment.nxdl.xml:/SENSOR): -DEBUG - - Any sensor used to monitor the environment. This can be linked to a sensor - defined in an NXinstrument instance. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/sample/temperature/temperature_sensor@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature/temperature_sensor -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/temperature/temperature_sensor/measurement): -DEBUG - value: b'temperature' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/sample/temperature/temperature_sensor/name): -DEBUG - value: b'sample_temperature' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/sample/temperature/temperature_sensor/value): -DEBUG - value: 23.050763803680983 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/sample/temperature/temperature_sensor/value@units) -DEBUG - value: K -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/sample/transformations [NXmpes::/NXentry/NXsample/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations'] -DEBUG - classes: -NXsample.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - This is the group recommended for holding the chain of translation - and rotation operations necessary to position the component within - the instrument. The dependency chain may however traverse similar groups in - other component groups. - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/sample/transformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations'] -DEBUG - classes: -NXsample.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/transformations/corrected_phi): -DEBUG - value: 90.0 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@depends_on) -DEBUG - value: rot_omg -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/rot_omg): -DEBUG - value: 131.7 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@depends_on) -DEBUG - value: rot_phi -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@vector) -DEBUG - value: [1 0 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/rot_phi): -DEBUG - value: 2.5 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@depends_on) -DEBUG - value: rot_tht -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/rot_tht): -DEBUG - value: 401.18 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@depends_on) -DEBUG - value: trans_z -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/trans_x): -DEBUG - value: 2.65 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@depends_on) -DEBUG - value: /entry/instrument/manipulator/transformations/trans_z -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@vector) -DEBUG - value: [1 0 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/trans_y): -DEBUG - value: -4.321 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@depends_on) -DEBUG - value: trans_x -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/trans_z): -DEBUG - value: 34.82 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@depends_on) -DEBUG - value: trans_y -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/start_time): -DEBUG - value: b'2019-05-23T18:13:54.657000+00:00' -DEBUG - classpath: ['NXentry', 'NX_DATE_TIME'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/start_time -NXentry.nxdl.xml:/start_time -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/start_time): -DEBUG - - Datetime of the start of the measurement. - Should be a ISO8601 date/time stamp. It is recommended to add an explicit time zone, - otherwise the local time zone is assumed per ISO8601. - -DEBUG - documentation (NXentry.nxdl.xml:/start_time): -DEBUG - - Starting time of measurement - -DEBUG - ===== FIELD (//entry/title): -DEBUG - value: b'Valence Band Dynamics - 1030 nm linear p-polarized pump, 0.6 mJ/cm2 absorbed fluence' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/title -NXentry.nxdl.xml:/title -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/title): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:/title): -DEBUG - - Extended title for entry - -DEBUG - ===== GROUP (//entry/user [NXmpes::/NXentry/NXuser]): -DEBUG - classpath: ['NXentry', 'NXuser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER -NXentry.nxdl.xml:/USER -NXuser.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/USER): -DEBUG - - Contact information of at least the user of the instrument or the investigator - who performed this experiment. Adding multiple users if relevant is recommended. - -DEBUG - documentation (NXentry.nxdl.xml:/USER): -DEBUG - -DEBUG - documentation (NXuser.nxdl.xml:): -DEBUG - - Contact information for a user. - - The format allows more - than one user with the same affiliation and contact information, - but a second :ref:`NXuser` group should be used if they have different - affiliations, etc. - -DEBUG - ===== ATTRS (//entry/user@NX_class) -DEBUG - value: NXuser -DEBUG - classpath: ['NXentry', 'NXuser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER -NXentry.nxdl.xml:/USER -NXuser.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/user/address): -DEBUG - value: b'Faradayweg 4-6, 14195 Berlin' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXuser.nxdl.xml:/address -DEBUG - <> -DEBUG - documentation (NXuser.nxdl.xml:/address): -DEBUG - Address of user -DEBUG - ===== FIELD (//entry/user/affiliation): -DEBUG - value: b'Fritz Haber Institute of the Max Planck Society' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER/affiliation -NXuser.nxdl.xml:/affiliation -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/USER/affiliation): -DEBUG - - Name of the affiliation of the user at the time when the experiment was - performed. - -DEBUG - documentation (NXuser.nxdl.xml:/affiliation): -DEBUG - Affiliation of user -DEBUG - ===== FIELD (//entry/user/email): -DEBUG - value: b'beaulieu@fhi-berlin.mpg.de' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXuser.nxdl.xml:/email -DEBUG - <> -DEBUG - documentation (NXuser.nxdl.xml:/email): -DEBUG - Email of user -DEBUG - ===== FIELD (//entry/user/name): -DEBUG - value: b'Samuel Beaulieu' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER/name -NXuser.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/USER/name): -DEBUG - - Name of the user. - -DEBUG - documentation (NXuser.nxdl.xml:/name): -DEBUG - Name of user responsible for this entry -DEBUG - ===== FIELD (//entry/user/role): -DEBUG - value: b'Principal Investigator' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXuser.nxdl.xml:/role -DEBUG - <> -DEBUG - documentation (NXuser.nxdl.xml:/role): -DEBUG - - Role of user responsible for this entry. - Suggested roles are "local_contact", - "principal_investigator", and "proposer" - -DEBUG - ======================== -DEBUG - === Default Plotable === -DEBUG - ======================== -DEBUG - -DEBUG - NXentry has been identified: /entry -DEBUG - -DEBUG - NXdata group has been identified: /entry/data -DEBUG - ===== GROUP (//entry/data [NXmpes::/NXentry/NXdata]): -DEBUG - ===== ATTRS (//entry/data@NX_class) -DEBUG - value: NXdata -DEBUG - ===== ATTRS (//entry/data@axes) -DEBUG - value: ['kx' 'ky' 'energy' 'delay'] -DEBUG - ===== ATTRS (//entry/data@delay_indices) -DEBUG - value: 3 -DEBUG - ===== ATTRS (//entry/data@energy_indices) -DEBUG - value: 2 -DEBUG - ===== ATTRS (//entry/data@kx_indices) -DEBUG - value: 0 -DEBUG - ===== ATTRS (//entry/data@ky_indices) -DEBUG - value: 1 -DEBUG - ===== ATTRS (//entry/data@signal) -DEBUG - value: data -DEBUG - -DEBUG - Signal has been identified: /entry/data/data -DEBUG - ===== FIELD (//entry/data/data): -DEBUG - value: [[[1.14760e+04 1.64560e+04 1.55440e+04 1.48940e+04 1.08810e+04] ... -DEBUG - Dataset referenced as NXdata SIGNAL -DEBUG - ===== ATTRS (//entry/data/data@units) -DEBUG - value: counts -DEBUG - -DEBUG - For Axis #0, 1 axes have been identified: [] -DEBUG - -DEBUG - For Axis #1, 1 axes have been identified: [] -DEBUG - -DEBUG - For Axis #2, 1 axes have been identified: [] -DEBUG - -DEBUG - For Axis #3, 1 axes have been identified: [] diff --git a/tests/data/dataconverter/readers/mpes/config_file.json b/tests/data/dataconverter/readers/mpes/config_file.json deleted file mode 100644 index a43d282fa..000000000 --- a/tests/data/dataconverter/readers/mpes/config_file.json +++ /dev/null @@ -1,400 +0,0 @@ -{ - "/@default": "entry", - "/ENTRY[entry]/@default": "data", - "/ENTRY[entry]/definition": "NXmpes", - "/ENTRY[entry]/definition/@version": "None", - "/ENTRY[entry]/title": "@attrs:metadata/entry_title", - "/ENTRY[entry]/start_time": "@attrs:metadata/timing/acquisition_start", - "/ENTRY[entry]/experiment_institution": "Fritz Haber Institute - Max Planck Society", - "/ENTRY[entry]/experiment_facility": "Time Resolved ARPES", - "/ENTRY[entry]/experiment_laboratory": "Clean Room 4", - "/ENTRY[entry]/entry_identifier": "@attrs:metadata/entry_identifier", - "/ENTRY[entry]/end_time": "@attrs:metadata/timing/acquisition_stop", - "/ENTRY[entry]/duration": "@attrs:metadata/timing/acquisition_duration", - "/ENTRY[entry]/duration/@units": "s", - "/ENTRY[entry]/collection_time": "@attrs:metadata/timing/collection_time", - "/ENTRY[entry]/collection_time/@units": "s", - "/ENTRY[entry]/USER[user]": { - "name": "@attrs:metadata/user0/name", - "role": "@attrs:metadata/user0/role", - "affiliation": "@attrs:metadata/user0/affiliation", - "address": "@attrs:metadata/user0/address", - "email": "@attrs:metadata/user0/email" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]": { - "name": "Time-of-flight momentum microscope equipped delay line detector, at the endstation of the high rep-rate HHG source at FHI", - "name/@short_name": "TR-ARPES @ FHI", - "energy_resolution": { - "resolution": 140.0, - "resolution/@units": "meV", - "physical_quantity": "energy", - "type": "estimated" - }, - "RESOLUTION[temporal_resolution]": { - "resolution": 35.0, - "resolution/@units": "fs", - "physical_quantity": "time", - "type": "estimated" - }, - "RESOLUTION[momentum_resolution]": { - "resolution": "@link:/entry/instrument/electronanalyser/momentum_resolution", - "resolution/@units": "1/angstrom", - "physical_quantity": "momentum", - "type": "estimated" - }, - "pressure_gauge": { - "name": "sample_chamber_pressure", - "measurement": "pressure", - "value": "@attrs:metadata/file/trARPES:XGS600:PressureAC:P_RD", - "value/@units": "mbar" - }, - "ELECTRONANALYSER[electronanalyser]": { - "description": "SPECS Metis 1000 Momentum Microscope", - "device_information": { - "vendor": "SPECS GmbH", - "model": "Metis 1000 Momentum Microscope" - }, - "fast_axes": [ - "kx", - "ky", - "E" - ], - "slow_axes": "@attrs:metadata/instrument/analyzer/slow_axes", - "energy_resolution": { - "resolution": 110.0, - "resolution/@units": "meV", - "physical_quantity": "energy", - "type": "estimated" - }, - "momentum_resolution": { - "resolution": "@attrs:metadata/instrument/analyzer/momentum_resolution", - "resolution/@units": "1/angstrom", - "physical_quantity": "momentum", - "type": "estimated" - }, - "spatial_resolution": { - "resolution": "@attrs:metadata/instrument/analyzer/spatial_resolution", - "resolution/@units": "µm", - "physical_quantity": "length", - "type": "estimated" - }, - "depends_on": "/entry/instrument/electronanalyser/transformations/trans_z", - "TRANSFORMATIONS[transformations]": { - "AXISNAME[trans_z]": 4.0, - "AXISNAME[trans_z]/@depends_on": "rot_y", - "AXISNAME[trans_z]/@transformation_type": "translation", - "AXISNAME[trans_z]/@units": "mm", - "AXISNAME[trans_z]/@vector": [ - 0, - 0, - 1 - ], - "AXISNAME[rot_y]": -115.0, - "AXISNAME[rot_y]/@depends_on": ".", - "AXISNAME[rot_y]/@transformation_type": "rotation", - "AXISNAME[rot_y]/@units": "degrees", - "AXISNAME[rot_y]/@vector": [ - 0, - 1, - 0 - ] - } - } - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]": { - "projection": "@attrs:metadata/instrument/analyzer/projection", - "scheme": "momentum dispersive", - "lens_mode": "@attrs:metadata/instrument/analyzer/lens_mode", - "extractor_voltage": "@attrs:metadata/file/KTOF:Lens:Extr:V", - "extractor_voltage/@units": "V", - "extractor_current": "@attrs:metadata/file/KTOF:Lens:Extr:I", - "extractor_current/@units": "µA", - "working_distance": 4.0, - "working_distance/@units": "mm", - "LENS_EM[lens_*{A,B,C,D,E,F,G,H,I,UCA,UFA,Foc}]": { - "name": "*", - "voltage": "@attrs:metadata/file/KTOF:Lens:*:V", - "voltage/@units": "V" - }, - "field_aperture": { - "shape": "@attrs:metadata/instrument/analyzer/fa_shape", - "size": "@attrs:metadata/instrument/analyzer/fa_size", - "size/@units": "µm", - "POSITIONER[fa_m1]": { - "value": "@attrs:metadata/file/KTOF:Apertures:m1.RBV", - "value/@units": "mm" - }, - "POSITIONER[fa_m2]": { - "value": "@attrs:metadata/file/KTOF:Apertures:m2.RBV", - "value/@units": "mm" - } - }, - "contrast_aperture": { - "shape": "@attrs:metadata/instrument/analyzer/ca_shape", - "size": "@attrs:metadata/instrument/analyzer/ca_size", - "size/@units": "µm", - "POSITIONER[ca_m3]": { - "value": "@attrs:metadata/file/KTOF:Apertures:m3.RBV", - "value/@units": "mm" - } - } - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]": { - "pass_energy": "@attrs:metadata/file/KTOF:Lens:TOF:V", - "pass_energy/@units": "eV", - "scheme": "tof", - "tof_distance": 0.9, - "tof_distance/@units": "m" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]": { - "amplifier_type": "MCP", - "detector_type": "DLD", - "sensor_pixels": [ - 1800, - 1800 - ], - "amplifier_bias": "@attrs:metadata/file/KTOF:Lens:MCPfront:V", - "amplifier_bias/@units": "V", - "amplifier_voltage": "@attrs:metadata/file/KTOF:Lens:MCPback:V", - "amplifier_voltage/@units": "V", - "detector_voltage": "@attrs:metadata/file/KTOF:Lens:UDLD:V", - "detector_voltage/@units": "V" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/source_TYPE[source_probe]": { - "name": "HHG @ TR-ARPES @ FHI", - "probe": "photon", - "type": "HHG laser", - "mode": "Single Bunch", - "frequency": "@attrs:metadata/instrument/beam/probe/frequency", - "frequency/@units": "kHz", - "associated_beam": "/entry/instrument/beam_probe" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/beam_TYPE[beam_probe]": { - "distance": 0.0, - "distance/@units": "mm", - "incident_energy": "@attrs:metadata/instrument/beam/probe/incident_energy", - "incident_energy/@units": "eV", - "incident_energy_spread": "@attrs:metadata/instrument/beam/probe/incident_energy_spread", - "incident_energy_spread/@units": "eV", - "pulse_duration": "@attrs:metadata/instrument/beam/probe/pulse_duration", - "pulse_duration/@units": "fs", - "incident_polarization": "@attrs:metadata/instrument/beam/probe/incident_polarization", - "incident_polarization/@units": "V^2/mm^2", - "extent": "@attrs:metadata/instrument/beam/probe/extent", - "extent/@units": "µm", - "associated_source": "/entry/instrument/source_probe" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/source_TYPE[source_pump]": { - "name": "OPCPA @ TR-ARPES @ FHI", - "probe": "visible light", - "type": "Optical Laser", - "mode": "Single Bunch", - "frequency": "@attrs:metadata/instrument/beam/pump/frequency", - "frequency/@units": "kHz", - "associated_beam": "/entry/instrument/beam_pump" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/beam_TYPE[beam_pump]": { - "distance": 0.0, - "distance/@units": "mm", - "incident_energy": "@attrs:metadata/instrument/beam/pump/incident_energy", - "incident_energy/@units": "eV", - "incident_energy_spread": "@attrs:metadata/instrument/beam/pump/incident_energy_spread", - "incident_energy_spread/@units": "eV", - "incident_wavelength": "@attrs:metadata/instrument/beam/pump/incident_wavelength", - "incident_wavelength/@units": "nm", - "pulse_duration": "@attrs:metadata/instrument/beam/pump/pulse_duration", - "pulse_duration/@units": "fs", - "incident_polarization": "@attrs:metadata/instrument/beam/pump/incident_polarization", - "incident_polarization/@units": "V^2/mm^2", - "pulse_energy": "@attrs:metadata/instrument/beam/pump/pulse_energy", - "pulse_energy/@units": "µJ", - "average_power": "@attrs:metadata/instrument/beam/pump/average_power", - "average_power/@units": "mW", - "extent": "@attrs:metadata/instrument/beam/pump/extent", - "extent/@units": "µm", - "fluence": "@attrs:metadata/instrument/beam/pump/fluence", - "fluence/@units": "mJ/cm^2", - "associated_source": "/entry/instrument/source_pump" - }, - "/ENTRY[entry]/INSTRUMENT[instrument]/MANIPULATOR[manipulator]": { - "temperature_sensor": { - "name": "sample_temperature", - "measurement": "temperature", - "value": "@attrs:metadata/file/trARPES:Carving:TEMP_RBV", - "value/@units": "K" - }, - "sample_bias_voltmeter": { - "name": "sample_bias", - "measurement": "voltage", - "value": "@attrs:metadata/file/KTOF:Lens:Sample:V", - "value/@units": "V" - }, - "depends_on": "/entry/instrument/manipulator/transformations/trans_z", - "TRANSFORMATIONS[transformations]": { - "AXISNAME[trans_z]": -0.32, - "AXISNAME[trans_z]/@depends_on": "rot_z", - "AXISNAME[trans_z]/@transformation_type": "translation", - "AXISNAME[trans_z]/@units": "m", - "AXISNAME[trans_z]/@vector": [ - 0, - 0, - 1 - ], - "AXISNAME[rot_z]/@depends_on": "rot_x", - "AXISNAME[rot_z]": -25.0, - "AXISNAME[rot_z]/@transformation_type": "rotation", - "AXISNAME[rot_z]/@units": "degrees", - "AXISNAME[rot_z]/@vector": [ - 0, - 0, - 1 - ], - "AXISNAME[rot_x]/@depends_on": ".", - "AXISNAME[rot_x]": -90.0, - "AXISNAME[rot_x]/@transformation_type": "rotation", - "AXISNAME[rot_x]/@units": "degrees", - "AXISNAME[rot_x]/@vector": [ - 1, - 0, - 0 - ] - } - }, - "/ENTRY[entry]/SAMPLE[sample]": { - "preparation_date": "@attrs:metadata/sample/preparation_date", - "sample_history/notes": "@attrs:metadata/sample/sample_history", - "description": "@attrs:metadata/sample/chemical_formula", - "name": "@attrs:metadata/sample/chemical_formula", - "situation": "vacuum", - "SUBSTANCE[substance]/molecular_formula_hill": "@attrs:metadata/sample/chemical_formula", - "temperature": { - "temperature_sensor": "@link:/entry/instrument/manipulator/temperature_sensor" - }, - "gas_pressure": { - "pressure_gauge": "@link:/entry/instrument/pressure_gauge" - }, - "bias": { - "voltmeter": "@link:/entry/instrument/manipulator/sample_bias_voltmeter" - }, - "depends_on": "/entry/sample/transformations/corrected_phi", - "TRANSFORMATIONS[transformations]": { - "AXISNAME[corrected_phi]/@depends_on": "rot_omg", - "AXISNAME[corrected_phi]": 90.0, - "AXISNAME[corrected_phi]/@units": "degrees", - "AXISNAME[corrected_phi]/@transformation_type": "rotation", - "AXISNAME[corrected_phi]/@vector": [ - 0, - 1, - 0 - ], - "AXISNAME[rot_omg]/@depends_on": "rot_phi", - "AXISNAME[rot_omg]": "@attrs:metadata/file/trARPES:Carving:OMG.RBV", - "AXISNAME[rot_omg]/@units": "degrees", - "AXISNAME[rot_omg]/@transformation_type": "rotation", - "AXISNAME[rot_omg]/@vector": [ - 1, - 0, - 0 - ], - "AXISNAME[rot_phi]/@depends_on": "rot_tht", - "AXISNAME[rot_phi]": "@attrs:metadata/file/trARPES:Carving:PHI.RBV", - "AXISNAME[rot_phi]/@units": "degrees", - "AXISNAME[rot_phi]/@transformation_type": "rotation", - "AXISNAME[rot_phi]/@vector": [ - 0, - 1, - 0 - ], - "AXISNAME[rot_tht]/@depends_on": "trans_z", - "AXISNAME[rot_tht]": "@attrs:metadata/file/trARPES:Carving:THT.RBV", - "AXISNAME[rot_tht]/@units": "degrees", - "AXISNAME[rot_tht]/@transformation_type": "rotation", - "AXISNAME[rot_tht]/@vector": [ - 0, - 0, - 1 - ], - "AXISNAME[trans_z]/@depends_on": "trans_y", - "AXISNAME[trans_z]": "@attrs:metadata/file/trARPES:Carving:TRZ.RBV", - "AXISNAME[trans_z]/@units": "mm", - "AXISNAME[trans_z]/@transformation_type": "translation", - "AXISNAME[trans_z]/@vector": [ - 0, - 0, - 1 - ], - "AXISNAME[trans_y]/@depends_on": "trans_x", - "AXISNAME[trans_y]": "@attrs:metadata/file/trARPES:Carving:TRY.RBV", - "AXISNAME[trans_y]/@units": "mm", - "AXISNAME[trans_y]/@transformation_type": "translation", - "AXISNAME[trans_y]/@vector": [ - 0, - 1, - 0 - ], - "AXISNAME[trans_x]/@depends_on": "/entry/instrument/manipulator/transformations/trans_z", - "AXISNAME[trans_x]": "@attrs:metadata/file/trARPES:Carving:TRX.RBV", - "AXISNAME[trans_x]/@units": "mm", - "AXISNAME[trans_x]/@transformation_type": "translation", - "AXISNAME[trans_x]/@vector": [ - 1, - 0, - 0 - ] - } - }, - "/ENTRY[entry]/PROCESS[process]/DISTORTION[distortion]": { - "symmetry": "@attrs:metadata/momentum_correction/rotsym", - "original_centre": "@attrs:metadata/momentum_correction/pcent", - "original_points": "@attrs:metadata/momentum_correction/pouter", - "cdeform_field": "@attrs:metadata/momentum_correction/cdeform_field", - "rdeform_field": "@attrs:metadata/momentum_correction/rdeform_field" - }, - "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]": { - "depends_on": "/entry/process/registration/tranformations/rot_z", - "TRANSFORMATIONS[tranformations]": { - "AXISNAME[trans_x]": "@attrs:metadata/momentum_correction/adjust_params/xtrans", - "AXISNAME[trans_x]/@transformation_type": "translation", - "AXISNAME[trans_x]/@units": "pixels", - "AXISNAME[trans_x]/@vector": "@attrs:metadata/momentum_correction/adjust_params/x_vector", - "AXISNAME[trans_x]/@depends_on": ".", - "AXISNAME[trans_y]": "@attrs:metadata/momentum_correction/adjust_params/ytrans", - "AXISNAME[trans_y]/@units": "pixels", - "AXISNAME[trans_y]/@transformation_type": "translation", - "AXISNAME[trans_y]/@vector": "@attrs:metadata/momentum_correction/adjust_params/y_vector", - "AXISNAME[trans_y]/@depends_on": "trans_x", - "AXISNAME[rot_z]": "@attrs:metadata/momentum_correction/adjust_params/angle", - "AXISNAME[rot_z]/@units": "degrees", - "AXISNAME[rot_z]/@transformation_type": "rotation", - "AXISNAME[rot_z]/@offset": "@attrs:metadata/momentum_correction/adjust_params/offset", - "AXISNAME[rot_z]/@vector": "@attrs:metadata/momentum_correction/adjust_params/rotation_vector", - "AXISNAME[rot_z]/@depends_on": "trans_y" - } - }, - "/ENTRY[entry]/PROCESS[process]/energy_calibration":{ - "coefficients": "@attrs:metadata/energy_correction/calibration/coeffs", - "fit_function": "@attrs:metadata/energy_correction/calibration/fit_function", - "original_axis": "@attrs:metadata/energy_correction/tof", - "calibrated_axis": "@attrs:metadata/energy_correction/calibration/axis" - }, - "/ENTRY[entry]/PROCESS[process]/CALIBRATION[kx_calibration]": { - "scaling": "@attrs:metadata/momentum_correction/calibration/scale_kx", - "offset": "@attrs:metadata/momentum_correction/offset_kx", - "calibrated_axis": "@attrs:metadata/momentum_correction/calibration/axis_kx" - }, - "/ENTRY[entry]/PROCESS[process]/CALIBRATION[ky_calibration]": { - "scaling": "@attrs:metadata/momentum_correction/calibration/scale_ky", - "offset": "@attrs:metadata/momentum_correction/offset_ky", - "calibrated_axis": "@attrs:metadata/momentum_correction/calibration/axis_ky" - }, - "/ENTRY[entry]/data": { - "@axes": "@data:dims", - "AXISNAME_indices[@*_indices]": "@data:*.index", - "@signal": "data", - "data": "@data:data", - "data/@units": "counts", - "AXISNAME[*]": "@data:*.data", - "AXISNAME[*]/@units": "@data:*.unit", - "energy/@type": "binding" - } -} \ No newline at end of file diff --git a/tests/data/dataconverter/readers/mpes/eln_data.yaml b/tests/data/dataconverter/readers/mpes/eln_data.yaml deleted file mode 100644 index d6a61b12f..000000000 --- a/tests/data/dataconverter/readers/mpes/eln_data.yaml +++ /dev/null @@ -1,109 +0,0 @@ -title: Valence Band Dynamics - 1030 nm linear p-polarized pump, 0.6 mJ/cm2 absorbed fluence -Instrument: - energy_resolution: - unit: meV - value: 140.0 - momentum_resolution: - unit: 1/angstrom - value: 0.08 - temporal_resolution: - unit: fs - value: 35.0 - Analyzer: - energy_resolution: - unit: eV - value: 110.0 - momentum_resolution: - unit: 1/angstrom - value: 0.08 - slow_axes: delay - spatial_resolution: - unit: µm - value: 10.0 - Manipulator: - sample_temperature: - unit: K - value: 300.0 - Source: - Probe: - frequency: - unit: KHz - value: 500.0 - photon_energy: - unit: eV - value: 21.7 - Pump: - frequency: - unit: KHz - value: 500.0 - photon_energy: - unit: eV - value: 1.55 - Beam: - Probe: - extent: - unit: µm - value: - - 80.0 - - 80.0 - incident_energy: - unit: eV - value: 21.7 - incident_energy_spread: - unit: eV - value: 0.11 - incident_polarization: - - 1 - - 1 - - 0 - - 0 - pulse_duration: - unit: fs - value: 20.0 - Pump: - extent: - unit: µm - value: - - 230.0 - - 265.0 - incident_energy: - unit: eV - value: 1.55 - incident_energy_spread: - unit: eV - value: 0.08 - incident_polarization: - - 1 - - -1 - - 0 - - 0 - incident_wavelength: - unit: nm - value: 800.0 - average_power: - unit: mW - value: 300.0 - pulse_energy: - unit: µJ - value: 0.6 - fluence: - unit: mJ / cm ** 2 - value: 0.15 - pulse_duration: - unit: fs - value: 35.0 -Sample: - chemical_formula: WSe2 - description: Sample - name: WSe2 Single Crystal - preparation_date: "2019-01-13T09:00:00+00:00" - pressure: - unit: bar - value: 5.0e-14 - sample_history: Cleaved -User: - address: Faradayweg 4-6, 14915 Berlin - affiliation: Fritz Haber Institute of the Max Planck Society - email: maklar@fhi-berlin.mpg.de - name: Julian Maklar - role: Principal Investigator diff --git a/tests/data/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 b/tests/data/nexus/xarray_saved_small_calibration.h5 similarity index 100% rename from tests/data/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 rename to tests/data/nexus/xarray_saved_small_calibration.h5 diff --git a/tests/dataconverter/test_convert.py b/tests/dataconverter/test_convert.py index a49cc59a5..6a741f45c 100644 --- a/tests/dataconverter/test_convert.py +++ b/tests/dataconverter/test_convert.py @@ -17,22 +17,22 @@ # """Test cases for the convert script used to access the DataConverter.""" -import os import logging -from setuptools import distutils -from click.testing import CliRunner -import pytest +import os + import h5py -from pynxtools.nexus import nexus # noqa: E402 +import pytest +from click.testing import CliRunner +from setuptools import distutils + import pynxtools.dataconverter.convert as dataconverter from pynxtools.dataconverter.readers.base.reader import BaseReader +from pynxtools.nexus import nexus # noqa: E402 # noqa: E402 def move_xarray_file_to_tmp(tmp_path): """Moves the xarray file, which is used to test linking into the tmp_path directory.""" - test_file_path = os.path.join( - os.path.dirname(__file__), "../data/dataconverter/readers/mpes" - ) + test_file_path = os.path.join(os.path.dirname(__file__), "../data/nexus") distutils.file_util.copy_file( os.path.join(test_file_path, "xarray_saved_small_calibration.h5"), os.path.join(tmp_path, "xarray_saved_small_calibration.h5"), @@ -41,9 +41,7 @@ def move_xarray_file_to_tmp(tmp_path): def restore_xarray_file_from_tmp(tmp_path): """Restores the xarray file from the tmp_path directory.""" - test_file_path = os.path.join( - os.path.dirname(__file__), "../data/dataconverter/readers/mpes" - ) + test_file_path = os.path.join(os.path.dirname(__file__), "../data/nexus") os.remove(os.path.join(test_file_path, "xarray_saved_small_calibration.h5")) distutils.file_util.move_file( os.path.join(tmp_path, "xarray_saved_small_calibration.h5"), @@ -212,64 +210,6 @@ def test_compression(tmp_path): restore_xarray_file_from_tmp(tmp_path) -def test_mpes_writing(tmp_path): - """Check if mpes example can be reproduced""" - # dataconverter - dirpath = os.path.join( - os.path.dirname(__file__), "../data/dataconverter/readers/mpes" - ) - dataconverter.convert( - ( - os.path.join(dirpath, "xarray_saved_small_calibration.h5"), - os.path.join(dirpath, "config_file.json"), - ), - "mpes", - "NXmpes", - os.path.join(tmp_path, "mpes.small_test.nxs"), - False, - False, - ) - # check generated nexus file - test_data = os.path.join(tmp_path, "mpes.small_test.nxs") - logger = logging.getLogger(__name__) - logger.setLevel(logging.DEBUG) - handler = logging.FileHandler(os.path.join(tmp_path, "mpes_test.log"), "w") - formatter = logging.Formatter("%(levelname)s - %(message)s") - handler.setLevel(logging.DEBUG) - handler.setFormatter(formatter) - logger.addHandler(handler) - nexus_helper = nexus.HandleNexus(logger, test_data, None, None) - nexus_helper.process_nexus_master_file(None) - with open( - os.path.join(tmp_path, "mpes_test.log"), "r", encoding="utf-8" - ) as logfile: - log = logfile.readlines() - with open( - os.path.join(dirpath, "Ref_nexus_mpes.log"), "r", encoding="utf-8" - ) as logfile: - ref_log = logfile.readlines() - assert log == ref_log - - -def test_eln_data(tmp_path): - """Check if the subsections in the eln_data.yml file work.""" - dirpath = os.path.join( - os.path.dirname(__file__), "../data/dataconverter/readers/mpes" - ) - dataconverter.convert( - ( - os.path.join(dirpath, "xarray_saved_small_calibration.h5"), - os.path.join(dirpath, "config_file.json"), - os.path.join(dirpath, "eln_data.yaml"), - ), - "mpes", - "NXmpes", - os.path.join(tmp_path, "mpes.small_test.nxs"), - False, - False, - ) - - def test_eln_data_subsections(tmp_path): """Check if the subsections in the eln_data.yml file work.""" dirpath = os.path.join( diff --git a/tests/dataconverter/test_helpers.py b/tests/dataconverter/test_helpers.py index 5542dd703..5956eab26 100644 --- a/tests/dataconverter/test_helpers.py +++ b/tests/dataconverter/test_helpers.py @@ -141,8 +141,7 @@ def fixture_filled_test_data(template, tmp_path): distutils.file_util.copy_file( f"{os.path.dirname(__file__)}" f"/../" - f"data/dataconverter/" - f"readers/mpes/" + f"data/nexus/" f"xarray_saved_small_calibration.h5", tmp_path, ) diff --git a/tests/dataconverter/test_readers.py b/tests/dataconverter/test_readers.py index 2dfed9947..b0e568180 100644 --- a/tests/dataconverter/test_readers.py +++ b/tests/dataconverter/test_readers.py @@ -112,28 +112,3 @@ def test_has_correct_read_func(reader): assert isinstance(read_data, Template) assert validate_data_dict(template, read_data, root) - - -@pytest.mark.parametrize("reader_name,nxdl,undocumented_keys", [("mpes", "NXmpes", [])]) -def test_shows_correct_warnings(reader_name, nxdl, undocumented_keys): - """ - Checks whether the read function generates the correct warnings. - """ - def_dir = os.path.join(os.getcwd(), "pynxtools", "definitions") - dataconverter_data_dir = os.path.join("tests", "data", "dataconverter") - - input_files = sorted( - glob.glob(os.path.join(dataconverter_data_dir, "readers", reader_name, "*")) - ) - nxdl_file = os.path.join(def_dir, "contributed_definitions", f"{nxdl}.nxdl.xml") - - root = ET.parse(nxdl_file).getroot() - template = Template() - generate_template_from_nxdl(root, template) - - read_data = get_reader(reader_name)().read( - template=Template(template), file_paths=tuple(input_files) - ) - - assert validate_data_dict(template, read_data, root) - assert list(read_data.undocumented.keys()) == undocumented_keys