diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..1bccc1fa8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.h5 filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 163382dd2..b40cf95bc 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -8,6 +8,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + with: + lfs: true - name: Set up Python 3.7 uses: actions/setup-python@v2 with: @@ -16,6 +18,7 @@ jobs: run: | git submodule sync --recursive git submodule update --init --recursive --jobs=4 + git lfs pull python -m pip install --upgrade pip pip install nomad-lab==1.1.1 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple if [ -f requirements.txt ]; then pip install -r requirements.txt; fi diff --git a/nexusparser/definitions b/nexusparser/definitions index 09ae1f0a1..b77ed5118 160000 --- a/nexusparser/definitions +++ b/nexusparser/definitions @@ -1 +1 @@ -Subproject commit 09ae1f0a196d55f8b51847cd2647cded359ac1c4 +Subproject commit b77ed5118f69ccbbf4113aa5cabdc2ca00c9bea1 diff --git a/nexusparser/metainfo/nexus.py b/nexusparser/metainfo/nexus.py index 80f6c7418..38e8ae425 100644 --- a/nexusparser/metainfo/nexus.py +++ b/nexusparser/metainfo/nexus.py @@ -449,6 +449,8 @@ def compare_dependencies(nxdl1, nxdl2): for nxdl_file in sorted(os.listdir(path)): if not nxdl_file.endswith('.nxdl.xml'): continue + if nxdl_file in [el.attrib["name"] + '.nxdl.xml' for el in list_of_nxdl]: + continue xml_tree = ET.parse(os.path.join(path, nxdl_file)) xml_node = xml_tree.getroot() xml_node.set('nxdl_base', path) @@ -465,7 +467,7 @@ def compare_dependencies(nxdl1, nxdl2): current_index = current_index + 1 if current_index == len(list_of_nxdl): sorted_index = sorted_index + 1 - # print('\n'.join([nxdl.attrib['name'] for nxdl in list_of_nxdl])) + # print('\n'.join([(nxdl.attrib['name'],p.attrib["nxdl_base"]) for nxdl in list_of_nxdl])) return list_of_nxdl @@ -501,8 +503,8 @@ def create_package_from_nxdl_directories(paths) -> Package: # separated metainfo package for the nexus base classes, application defs and contributed classes. -DIRS = [os.path.join(nexus.get_nexus_definitions_path(), 'base_classes')] -DIRS.append(os.path.join(nexus.get_nexus_definitions_path(), 'contributed_definitions')) +DIRS = [os.path.join(nexus.get_nexus_definitions_path(), 'contributed_definitions')] +DIRS.append(os.path.join(nexus.get_nexus_definitions_path(), 'base_classes')) DIRS.append(os.path.join(nexus.get_nexus_definitions_path(), 'applications')) APPLICATIONS = create_package_from_nxdl_directories(DIRS) PACKAGES = (APPLICATIONS,) # , APPLICATIONS, CONTRIBUTED) diff --git a/nexusparser/tools/dataconverter/helpers.py b/nexusparser/tools/dataconverter/helpers.py index 54a5f4594..c5b374fbf 100644 --- a/nexusparser/tools/dataconverter/helpers.py +++ b/nexusparser/tools/dataconverter/helpers.py @@ -252,6 +252,15 @@ def all_required_children_are_set(optional_parent_path, data, nxdl_root): return True +def is_nxdl_path_a_child(nxdl_path: str, parent: str): + """Takes an NXDL path for an element and an NXDL parent and confirms it is a child.""" + while nxdl_path.rfind("/") != -1: + nxdl_path = nxdl_path[0:nxdl_path.rfind("/")] + if parent == nxdl_path: + return True + return False + + def check_optionality_based_on_parent_group( path, nxdl_path, @@ -261,7 +270,7 @@ def check_optionality_based_on_parent_group( """Checks whether field is part of an optional parent and then confirms its optionality""" for optional_parent in template["optional_parents"]: optional_parent_nxdl = convert_data_converter_dict_to_nxdl_path(optional_parent) - if optional_parent_nxdl in nxdl_path \ + if is_nxdl_path_a_child(nxdl_path, optional_parent_nxdl) \ and not all_required_children_are_set(optional_parent, data, nxdl_root): raise Exception(f"The data entry, {path}, has an optional parent, " f"{optional_parent}, with required children set. Either" diff --git a/nexusparser/tools/dataconverter/readers/ellips/reader.py b/nexusparser/tools/dataconverter/readers/ellips/reader.py index 48c67d3f8..1ddffd6e4 100644 --- a/nexusparser/tools/dataconverter/readers/ellips/reader.py +++ b/nexusparser/tools/dataconverter/readers/ellips/reader.py @@ -21,6 +21,7 @@ import yaml import pandas as pd import numpy as np +# import h5py from nexusparser.tools.dataconverter.readers.base.reader import BaseReader DEFAULT_HEADER = {'sep': '\t', 'skip': 0} @@ -40,8 +41,9 @@ def load_header(filename, default): with open(filename, 'rt', encoding='utf8') as file: header = yaml.safe_load(file) - for attr in header: - if "@" in attr: + header_keys = list(header.keys()) + for attr in header_keys: + if "\\@" in attr: header[attr.replace("\\@", "@")] = header.pop(attr) for key, value in default.items(): @@ -102,6 +104,10 @@ def populate_header_dict(file_paths): raise KeyError("filename is missing from", file_path) data_file = os.path.join(os.path.split(file_path)[0], header["filename"]) + # if the path is not right, try the path provided directly + if not os.path.isfile(data_file): + data_file = header["filename"] + return header, data_file @@ -154,6 +160,7 @@ def populate_header_dict_with_datasets(self, file_paths): if os.path.isfile(data_file): whole_data = load_as_pandas_array(data_file, header) else: + # this we have tried, we should throw an error... whole_data = load_as_pandas_array(header["filename"], header) # User defined variables to produce slices of the whole data set @@ -172,53 +179,55 @@ def populate_header_dict_with_datasets(self, file_paths): block_idx.append(index) # array that will be allocated in a HDF5 file - my_numpy_array = np.empty([counts[0], - len(['psi', 'delta']), - len(unique_angles), + # counts[0] = N_wavelents*N_time*N_p1 + my_numpy_array = np.empty([1, 1, - 1 + len(unique_angles), + len(['psi', 'delta']), + counts[0] ]) for index, unique_angle in enumerate(unique_angles): - my_numpy_array[:, - :, - index, + my_numpy_array[0, 0, - 0] = unique_angle + index, + :, + :] = unique_angle for index in range(len(labels["psi"])): - my_numpy_array[:, + my_numpy_array[0, 0, index, 0, - 0] = whole_data["psi"].to_numpy()[block_idx[index]:block_idx[index + 1] + :] = whole_data["psi"].to_numpy()[block_idx[index]:block_idx[index + 1] ].astype("float64") for index in range(len(labels["delta"])): - my_numpy_array[:, - 1, - index, + my_numpy_array[0, 0, - 0] = whole_data["delta"].to_numpy()[block_idx[index]:block_idx[index + 1] + index, + 1, + :] = whole_data["delta"].to_numpy()[block_idx[index]:block_idx[index + 1] ].astype("float64") # measured_data is a required field header["measured_data"] = my_numpy_array - header["wavelength"] = whole_data["wavelength"].to_numpy()[0:counts[0]].astype("float64") + header["spectrometer/wavelength"] = whole_data["wavelength"].to_numpy()[0:counts[0]].astype("float64") header["angle_of_incidence"] = unique_angles return header, labels["psi"], labels["delta"] def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: # pylint: disable=W0221 - """Reads data from given file and returns a filled template dictionary. + """ Reads data from given file and returns a filled template dictionary. -A handlings of virtual datasets is implemented: + A handlings of virtual datasets is implemented: -virtual dataset are created inside the final NeXus file. + virtual dataset are created inside the final NeXus file. + + The template entry is filled with a dictionary containing the following keys: + - link: the path of the external data file and the path of desired dataset inside it + - shape: numpy array slice object (according to array slice notation) + """ -The template entry is filled with a dictionary containing the following keys: -- link: the path of the external data file and the path of desired dataset inside it -- shape: numpy array slice object (according to array slice notation) -""" if not file_paths: raise Exception("No input files were given to Ellipsometry Reader.") @@ -229,7 +238,7 @@ def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: # template = populate_template_dict(header, template) template["/ENTRY[entry]/plot/wavelength"] = {"link": - "/entry/sample/wavelength" + "/entry/instrument/spectrometer/wavelength" } template["/ENTRY[entry]/plot/wavelength/@units"] = "angstrom" @@ -237,7 +246,7 @@ def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: # template[f"/ENTRY[entry]/plot/{psi}"] = {"link": "/entry/sample/measured_data", "shape": - np.index_exp[:, 0, index, 0, 0] + np.index_exp[0, 0, index, 0, :] } template[f"/ENTRY[entry]/plot/{psi}/@units"] = "degrees" @@ -245,7 +254,7 @@ def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: # template[f"/ENTRY[entry]/plot/{delta}"] = {"link": "/entry/sample/measured_data", "shape": - np.index_exp[:, 1, index, 0, 0] + np.index_exp[0, 0, index, 1, :] } template[f"/ENTRY[entry]/plot/{delta}/@units"] = "degrees" diff --git a/nexusparser/tools/dataconverter/readers/mpes/reader.py b/nexusparser/tools/dataconverter/readers/mpes/reader.py index d48a7079d..b48dbfed5 100644 --- a/nexusparser/tools/dataconverter/readers/mpes/reader.py +++ b/nexusparser/tools/dataconverter/readers/mpes/reader.py @@ -130,6 +130,13 @@ def recursive_parse_metadata(node): 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 diff --git a/nexusparser/tools/nexus.py b/nexusparser/tools/nexus.py index 1457fbb85..886790cdb 100644 --- a/nexusparser/tools/nexus.py +++ b/nexusparser/tools/nexus.py @@ -289,6 +289,19 @@ def get_own_nxdl_child(nxdl_elem, name, class_type=None, hdf_name=None, nexus_ty return None +def find_definition_file(bc_name): + """find the nxdl file corresponding to the name. + Note that it first checks in contributed and goes beyond only if no contributed found""" + bc_filename = None + for nxdl_folder in ['contributed_definitions', 'base_classes', 'applications']: + if os.path.exists(f"{get_nexus_definitions_path()}{os.sep}" + f"{nxdl_folder}{os.sep}{bc_name}.nxdl.xml"): + bc_filename = f"{get_nexus_definitions_path()}{os.sep}" \ + f"{nxdl_folder}{os.sep}{bc_name}.nxdl.xml" + break + return bc_filename + + def get_nxdl_child(nxdl_elem, name, class_type=None, hdf_name=None, nexus_type=None, go_base=True): # pylint: disable=too-many-arguments """Get the NXDL child node corresponding to a specific name (e.g. of an HDF5 node,or of a documentation) note that if child is not found in application @@ -305,11 +318,7 @@ def get_nxdl_child(nxdl_elem, name, class_type=None, hdf_name=None, nexus_type=N return None if bc_name == "group": # Check if it is the root element. Then send to NXroot.nxdl.xml bc_name = "NXroot" - for nxdl_folder in ['base_classes', 'contributed_definitions', 'applications']: - if os.path.exists(f"{get_nexus_definitions_path()}{os.sep}" - f"{nxdl_folder}{os.sep}{bc_name}.nxdl.xml"): - bc_filename = f"{get_nexus_definitions_path()}{os.sep}" \ - f"{nxdl_folder}{os.sep}{bc_name}.nxdl.xml" + bc_filename = find_definition_file(bc_name) if not bc_filename: raise ValueError('nxdl file not found in definitions folder!') bc_obj = ET.parse(bc_filename).getroot() @@ -637,16 +646,15 @@ def add_base_classes(elist, nx_name=None, elem: ET.Element = None): elist is empty, a nxdl file with the name of nx_name or a rather room elem is used if provided""" if elist and nx_name is None: nx_name = get_nx_class(elist[-1]) - if elist and nx_name and f"{nx_name}.nxdl.xml" in (e.get('nxdlbase') for e in elist): - return + # to support recursive defintions, like NXsample in NXsample, the following test is removed + # if elist and nx_name and f"{nx_name}.nxdl.xml" in (e.get('nxdlbase') for e in elist): + # return if elem is None: if not nx_name: return - nxdl_file_path = f"{nx_name}.nxdl.xml" - for root, dirs, files in os.walk(get_nexus_definitions_path()): # pylint: disable=unused-variable - if nxdl_file_path in files: - nxdl_file_path = os.path.join(root, nxdl_file_path) - break + nxdl_file_path = find_definition_file(nx_name) + if nxdl_file_path is None: + nxdl_file_path = f"{nx_name}.nxdl.xml" elem = ET.parse(nxdl_file_path).getroot() elem.set('nxdlbase', nxdl_file_path) else: diff --git a/tests/data/nexus_test_data/Ref_nexus_test.log b/tests/data/nexus_test_data/Ref_nexus_test.log index 4294ac173..7576510ef 100644 --- a/tests/data/nexus_test_data/Ref_nexus_test.log +++ b/tests/data/nexus_test_data/Ref_nexus_test.log @@ -9,12 +9,13 @@ DEBUG - documentation (NXarpes.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. + (**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'] @@ -31,9 +32,9 @@ 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 - + 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'] @@ -51,44 +52,44 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/DATA): DEBUG - 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 - - + 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 mandatory that there is at least one :ref:`NXdata` group - in each :ref:`NXentry` group. - Note that the ``variable`` and ``data`` + It is strongly recommended that there is at least one :ref:`NXdata` + group in each :ref:`NXentry` group. + Note that the fields named ``VARIABLE`` 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. @@ -97,12 +98,14 @@ DEBUG - 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 only one data set - containing plottable data, dimension scales, and - possibly associated standard deviations. - Other data sets may be present in the 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``. + 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:: @@ -114,7 +117,7 @@ DEBUG - mr: float[100] --> the default independent data The field named in the ``signal`` attribute **must** exist, either - directly as a dataset or defined through a link. + directly as a NeXus field or defined through a link. * The group ``axes`` attribute will name the *dimension scale* associated with the plottable data. @@ -249,15 +252,17 @@ DEBUG - @signal - [NX_CHAR] DEBUG - <> DEBUG - documentation (NXdata.nxdl.xml:/signal): DEBUG - + .. index:: find the default plottable data .. index:: plotting + .. index:: signal attribute value - Declares which dataset is the default. - The value is the name of the dataset to be plotted. - A field of this name *must* exist (either as dataset - or as a link to a dataset). + Declares which NeXus field is the default. + The value is the name of the NeXus field to be plotted. + (The value :ref:`names ` an existing child + of this group. The child group must itself be a NeXus group.) It is recommended (as of NIAC2014) to use this attribute - rather than adding a signal attribute to the dataset. + 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. @@ -389,16 +394,15 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/definition): DEBUG - Official NeXus NXDL schema to which this file conforms. 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. - - 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. - + (alternate use: see same field in :ref:`NXsubentry` for preferred) + + Official NeXus NXDL schema to which this entry conforms. + 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 - ===== FIELD (//entry/duration): DEBUG - value: 7200 DEBUG - classpath: ['NXentry', 'NX_INT'] @@ -406,7 +410,9 @@ DEBUG - classes: NXentry.nxdl.xml:/duration DEBUG - <> DEBUG - documentation (NXentry.nxdl.xml:/duration): -DEBUG - Duration of measurement +DEBUG - + Duration of measurement + DEBUG - ===== ATTRS (//entry/duration@units) DEBUG - value: s DEBUG - classpath: ['NXentry', 'NX_INT'] @@ -420,7 +426,9 @@ DEBUG - classes: NXentry.nxdl.xml:/end_time DEBUG - <> DEBUG - documentation (NXentry.nxdl.xml:/end_time): -DEBUG - Ending time of measurement +DEBUG - + Ending time of measurement + DEBUG - ===== FIELD (//entry/entry_identifier): DEBUG - value: b'Run 22118' DEBUG - classpath: ['NXentry', 'NX_CHAR'] @@ -428,7 +436,9 @@ 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 - + Unique identifier for the measurement, defined by the facility. + DEBUG - ===== FIELD (//entry/experiment_identifier): DEBUG - value: b'F-20170538' DEBUG - classpath: ['NXentry', 'NX_CHAR'] @@ -437,10 +447,9 @@ NXentry.nxdl.xml:/experiment_identifier DEBUG - <> DEBUG - documentation (NXentry.nxdl.xml:/experiment_identifier): DEBUG - - Unique identifier for the experiment, - defined by the facility, - possibly linked to the proposals - + Unique identifier for the experiment, defined by the facility, possibly linked + to the proposals + DEBUG - ===== GROUP (//entry/instrument [NXarpes::/NXentry/NXinstrument]): DEBUG - classpath: ['NXentry', 'NXinstrument'] DEBUG - classes: @@ -454,15 +463,14 @@ 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. - + 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'] @@ -482,8 +490,8 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser): DEBUG - DEBUG - documentation (NXdetector.nxdl.xml:): DEBUG - - A detector, detector bank, or multidetector. - + A detector, detector bank, or multidetector. + DEBUG - ===== ATTRS (//entry/instrument/analyser@NX_class) DEBUG - value: NXdetector DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector'] @@ -512,7 +520,9 @@ DEBUG - -> decimated DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/acquisition_mode): DEBUG - DEBUG - documentation (NXdetector.nxdl.xml:/acquisition_mode): -DEBUG - The acquisition mode of the detector. +DEBUG - + The acquisition mode of the detector. + DEBUG - ===== FIELD (//entry/instrument/analyser/amplifier_type): DEBUG - value: b'MCP' DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] @@ -521,10 +531,9 @@ NXdetector.nxdl.xml:/type DEBUG - <> DEBUG - documentation (NXdetector.nxdl.xml:/type): DEBUG - - Description of type such as He3 gas cylinder, He3 PSD, scintillator, - fission chamber, proportion counter, ion chamber, ccd, pixel, image plate, - CMOS, ... - + Description of type such as He3 gas cylinder, He3 PSD, scintillator, fission + chamber, proportion counter, ion chamber, ccd, pixel, image plate, CMOS, ... + DEBUG - ===== FIELD (//entry/instrument/analyser/contrast_aperture): DEBUG - value: b'Out' DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector'] @@ -538,10 +547,9 @@ NXdetector.nxdl.xml:/type DEBUG - <> DEBUG - documentation (NXdetector.nxdl.xml:/type): DEBUG - - Description of type such as He3 gas cylinder, He3 PSD, scintillator, - fission chamber, proportion counter, ion chamber, ccd, pixel, image plate, - CMOS, ... - + Description of type such as He3 gas cylinder, He3 PSD, scintillator, fission + chamber, proportion counter, ion chamber, ccd, pixel, image plate, CMOS, ... + DEBUG - ===== FIELD (//entry/instrument/analyser/dispersion_scheme): DEBUG - value: b'Time of flight' DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector'] @@ -568,7 +576,7 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/entrance_slit DEBUG - DEBUG - ===== FIELD (//entry/instrument/analyser/entrance_slit_size): DEBUG - value: 750 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_NUMBER'] DEBUG - classes: NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/entrance_slit_size DEBUG - <> @@ -576,7 +584,7 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/entrance_slit DEBUG - size of the entrance slit DEBUG - ===== ATTRS (//entry/instrument/analyser/entrance_slit_size@units) DEBUG - value: um -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_NUMBER'] DEBUG - classes: NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/entrance_slit_size DEBUG - @units [NX_LENGTH] @@ -625,7 +633,7 @@ DEBUG - NOT IN SCHEMA DEBUG - DEBUG - ===== FIELD (//entry/instrument/analyser/pass_energy): DEBUG - value: 20 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_NUMBER'] DEBUG - classes: NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/pass_energy DEBUG - <> @@ -633,7 +641,7 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/pass_energy): DEBUG - energy of the electrons on the mean path of the analyser DEBUG - ===== ATTRS (//entry/instrument/analyser/pass_energy@units) DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_NUMBER'] DEBUG - classes: NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/pass_energy DEBUG - @units [NX_ENERGY] @@ -665,7 +673,9 @@ DEBUG - classes: NXdetector.nxdl.xml:/sensor_count DEBUG - <> DEBUG - documentation (NXdetector.nxdl.xml:/sensor_count): -DEBUG - Number of imaging sensor chips on the detector. +DEBUG - + Number of imaging sensor chips on the detector. + DEBUG - ===== FIELD (//entry/instrument/analyser/sensor_size): DEBUG - value: [ 80 146] DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_INT'] @@ -676,7 +686,7 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/sensor_size): DEBUG - number of raw active elements in each dimension DEBUG - ===== FIELD (//entry/instrument/analyser/time_per_channel): DEBUG - value: 7200 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_NUMBER'] DEBUG - classes: NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/time_per_channel DEBUG - <> @@ -684,7 +694,7 @@ DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/time_per_chan DEBUG - todo: define more clearly DEBUG - ===== ATTRS (//entry/instrument/analyser/time_per_channel@units) DEBUG - value: s -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_CHAR'] +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_NUMBER'] DEBUG - classes: NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/analyser/time_per_channel DEBUG - @units [NX_TIME] @@ -696,12 +706,11 @@ NXdetector.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXdetector.nxdl.xml:/distance): DEBUG - - This is the distance to the previous component in the - instrument; most often the sample. The usage depends on the - nature of the detector: Most often it is the distance of the - detector assembly. But there are irregular detectors. In this - case the distance must be specified for each detector pixel. - + This is the distance to the previous component in the instrument; most often the + sample. The usage depends on the nature of the detector: Most often it is the + distance of the detector assembly. But there are irregular detectors. In this + case the distance must be specified for each detector pixel. + DEBUG - ===== ATTRS (//entry/instrument/analyser/working_distance@units) DEBUG - value: mm DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXdetector', 'NX_FLOAT'] @@ -718,15 +727,15 @@ 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. - - It will be referenced - by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. Note - that variables such as the incident energy could be scalar values or arrays. 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. + Properties of the neutron or X-ray beam at a given location. + + It will be referenced by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. + Note that variables such as the incident energy could be scalar values or arrays. + 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. + DEBUG - ===== ATTRS (//entry/instrument/beam_probe_0@NX_class) DEBUG - value: NXbeam DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] @@ -742,7 +751,9 @@ DEBUG - classes: NXbeam.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXbeam.nxdl.xml:/distance): -DEBUG - Distance from sample +DEBUG - + Distance from sample + DEBUG - ===== ATTRS (//entry/instrument/beam_probe_0/distance@units) DEBUG - value: cm DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -781,7 +792,9 @@ 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 - + FWHM duration of the pulses at the diagnostic point + DEBUG - ===== ATTRS (//entry/instrument/beam_probe_0/pulse_duration@units) DEBUG - value: fs DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -818,15 +831,15 @@ 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. - - It will be referenced - by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. Note - that variables such as the incident energy could be scalar values or arrays. 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. + Properties of the neutron or X-ray beam at a given location. + + It will be referenced by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. + Note that variables such as the incident energy could be scalar values or arrays. + 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. + DEBUG - ===== ATTRS (//entry/instrument/beam_pump_0@NX_class) DEBUG - value: NXbeam DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] @@ -842,7 +855,9 @@ DEBUG - classes: NXbeam.nxdl.xml:/average_power DEBUG - <> DEBUG - documentation (NXbeam.nxdl.xml:/average_power): -DEBUG - Average power at the diagnostic point +DEBUG - + Average power at the diagnostic point + DEBUG - ===== ATTRS (//entry/instrument/beam_pump_0/average_power@units) DEBUG - value: uW DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -866,7 +881,9 @@ DEBUG - classes: NXbeam.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXbeam.nxdl.xml:/distance): -DEBUG - Distance from sample +DEBUG - + Distance from sample + DEBUG - ===== ATTRS (//entry/instrument/beam_pump_0/distance@units) DEBUG - value: cm DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -880,7 +897,9 @@ DEBUG - classes: NXbeam.nxdl.xml:/fluence DEBUG - <> DEBUG - documentation (NXbeam.nxdl.xml:/fluence): -DEBUG - Incident fluence at the diagnostic point +DEBUG - + Incident fluence at the diagnostic point + DEBUG - ===== ATTRS (//entry/instrument/beam_pump_0/fluence@units) DEBUG - value: mJ/cm^2 DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -919,7 +938,9 @@ 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 - + FWHM duration of the pulses at the diagnostic point + DEBUG - ===== ATTRS (//entry/instrument/beam_pump_0/pulse_duration@units) DEBUG - value: fs DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -933,7 +954,9 @@ 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 - + Energy of a single pulse at the diagnostic point + DEBUG - ===== ATTRS (//entry/instrument/beam_pump_0/pulse_energy@units) DEBUG - value: nJ DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] @@ -962,14 +985,20 @@ DEBUG - NOT IN SCHEMA DEBUG - DEBUG - ===== FIELD (//entry/instrument/energy_resolution): DEBUG - value: 100 -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - NOT IN SCHEMA +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_FLOAT'] +DEBUG - classes: +NXinstrument.nxdl.xml:/energy_resolution +DEBUG - <> +DEBUG - documentation (NXinstrument.nxdl.xml:/energy_resolution): DEBUG - + Energy resolution of the experiment (FWHM or gaussian broadening) + DEBUG - ===== ATTRS (//entry/instrument/energy_resolution@units) DEBUG - value: meV -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - NOT IN SCHEMA -DEBUG - +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_FLOAT'] +DEBUG - classes: +NXinstrument.nxdl.xml:/energy_resolution +DEBUG - @units [NX_ENERGY] DEBUG - ===== GROUP (//entry/instrument/manipulator [NXarpes::/NXentry/NXinstrument/NXpositioner]): DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXpositioner'] DEBUG - classes: @@ -1171,7 +1200,9 @@ DEBUG - classes: NXinstrument.nxdl.xml:/name DEBUG - <> DEBUG - documentation (NXinstrument.nxdl.xml:/name): -DEBUG - Name of instrument +DEBUG - + Name of instrument + DEBUG - ===== GROUP (//entry/instrument/source [NXarpes::/NXentry/NXinstrument/NXsource]): DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] DEBUG - classes: @@ -1184,7 +1215,9 @@ DEBUG - DEBUG - documentation (NXinstrument.nxdl.xml:/SOURCE): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:): -DEBUG - The neutron or x-ray storage ring/facility. +DEBUG - + The neutron or x-ray storage ring/facility. + DEBUG - ===== ATTRS (//entry/instrument/source@NX_class) DEBUG - value: NXsource DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] @@ -1202,10 +1235,9 @@ NXsource.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/distance): DEBUG - - Effective distance from sample - Distance as seen by radiation from sample. This number should be negative - to signify that it is upstream of the sample. - + Effective distance from sample Distance as seen by radiation from sample. This + number should be negative to signify that it is upstream of the sample. + DEBUG - ===== ATTRS (//entry/instrument/source/bunch_distance@units) DEBUG - value: us DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1219,7 +1251,9 @@ DEBUG - classes: NXsource.nxdl.xml:/bunch_length DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/bunch_length): -DEBUG - For storage rings, temporal length of the bunch +DEBUG - + For storage rings, temporal length of the bunch + DEBUG - ===== ATTRS (//entry/instrument/source/bunch_length@units) DEBUG - value: fs DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1234,10 +1268,9 @@ NXsource.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/distance): DEBUG - - Effective distance from sample - Distance as seen by radiation from sample. This number should be negative - to signify that it is upstream of the sample. - + Effective distance from sample Distance as seen by radiation from sample. This + number should be negative to signify that it is upstream of the sample. + DEBUG - ===== ATTRS (//entry/instrument/source/burst_distance@units) DEBUG - value: ms DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1271,7 +1304,9 @@ DEBUG - classes: NXsource.nxdl.xml:/current DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/current): -DEBUG - Accelerator, X-ray tube, or storage ring current +DEBUG - + Accelerator, X-ray tube, or storage ring current + DEBUG - ===== ATTRS (//entry/instrument/source/current@units) DEBUG - value: uA DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1286,10 +1321,9 @@ NXsource.nxdl.xml:/energy DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/energy): DEBUG - - Source energy. - For storage rings, this would be the particle beam energy. - For X-ray tubes, this would be the excitation voltage. - + Source energy. For storage rings, this would be the particle beam energy. For + X-ray tubes, this would be the excitation voltage. + DEBUG - ===== ATTRS (//entry/instrument/source/energy@units) DEBUG - value: MeV DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1303,7 +1337,9 @@ DEBUG - classes: NXsource.nxdl.xml:/frequency DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/frequency): -DEBUG - Frequency of pulsed source +DEBUG - + Frequency of pulsed source + DEBUG - ===== ATTRS (//entry/instrument/source/frequency@units) DEBUG - value: Hz DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1320,7 +1356,9 @@ DEBUG - enumeration (NXsource.nxdl.xml:/mode): DEBUG - -> Single Bunch DEBUG - -> Multi Bunch DEBUG - documentation (NXsource.nxdl.xml:/mode): -DEBUG - source operating mode +DEBUG - + Source operating mode + DEBUG - ===== FIELD (//entry/instrument/source/name): DEBUG - value: b'FLASH' DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] @@ -1331,7 +1369,9 @@ DEBUG - <> DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/SOURCE/name): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:/name): -DEBUG - Name of source +DEBUG - + Name of source + DEBUG - ===== FIELD (//entry/instrument/source/number_of_bunches): DEBUG - value: 500 DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_INT'] @@ -1339,7 +1379,9 @@ DEBUG - classes: NXsource.nxdl.xml:/number_of_bunches DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/number_of_bunches): -DEBUG - For storage rings, the number of bunches in use. +DEBUG - + For storage rings, the number of bunches in use. + DEBUG - ===== FIELD (//entry/instrument/source/number_of_bursts): DEBUG - value: 1 DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] @@ -1366,7 +1408,9 @@ DEBUG - -> proton DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/SOURCE/probe): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:/probe): -DEBUG - type of radiation probe (pick one from the enumerated list and spell exactly) +DEBUG - + Type of radiation probe (pick one from the enumerated list and spell exactly) + DEBUG - ===== FIELD (//entry/instrument/source/top_up): DEBUG - value: True DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_BOOLEAN'] @@ -1374,7 +1418,9 @@ DEBUG - classes: NXsource.nxdl.xml:/top_up DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/top_up): -DEBUG - Is the synchrotron operating in top_up mode? +DEBUG - + Is the synchrotron operating in top_up mode? + DEBUG - ===== FIELD (//entry/instrument/source/type): DEBUG - value: b'Free Electron Laser' DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] @@ -1396,10 +1442,15 @@ DEBUG - -> Optical Laser DEBUG - -> Ion Source DEBUG - -> UV Plasma Source DEBUG - -> Metal Jet X-ray +DEBUG - -> arc lamp +DEBUG - -> halogen lamp +DEBUG - -> LED DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/SOURCE/type): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:/type): -DEBUG - type of radiation source (pick one from the enumerated list and spell exactly) +DEBUG - + Type of radiation source (pick one from the enumerated list and spell exactly) + DEBUG - ===== GROUP (//entry/instrument/source_pump [NXarpes::/NXentry/NXinstrument/NXsource]): DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] DEBUG - classes: @@ -1412,7 +1463,9 @@ DEBUG - DEBUG - documentation (NXinstrument.nxdl.xml:/SOURCE): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:): -DEBUG - The neutron or x-ray storage ring/facility. +DEBUG - + The neutron or x-ray storage ring/facility. + DEBUG - ===== ATTRS (//entry/instrument/source_pump@NX_class) DEBUG - value: NXsource DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] @@ -1430,10 +1483,9 @@ NXsource.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/distance): DEBUG - - Effective distance from sample - Distance as seen by radiation from sample. This number should be negative - to signify that it is upstream of the sample. - + Effective distance from sample Distance as seen by radiation from sample. This + number should be negative to signify that it is upstream of the sample. + DEBUG - ===== ATTRS (//entry/instrument/source_pump/bunch_distance@units) DEBUG - value: us DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1447,7 +1499,9 @@ DEBUG - classes: NXsource.nxdl.xml:/bunch_length DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/bunch_length): -DEBUG - For storage rings, temporal length of the bunch +DEBUG - + For storage rings, temporal length of the bunch + DEBUG - ===== ATTRS (//entry/instrument/source_pump/bunch_length@units) DEBUG - value: fs DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1462,10 +1516,9 @@ NXsource.nxdl.xml:/distance DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/distance): DEBUG - - Effective distance from sample - Distance as seen by radiation from sample. This number should be negative - to signify that it is upstream of the sample. - + Effective distance from sample Distance as seen by radiation from sample. This + number should be negative to signify that it is upstream of the sample. + DEBUG - ===== ATTRS (//entry/instrument/source_pump/burst_distance@units) DEBUG - value: ms DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1489,7 +1542,9 @@ DEBUG - classes: NXsource.nxdl.xml:/frequency DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/frequency): -DEBUG - Frequency of pulsed source +DEBUG - + Frequency of pulsed source + DEBUG - ===== ATTRS (//entry/instrument/source_pump/frequency@units) DEBUG - value: Hz DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] @@ -1506,7 +1561,9 @@ DEBUG - enumeration (NXsource.nxdl.xml:/mode): DEBUG - -> Single Bunch DEBUG - -> Multi Bunch DEBUG - documentation (NXsource.nxdl.xml:/mode): -DEBUG - source operating mode +DEBUG - + Source operating mode + DEBUG - ===== FIELD (//entry/instrument/source_pump/name): DEBUG - value: b'User Laser @ FLASH' DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] @@ -1517,7 +1574,9 @@ DEBUG - <> DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/SOURCE/name): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:/name): -DEBUG - Name of source +DEBUG - + Name of source + DEBUG - ===== FIELD (//entry/instrument/source_pump/number_of_bunches): DEBUG - value: 400 DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_INT'] @@ -1525,7 +1584,9 @@ DEBUG - classes: NXsource.nxdl.xml:/number_of_bunches DEBUG - <> DEBUG - documentation (NXsource.nxdl.xml:/number_of_bunches): -DEBUG - For storage rings, the number of bunches in use. +DEBUG - + For storage rings, the number of bunches in use. + DEBUG - ===== FIELD (//entry/instrument/source_pump/number_of_bursts): DEBUG - value: 1 DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] @@ -1552,7 +1613,9 @@ DEBUG - -> proton DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/SOURCE/probe): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:/probe): -DEBUG - type of radiation probe (pick one from the enumerated list and spell exactly) +DEBUG - + Type of radiation probe (pick one from the enumerated list and spell exactly) + DEBUG - ===== FIELD (//entry/instrument/source_pump/rms_jitter): DEBUG - value: 204.68816194453154 DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] @@ -1584,30 +1647,47 @@ DEBUG - -> Optical Laser DEBUG - -> Ion Source DEBUG - -> UV Plasma Source DEBUG - -> Metal Jet X-ray +DEBUG - -> arc lamp +DEBUG - -> halogen lamp +DEBUG - -> LED DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/INSTRUMENT/SOURCE/type): DEBUG - DEBUG - documentation (NXsource.nxdl.xml:/type): -DEBUG - type of radiation source (pick one from the enumerated list and spell exactly) +DEBUG - + Type of radiation source (pick one from the enumerated list and spell exactly) + DEBUG - ===== FIELD (//entry/instrument/spatial_resolution): DEBUG - value: 500 -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - NOT IN SCHEMA +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_FLOAT'] +DEBUG - classes: +NXinstrument.nxdl.xml:/spatial_resolution +DEBUG - <> +DEBUG - documentation (NXinstrument.nxdl.xml:/spatial_resolution): DEBUG - + Spatial resolution of the experiment (Airy disk radius) + DEBUG - ===== ATTRS (//entry/instrument/spatial_resolution@units) DEBUG - value: um -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - NOT IN SCHEMA -DEBUG - +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_FLOAT'] +DEBUG - classes: +NXinstrument.nxdl.xml:/spatial_resolution +DEBUG - @units [NX_LENGTH] DEBUG - ===== FIELD (//entry/instrument/temporal_resolution): DEBUG - value: 100 -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - NOT IN SCHEMA +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_FLOAT'] +DEBUG - classes: +NXinstrument.nxdl.xml:/temporal_resolution +DEBUG - <> +DEBUG - documentation (NXinstrument.nxdl.xml:/temporal_resolution): DEBUG - + Temporal resolution of the experiment (FWHM) + DEBUG - ===== ATTRS (//entry/instrument/temporal_resolution@units) DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - NOT IN SCHEMA -DEBUG - +DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_FLOAT'] +DEBUG - classes: +NXinstrument.nxdl.xml:/temporal_resolution +DEBUG - @units [NX_TIME] DEBUG - ===== FIELD (//entry/run_cycle): DEBUG - value: b'2018 User Run Block 2' DEBUG - classpath: ['NXentry', 'NX_CHAR'] @@ -1615,7 +1695,9 @@ DEBUG - classes: NXentry.nxdl.xml:/run_cycle DEBUG - <> DEBUG - documentation (NXentry.nxdl.xml:/run_cycle): -DEBUG - Such as "2007-3". Some user facilities organize their beam time into run cycles. +DEBUG - + Such as '2007-3'. Some user facilities organize their beam time into run cycles. + DEBUG - ===== GROUP (//entry/sample [NXarpes::/NXentry/NXsample]): DEBUG - classpath: ['NXentry', 'NXsample'] DEBUG - classes: @@ -1629,12 +1711,12 @@ 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. - + 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'] @@ -1651,7 +1733,9 @@ DEBUG - classes: NXsample.nxdl.xml:/chem_id_cas DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/chem_id_cas): -DEBUG - CAS registry number of the sample chemical content. +DEBUG - + CAS registry number of the sample chemical content. + DEBUG - ===== FIELD (//entry/sample/chemical_name): DEBUG - value: b'Tungsten diselenide' DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] @@ -1662,7 +1746,9 @@ DEBUG - <> DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/SAMPLE/name): DEBUG - Descriptive name of sample DEBUG - documentation (NXsample.nxdl.xml:/name): -DEBUG - Descriptive name of sample +DEBUG - + Descriptive name of sample + DEBUG - ===== FIELD (//entry/sample/growth_method): DEBUG - value: b'Chemical Vapor Deposition' DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] @@ -1670,7 +1756,10 @@ DEBUG - classes: NXsample.nxdl.xml:/growth_method DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/growth_method): -DEBUG - Sample growth method (e. g. molecular beam epitaxy, chemical vapor deposition etc.) +DEBUG - + Sample growth method (e. g. molecular beam epitaxy, chemical vapor deposition + etc.) + DEBUG - ===== FIELD (//entry/sample/layer): DEBUG - value: b'bulk' DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] @@ -1678,7 +1767,9 @@ DEBUG - classes: NXsample.nxdl.xml:/layer DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/layer): -DEBUG - Number of layers of the sample (e.g. bulk, monolayer, pentalayer, etc.) +DEBUG - + Number of layers of the sample (e.g. bulk, monolayer, pentalayer, etc.) + DEBUG - ===== FIELD (//entry/sample/name): DEBUG - value: b'WSe2' DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] @@ -1689,7 +1780,9 @@ DEBUG - <> DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/SAMPLE/name): DEBUG - Descriptive name of sample DEBUG - documentation (NXsample.nxdl.xml:/name): -DEBUG - Descriptive name of sample +DEBUG - + Descriptive name of sample + DEBUG - ===== FIELD (//entry/sample/preparation_method): DEBUG - value: b'in-vacuum cleave' DEBUG - classpath: ['NXentry', 'NXsample'] @@ -1702,7 +1795,9 @@ DEBUG - classes: NXsample.nxdl.xml:/pressure DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/pressure): -DEBUG - Applied pressure +DEBUG - + Applied pressure + DEBUG - ===== ATTRS (//entry/sample/pressure@units) DEBUG - value: mbar DEBUG - classpath: ['NXentry', 'NXsample', 'NX_FLOAT'] @@ -1716,7 +1811,9 @@ DEBUG - classes: NXsample.nxdl.xml:/purity DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/purity): -DEBUG - Chemical purity of the sample +DEBUG - + Chemical purity of the sample + DEBUG - ===== FIELD (//entry/sample/state): DEBUG - value: b'monocrystalline solid' DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] @@ -1724,7 +1821,9 @@ DEBUG - classes: NXsample.nxdl.xml:/state DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/state): -DEBUG - Physical state of the sample +DEBUG - + Physical state of the sample + DEBUG - ===== FIELD (//entry/sample/surface_orientation): DEBUG - value: b'0001' DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] @@ -1732,7 +1831,9 @@ DEBUG - classes: NXsample.nxdl.xml:/orientation DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/orientation): -DEBUG - Surface termination of the sample (if crystalline) +DEBUG - + Surface termination of the sample (if crystalline) + DEBUG - ===== FIELD (//entry/sample/thickness): DEBUG - value: 0.5 DEBUG - classpath: ['NXentry', 'NXsample', 'NX_FLOAT'] @@ -1740,7 +1841,9 @@ DEBUG - classes: NXsample.nxdl.xml:/thickness DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/thickness): -DEBUG - sample thickness +DEBUG - + sample thickness + DEBUG - ===== ATTRS (//entry/sample/thickness@units) DEBUG - value: mm DEBUG - classpath: ['NXentry', 'NXsample', 'NX_FLOAT'] @@ -1754,7 +1857,9 @@ DEBUG - classes: NXsample.nxdl.xml:/vendor DEBUG - <> DEBUG - documentation (NXsample.nxdl.xml:/vendor): -DEBUG - Name of the sample vendor (company or research group) +DEBUG - + Name of the sample vendor (company or research group) + DEBUG - ===== FIELD (//entry/start_time): DEBUG - value: b'2018-05-01T07:22:00+02:00' DEBUG - classpath: ['NXentry', 'NX_DATE_TIME'] @@ -1765,7 +1870,9 @@ DEBUG - <> DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/start_time): DEBUG - DEBUG - documentation (NXentry.nxdl.xml:/start_time): -DEBUG - Starting time of measurement +DEBUG - + Starting time of measurement + DEBUG - ===== FIELD (//entry/title): DEBUG - value: b'Excited-state dynamics of WSe2 in the Valence Band and Core-Levels' DEBUG - classpath: ['NXentry', 'NX_CHAR'] @@ -1776,7 +1883,9 @@ DEBUG - <> DEBUG - documentation (NXarpes.nxdl.xml:/ENTRY/title): DEBUG - DEBUG - documentation (NXentry.nxdl.xml:/title): -DEBUG - Extended title for entry +DEBUG - + Extended title for entry + DEBUG - ======================== DEBUG - === Default Plotable === DEBUG - ======================== diff --git a/tests/data/tools/dataconverter/readers/ellips/test.yaml b/tests/data/tools/dataconverter/readers/ellips/test.yaml index 7d007f8e9..16e77952e 100644 --- a/tests/data/tools/dataconverter/readers/ellips/test.yaml +++ b/tests/data/tools/dataconverter/readers/ellips/test.yaml @@ -1,4 +1,3 @@ -#filename: 2020-09-11-InS-2020-07-06-D5.dat #filename: tests/data/tools/dataconverter/readers/ellips/test-data.dat filename: test-data.dat skip: 3 @@ -33,13 +32,13 @@ definition: NXellipsometry definition/\@version: 0.0.2 definition/\@url: https://github.com/FAIRmat-Experimental/nexus_definitions/tree/fairmat-ellips/contributed_definitions -experiment_description: RC2 scan on 2nm SiO2 on Si in air experiment_identifier: exp-ID +experiment_description: RC2 scan on 2nm SiO2 on Si in air start_time: "2022-01-27T12:05:35+00:00" -program: CompleteEASE -program/\@version: "6.37" -program/\@url: https://www.jawoollam.com/ellipsometry-software/completeease +acquisition_program/program: CompleteEASE +acquisition_program/version: "6.37" +acquisition_program/\@url: https://www.jawoollam.com/ellipsometry-software/completeease name: Name Surname affiliation: HU Berlin @@ -50,38 +49,43 @@ email: name@hu-berlin.de model: RC2 model/\@version: 0.0.1 company: J.A. Woollam Co. -software: WVASE -software/\@version: 3.882 -software/\@url: https://www.jawoollam.com/ellipsometry-software/wvase +firmware: WVASE +firmware/\@version: 3.882 +firmware/\@url: https://www.jawoollam.com/ellipsometry-software/wvase light_source: arc lamp -light_source/target_material: Xe +#light_source/target_material: Xe focussing_probes: false angular_spread: 0.2 angular_spread/@units: sr ellipsometry_type: dual compensator calibration_status: no calibration +stage_type: manual stage +detector_type: CCD spectrometer count_time: 1 count_time/\@units: s -stage: manual stage -detector_type: CCD spectrometer integration_time: 0 integration_time/\@units: s -rotating_element: analyzer # TAKE care: if you use the yaml list syntax, you'll break the - # reader tests, check the reader code +rotating_element: compensator (source side) +# TAKE care: if you use the yaml list syntax, you'll break the +# reader tests, check the reader code # - compensator (source side) # - compensator (detector side) +# Should be both compensators, source and detector side. +# needs to be taken care of in the reader + # Angle of incidence and wavelength are read by the reader # and we just have to define the units here: angle_of_incidence/\@units: "degrees" wavelength/\@units: "angstrom" +# NXsample: atom_types: Si, O sample_name: 2nm SiO2 on Si -sample_history: Commercially bought sample +sample_history: Commercially purchased sample +layer_structure: 2nm SiO2 on Si data_identifier: 1 -data_type: psi / delta +data_type: psi/delta column_names: - psi - delta medium: air -layer_structure: 2nm SiO2 on Si diff --git a/tests/data/tools/dataconverter/readers/mpes/config_file.json b/tests/data/tools/dataconverter/readers/mpes/config_file.json index e562d2391..4d1f51df6 100755 --- a/tests/data/tools/dataconverter/readers/mpes/config_file.json +++ b/tests/data/tools/dataconverter/readers/mpes/config_file.json @@ -24,6 +24,8 @@ "/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", "/ENTRY[entry]/INSTRUMENT[instrument]/name/@short_name": "TR-ARPES @ FHI", + "/ENTRY[entry]/INSTRUMENT[instrument]/energy_resolution": 0.14, + "/ENTRY[entry]/INSTRUMENT[instrument]/energy_resolution/@units": "eV", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/momentum_resolution": "@attrs:metadata/instrument/analyzer/momentum_resolution", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/momentum_resolution/@units": "1/angstrom", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/description": "SPECS Metis 1000 Momentum Microscope", @@ -36,48 +38,48 @@ "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/projection": "@attrs:metadata/instrument/analyzer/projection", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/scheme": "Momentum Microscope", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/mode": "@attrs:metadata/instrument/analyzer/lens_mode", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_voltage": "@attrs:metadata/file/KTOF:Lens:Extr:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_voltage": "@attrs:metadata/file/KTOF:Lens:Extr:V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_voltage/@units": "V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_current": "@attrs:metadata/file/KTOF:Lens:Extr:I", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_current/@units": "A", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/working_distance": "@attrs:metadata/instrument/analyzer/working_distance", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/working_distance/@units": "mm", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_A]/name": "A", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_A]/voltage": "@attrs:metadata/file/KTOF:Lens:A:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_A]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_B]/name": "B", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_B]/voltage": "@attrs:metadata/file/KTOF:Lens:B:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_B]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_C]/name": "C", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_C]/voltage": "@attrs:metadata/file/KTOF:Lens:C:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_C]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_D]/name": "D", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_D]/voltage": "@attrs:metadata/file/KTOF:Lens:D:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_D]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_E]/name": "E", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_E]/voltage": "@attrs:metadata/file/KTOF:Lens:E:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_E]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_F]/name": "F", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_F]/voltage": "@attrs:metadata/file/KTOF:Lens:F:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_F]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_G]/name": "G", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_G]/voltage": "@attrs:metadata/file/KTOF:Lens:G:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_G]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_H]/name": "H", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_H]/voltage": "@attrs:metadata/file/KTOF:Lens:H:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_H]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_I]/name": "I", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_I]/voltage": "@attrs:metadata/file/KTOF:Lens:I:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_I]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_UCA]/name": "UCA", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_UCA]/voltage": "@attrs:metadata/file/KTOF:Lens:UCA:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_UCA]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_UFA]/name": "UFA", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_UFA]/voltage": "@attrs:metadata/file/KTOF:Lens:UFA:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_UFA]/voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_Foc]/name": "Foc", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_Foc]/voltage": "@attrs:metadata/file/KTOF:Lens:Foc:VSet", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS[lens_Foc]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_A]/name": "A", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_A]/voltage": "@attrs:metadata/file/KTOF:Lens:A:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_A]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_B]/name": "B", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_B]/voltage": "@attrs:metadata/file/KTOF:Lens:B:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_B]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_C]/name": "C", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_C]/voltage": "@attrs:metadata/file/KTOF:Lens:C:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_C]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_D]/name": "D", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_D]/voltage": "@attrs:metadata/file/KTOF:Lens:D:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_D]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_E]/name": "E", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_E]/voltage": "@attrs:metadata/file/KTOF:Lens:E:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_E]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_F]/name": "F", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_F]/voltage": "@attrs:metadata/file/KTOF:Lens:F:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_F]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_G]/name": "G", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_G]/voltage": "@attrs:metadata/file/KTOF:Lens:G:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_G]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_H]/name": "H", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_H]/voltage": "@attrs:metadata/file/KTOF:Lens:H:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_H]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_I]/name": "I", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_I]/voltage": "@attrs:metadata/file/KTOF:Lens:I:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_I]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_UCA]/name": "UCA", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_UCA]/voltage": "@attrs:metadata/file/KTOF:Lens:UCA:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_UCA]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_UFA]/name": "UFA", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_UFA]/voltage": "@attrs:metadata/file/KTOF:Lens:UFA:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_UFA]/voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_Foc]/name": "Foc", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_Foc]/voltage": "@attrs:metadata/file/KTOF:Lens:Foc:V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/LENS_EM[lens_Foc]/voltage/@units": "V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/field_aperture/shape": "circle", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/field_aperture/size": "@attrs:metadata/instrument/analyzer/fa_size", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/field_aperture/size/@units": "µm", @@ -87,7 +89,7 @@ "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/contrast_aperture/size/@units": "µm", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/energy_scan_mode": "fixed", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/pass_energy": "@attrs:metadata/file/KTOF:Lens:TOF:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/pass_energy": "@attrs:metadata/file/KTOF:Lens:TOF:V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/pass_energy/@units": "ev", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/scheme": "tof", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/tof_distance": 0.9, @@ -96,11 +98,11 @@ "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_type": "MCP", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_type": "DLD", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/sensor_pixels": [1800, 1800], - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_bias": "@attrs:metadata/file/KTOF:Lens:MCPfront:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_bias": "@attrs:metadata/file/KTOF:Lens:MCPfront:V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_bias/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_voltage": "@attrs:metadata/file/KTOF:Lens:MCPback:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_voltage": "@attrs:metadata/file/KTOF:Lens:MCPback:V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_voltage/@units": "V", - "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_voltage": "@attrs:metadata/file/KTOF:Lens:UDLD:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_voltage": "@attrs:metadata/file/KTOF:Lens:UDLD:V", "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_voltage/@units": "V", "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/name": "HHG @ TR-ARPES @ FHI", @@ -158,12 +160,12 @@ "/ENTRY[entry]/SAMPLE[sample]/chemical_formula": "@attrs:metadata/sample/chemical_formula", "/ENTRY[entry]/SAMPLE[sample]/description": "@attrs:metadata/sample/chemical_formula", "/ENTRY[entry]/SAMPLE[sample]/name": "@attrs:metadata/sample/chemical_formula", - "/ENTRY[entry]/SAMPLE[sample]/pressure": "@attrs:metadata/sample/pressure", - "/ENTRY[entry]/SAMPLE[sample]/pressure/@units": "mbar", + "/ENTRY[entry]/SAMPLE[sample]/gas_pressure": "@attrs:metadata/sample/pressure", + "/ENTRY[entry]/SAMPLE[sample]/gas_pressure/@units": "mbar", "/ENTRY[entry]/SAMPLE[sample]/situation": "vacuum", "/ENTRY[entry]/SAMPLE[sample]/temperature": "@attrs:metadata/sample/temperature", "/ENTRY[entry]/SAMPLE[sample]/temperature/@units": "K", - "/ENTRY[entry]/SAMPLE[sample]/bias": "@attrs:metadata/file/KTOF:Lens:Sample:VSet", + "/ENTRY[entry]/SAMPLE[sample]/bias": "@attrs:metadata/file/KTOF:Lens:Sample:V", "/ENTRY[entry]/SAMPLE[sample]/bias/@units": "V", "/ENTRY[entry]/PROCESS[process]/DISTORTION[distortion]/applied": true, @@ -176,16 +178,39 @@ "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/applied": true, "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/new_centre": "@attrs:metadata/momentum_correction/BZcenter", "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/rotation_centre": "@attrs:metadata/momentum_correction/adjust_params/center", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[x]": "@attrs:metadata/momentum_correction/adjust_params/x_trans", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[x]/@transformation_type": "translation", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[x]/@units": "pixels", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[x]/@vector": "@attrs:metadata/momentum_correction/adjust_params/x_vector", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[y]": "@attrs:metadata/momentum_correction/adjust_params/y_trans", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[y]/@units": "pixels", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[y]/@transformation_type": "translation", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[translation]/AXISNAME[y]/@vector": "@attrs:metadata/momentum_correction/adjust_params/y_vector", + + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[rotation]/AXISNAME[z]": "@attrs:metadata/momentum_correction/adjust_params/angle_radians", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[rotation]/AXISNAME[z]/@units": "radians", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[rotation]/AXISNAME[z]/@transformation_type": "rotation", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[rotation]/AXISNAME[z]/@offset": "@attrs:metadata/momentum_correction/adjust_params/offset", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[rotation]/AXISNAME[z]/@vector": "@attrs:metadata/momentum_correction/adjust_params/rotation_vector", + "/ENTRY[entry]/PROCESS[process]/REGISTRATION[registration]/TRANSFORMATIONS[rotation]/AXISNAME[z]/@depends_on": "y", "/ENTRY[entry]/PROCESS[process]/calculated_energy": "@data:energy.data", "/ENTRY[entry]/PROCESS[process]/calculated_energy/@units": "eV", "/ENTRY[entry]/PROCESS[process]/energy_calibration/applied": true, "/ENTRY[entry]/PROCESS[process]/energy_calibration/coefficients": "@attrs:metadata/energy_correction/calibration/coeffs", + "/ENTRY[entry]/PROCESS[process]/energy_calibration/fit_function": "Polynomial", "/ENTRY[entry]/PROCESS[process]/energy_calibration/offset": "@attrs:metadata/energy_correction/calibration/offset", + "/ENTRY[entry]/PROCESS[process]/energy_calibration/original_axis": "@attrs:metadata/energy_correction/tof", "/ENTRY[entry]/PROCESS[process]/energy_calibration/calibrated_axis": "@attrs:metadata/energy_correction/calibration/axis", - "/ENTRY[entry]/PROCESS[process]/CALIBRATION[momentum_calibration]/applied": true, - "/ENTRY[entry]/PROCESS[process]/CALIBRATION[momentum_calibration]/coefficients": "@attrs:metadata/momentum_correction/calibration/coeffs", + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[kx_calibration]/applied": true, + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[kx_calibration]/scaling": "@attrs:metadata/momentum_correction/calibration/scale_kx", + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[kx_calibration]/offset": "@attrs:metadata/momentum_correction/offset_kx", + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[kx_calibration]/calibrated_axis": "@attrs:metadata/momentum_correction/calibration/axis_kx", + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[ky_calibration]/applied": true, + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[ky_calibration]/scaling": "@attrs:metadata/momentum_correction/calibration/scale_ky", + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[ky_calibration]/offset": "@attrs:metadata/momentum_correction/offset_ky", + "/ENTRY[entry]/PROCESS[process]/CALIBRATION[ky_calibration]/calibrated_axis": "@attrs:metadata/momentum_correction/calibration/axis_ky", "/ENTRY[entry]/DATA[data]/@axes": "@data:dims", "/ENTRY[entry]/DATA[data]/AXISNAME_indices[@kx_indices]": "@data:kx.index", diff --git a/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 b/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 index fc43d7eb2..6980b88ca 100644 Binary files a/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 and b/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 differ diff --git a/tests/test_parser.py b/tests/test_parser.py index 0cab80ace..3a094fb7d 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -87,7 +87,7 @@ def test_get_node_at_nxdl_path(): nxdl_file_path = "nexusparser/definitions/contributed_definitions/NXellipsometry.nxdl.xml" elem = ET.parse(nxdl_file_path).getroot() node = nexus.get_node_at_nxdl_path("/ENTRY/derived_parameters", elem=elem) - assert node.attrib["type"] == "NXcollection" + assert node.attrib["type"] == "NXprocess" nxdl_file_path = "nexusparser/definitions/contributed_definitions/NXem_nion.nxdl.xml" elem = ET.parse(nxdl_file_path).getroot() @@ -139,10 +139,9 @@ def test_example(): nx_group_monochromator.nx_field_energy.nx_value == 36.49699020385742 assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].\ nx_group_monochromator.nx_field_energy.nx_name == 'energy' - # cannot store number 750 to a field expecting NX_CHAR assert archive.nexus.nx_application_arpes.\ nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_analyser.\ - nx_field_entrance_slit_size.nx_value is None + nx_field_entrance_slit_size.nx_value == 750 # good ENUM - x-ray assert archive.nexus.nx_application_arpes.\ nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_SOURCE[0].\ diff --git a/tests/tools/dataconverter/test_convert.py b/tests/tools/dataconverter/test_convert.py index 139160a66..46024cdb3 100644 --- a/tests/tools/dataconverter/test_convert.py +++ b/tests/tools/dataconverter/test_convert.py @@ -197,10 +197,11 @@ def test_mpes_writing(tmp_path): nexus_helper.process_nexus_master_file(None) with open(os.path.join(tmp_path, 'nexus_test.log'), 'r') as logfile: log = logfile.readlines() - assert len(log) == 3272 + assert len(log) == 4633 # parsing to NOMAD archive = EntryArchive() import structlog NexusParser().parse(example_data, archive, structlog.get_logger()) assert archive.nexus.nx_application_mpes.\ - nx_group_ENTRY[0].nx_group_PROCESS[0].nx_field_calculated_energy.nx_value[0] == -1.5 + nx_group_ENTRY[0].nx_group_PROCESS[0].nx_group_energy_calibration.\ + nx_field_calibrated_axis.nx_value[0] + 46.0315977 < 1e-6