Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MPES: new concepts from NIAC discussions, searchable fields #329

Open
wants to merge 48 commits into
base: fairmat
Choose a base branch
from

Conversation

lukaspie
Copy link
Collaborator

@lukaspie lukaspie commented Feb 6, 2025

  • Explicitly name the following axes in NXmpes/NXentry/data(NXdata):

    • energy
    • photon energy
    • kx, ky, kz
    • k_parallel, k_perpendicular
    • angular0, angular1
    • spatial0,spatial1
    • delay
    • temperature
  • Explicitly name the following axes in NXmpes/NXinstrument/NXelectronanalyser/NXdetector/raw_data(NXdata):

    • pixel_x, pixel_y
    • photon energy
    • kx, ky, kz
    • k_parallel, k_perpendicular
    • angular0, angular1
    • spatial0,spatial1
    • delay
    • temperature
  • NXprocess and subclasses are stored directly under Nxmpes/NXentry

    • AXIS_axis_calibration for general calibration on all axes that are defined in NXdata
    • Brought in special calibrations from existing base class NXprocess_mpes
  • As a consequence, remove base classes NXdata_mpes , NXdata_mpes_detector, and NXprocess_mpes

  • Allow for multiple beams and sources

    • beam_probe/source_probe
    • beam_pump/source_probe
    • beamTYPE/sourceTYPE -> I still think this is valuable, see the description in its docs
  • change all instances of NXidentifier to fields inheriting from identifierNAME

  • remove NXsubstance, use existing concepts in NXsample for now

    • use NXsample/chemical_formula
  • add field core_levels under ENTRY

    • list like NXdata/@axes
    • suggested enumeration of all possible core levels
  • make all NXtransformations/@vector attributes NX_NUMBER

  • add explicit open enumeration for function_type for the peak and background in NXxps/NXfit

Open questions:

  • Do we need k_parallel, k_perpendicular?
  • Is AXIS_axis_calibration good enough or do we need individual named calibrations for each axis?
  • Can we improve core_level description?

Copy link
Collaborator

@rettigl rettigl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_indices are INT

@rettigl
Copy link
Collaborator

rettigl commented Feb 27, 2025

There are also still NXidentifiers in the base classes, e.g. NXcalibration

@rettigl
Copy link
Collaborator

rettigl commented Feb 27, 2025

I fixed some of these spellings in the yaml files, the xmls need to be generated.

@lukaspie
Copy link
Collaborator Author

There are also still NXidentifiers in the base classes, e.g. NXcalibration

This will come with #332 (merging back from NIAC main and removing classes that were not accepted). I will rebase this branch here afterwards.

@lukaspie
Copy link
Collaborator Author

@rettigl do we still need this comment?
image

@rettigl
Copy link
Collaborator

rettigl commented Feb 28, 2025

@rettigl do we still need this comment?

Don't think so.

@lukaspie
Copy link
Collaborator Author

I remember you saying NXcoordinate_system_set should be renamed or replaced?

Correct, we will just not use it anymore (similar to having no grouping for Nxprocess). The coordinate systems are now directly under NXentry.

@lukaspie
Copy link
Collaborator Author

Is there a convention regarding the use of en-US vs. en-GB in Nexus? Our definitions are somewhat inconsistent here, e.g. "NXelectronanalyser" vs. "analyzer" at several places in the docstrings. I would suggest fixing this to one convention. Another example is "oxidising" vs. oxidizing.

There is not really an official guideline. Most of the documentation uses American English, but there are some other cases as well. Maybe @sanbrock has an idea?

@lukaspie lukaspie marked this pull request as ready for review February 28, 2025 17:23
@lukaspie
Copy link
Collaborator Author

lukaspie commented Mar 5, 2025

Is there a convention regarding the use of en-US vs. en-GB in Nexus? Our definitions are somewhat inconsistent here, e.g. "NXelectronanalyser" vs. "analyzer" at several places in the docstrings. I would suggest fixing this to one convention. Another example is "oxidising" vs. oxidizing.

I went through the existing definitions in the NIAC repo, it seems like in almost all cases, the en-US version is used (e.g. optimization, minimization, etc.). It also makse sense since most NIAC members have been from the US and only a few of them from the UK.

If you agree, I would change all of our definiitions to be en-US, as well.

@rettigl
Copy link
Collaborator

rettigl commented Mar 5, 2025

If you agree, I would change all of our definiitions to be en-US, as well.

Yes, please.

@lukaspie
Copy link
Collaborator Author

lukaspie commented Mar 5, 2025

If you agree, I would change all of our definiitions to be en-US, as well.

Yes, please.

Done, see the last two commits. Main difference was analyser -> analyzer. Our tools will have to adjust to that as well.

As an addition, I also removed language like "NXenergydispersion is a sublass of NXelectronanalyzer", since it is not actually a subclass (in the inheritance sense), it is just used within.

If you don't have anything else to change @rettigl, I would merge here and bring the NIAC PR uptodate as well.

<dimensions rank="dimRank"/>
<dimensions rank="dimRank">
<doc>
The ``input_dependent`` field must have the same rank (``dimRank``)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rettigl this was apparently lost at some point, but I readded it here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants