Skip to content

Conversation

@lukaspie
Copy link
Contributor

@lukaspie lukaspie commented Sep 24, 2024

The aim of this PR is to add a more detailed description of optical spectroscopy experiments, with a specific focus on Raman spectroscopy and ellipsometry.

The starting point are the NXellipsometry and NXopt application definitions that have been in the contributed definitions for > 1.5 years now. NXellipsometry was a specialization of NXopt, which from the start was intended to extend possibly in the future several other optical spectroscopy methods, such as photoluminescence, transmission or reflection spectroscopy, as there are various commonalities between those techniques.

Now, NXopt has been renamed to NXoptical_spectroscopy and has been enhanced quite a bit to be more inclusive for all kinds of optical spectroscopy experiments. NXellipsometry is now inheriting from NXoptical_spectroscopy. In addition, NXraman was added, which is also a specialization of NXoptical_spectroscopy and meant to describe Raman spectroscopy data.

Summary of changes to NXoptical_spectroscopy (previously NXopt):

  • Adding of various default experimental metadata (start_time, end_time, experiment_identifier, experiment_description, experiment_type, experiment_sub_type)
  • Removal of restriction of via "symbols" /NX_measurement, NX_spectrum)
  • Adding the possibility to define coordinate frames via NXcoordinate_system(_set). Will enable description of sample, laboratory, beam, sample stage reference frames and more. This is based on Fairmat 2024: use NXcoordinate_system together with NXtransformations #1415.
  • instrument description (in NXoptical_spectroscopy/NXinstrument):
    • device_information(NXfabrication), software_TYPE(NXprogram)
    • angle_reference_frame - to describe either beam or sample-centered reference frames
    • Description of device calibration
    • Specialization of NXbeam, with respect to used terms and properties within optical spectroscopy setups
    • Angles of incidence and detection, as generic description of setup geometry
  • Some changes for NXsample in NXoptical_spectroscopy, to be more in line with the NXsample base class. Also a sample history and sample environment and other sample metadata
  • A method to describe the calibration of measurement data
  • Also adding a sample stage, sensors and actuators to describe a variety of different experiment types

To describe optical spectroscopy experiments, several base classes are used (these are either completely new or have been in contributed before:

  • NXlens_opt: description of a lens or objective in an optical setup
  • NXwaveplate: half or quater wave plate
  • generic polariation and spectral filters, NXoptical_window
  • A rework of "NXbeam_path" - This is now extended significantly and generalized enough to be used for other techniques. This was done by including:
    • NXbeam_device:
      • This concept is connected to a specific device of the setup (Lens, Filter, Mirror, Sample, Source, Detector, etc.) via @device. The field previous_device clearly defines a list of (possibly multiple) devices, from which a photon beam came, as it arrived at @device.
      • In this way, a directed graph can be created, if this characteristic is defined for all elements of the optical spectroscopy setup. Given all detectors as "end-points" of the photon beam, the directed graph can be tracked backwards to identify all possible beam paths. This is especially of relevance if beam splitters are present - or especially in a Mach-Zender interferometer.
      • This way, the optical spectroscopy setup can be visualized (especially via spatial coordinates via NXtransformations).
    • Via NXbeam_transfer_matrix_table, properties of the beam along all beam paths can be calculated. NXbeam_transfer_matrix_table defines specific concepts and a large matrix with submatricies, for the respective models to describe the parameters of interest.

Due to the large extensions and changes in NXoptical_spectroscopy, the respective NXraman definition is quite short. It contains some general experiment metadata and a description of the scattering configuration.

atomprobe-tc and others added 30 commits July 12, 2024 14:07
* Add depends for data field

* Use `@reference`

* use reference attribute in NXmpes and NXmpes_arpes

* change text style

* fix duplicated in reference attribute

---------

Co-authored-by: Lukas Pielsticker <50139597+lukaspie@users.noreply.github.com>
Roll back changes to NXmpes/instrument/pressure_gauge
fix 2theta and use NXobject instead of collection.
* Including scattering vector components perpendicular and parallel to the surface of the sample those are mainly used for RSM diffraction technique.

---------

Co-authored-by: Florian Dobener <florian.dobener@physik.hu-berlin.de>
…cision of concept image and how this is connected to tilings
@lukaspie
Copy link
Contributor Author

lukaspie commented May 5, 2025

NXprogram has empty symbols section

Thanks, I removed it

@lukaspie
Copy link
Contributor Author

lukaspie commented May 5, 2025

I think this needs a little further work with some consideration for

  1. minor types and other corrections
  2. NXentry in NXoptical_window
  3. inclusion of dispersion material and formula grammar in the RST document

As discussed in the Telco, 1. and 2. were addressed here. The changes to the RST document were reverted and will instead come with #1428

@lukaspie
Copy link
Contributor Author

lukaspie commented Jun 2, 2025

@PeterC-DLS is there anything blocking us from merging this PR? As far as I can tell, all comments have been addressed and CI/CD is passing.

@mkuehbach
Copy link
Contributor

mkuehbach commented Jun 8, 2025

Some more community feedback FAIRmat-NFDI#390 on how to better structure instances of NXsource

@lukaspie
Copy link
Contributor Author

@PeterC-DLS is there anything blocking us from merging this PR? As far as I can tell, all comments have been addressed and CI/CD is passing.

@PeterC-DLS just wanted to remind you of this comment. I would like to merge this PR if possible.

There is one more comment from @mkuehbach about NXsource, but I believe this should be addressed at some later point (not covered by the vote here). Thanks!

@mkuehbach
Copy link
Contributor

mkuehbach commented Jul 14, 2025

@PeterC-DLS, unresolved conversations are a blocker for this PR. I went through all of these and checked for all if the edits on the classes and appdefs addressed the comments. In those cases where they clearly did, i.e. suggestions for reformulations, fixing of typos, and opening of enums, I resolved. A few comments remain that should be addressed on the next telco @phyy-nx so that we can update this branch with the latest state of main and merge. There was a suggestion for less than a handful of individual fixes that should be addressed with a small follow-up proposal, one that will be substantially shorter than this PR.

Copy link
Contributor

@mkuehbach mkuehbach left a comment

Choose a reason for hiding this comment

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

lgtm

@lukaspie
Copy link
Contributor Author

Thanks @PeterC-DLS @phyy-nx @mkuehbach! Merging now.

@lukaspie lukaspie merged commit 023c5f0 into nexusformat:main Jul 16, 2025
2 checks passed
@lukaspie lukaspie deleted the fairmat-2024-optical_spectroscopy branch July 16, 2025 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NXoptical_spectroscopy