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

SANS TOML V2: Polarization Options Added to User Files #38940

Open
wants to merge 16 commits into
base: main
Choose a base branch
from

Conversation

cailafinn
Copy link
Contributor

Description of work

Summary of work

Allows specification of the polarisation options used in the experiment to be provided to the reduction via the user file (a file written in SANS' custom TOML format, usually one per experiment).

Fixes #38524

Further detail of work

  • Created StatePolarization. An JSON-serialisable object that holds the polarisation information to be passed around as part of SANSState to algorithms and interfaces.

  • Refactored the TOML parser into a base and sub-classes to support...

  • Implemented SANS TOML V2 parser and schema. Upgrading to V2 means that files with the new information won't be supported by previous versions of Mantid. This is intentional. All V1 files continue to be backwards compatible, all V2 files will warn that the version is unsupported, forcing a version of Mantid to be used that can support the new polarisation options.

  • Refactored some tests to remove duplication caused by the additional parser.

  • Note: If required, this could be 2 PRs. The first implementing the State object and the second implementing the parsing.

To test:

  1. Download this new user file, modified from the loqdemo in the training course data (you'll need that too): MaskFile_polarization.toml.zip
  2. Open a nightly and open Interfaces -> SANS -> ISIS SANS
  3. Attempt to select the downloaded file as the user file. It should throw.
  4. Open the workbench build of this PR.
  5. Repeat, it should load successfully.
  6. Load the batch from the loqdemo
  7. Process All
  8. Find the output workspaces on the main mantid window and open the workspace history
  9. Find the SANSState object
  10. Copy it to clipboard, and paste it into a nice editor (I like VS code for this)
  11. It'll paste in one giant line, reformat the file (install a JSON extension if necessary)
  12. Check that the new polarisation information from the downloaded file is present in the JSON.

Reviewer

Please comment on the points listed below (full description).
Your comments will be used as part of the gatekeeper process, so please comment clearly on what you have checked during your review. If changes are made to the PR during the review process then your final comment will be the most important for gatekeepers. In this comment you should make it clear why any earlier review is still valid, or confirm that all requested changes have been addressed.

Code Review

  • Is the code of an acceptable quality?
  • Does the code conform to the coding standards?
  • Are the unit tests small and test the class in isolation?
  • If there is GUI work does it follow the GUI standards?
  • If there are changes in the release notes then do they describe the changes appropriately?
  • Do the release notes conform to the release notes guide?

Functional Tests

  • Do changes function as described? Add comments below that describe the tests performed?
  • Do the changes handle unexpected situations, e.g. bad input?
  • Has the relevant (user and developer) documentation been added/updated?

Does everything look good? Mark the review as Approve. A member of @mantidproject/gatekeepers will take care of it.

Gatekeeper

If you need to request changes to a PR then please add a comment and set the review status to "Request changes". This will stop the PR from showing up in the list for other gatekeepers.

@cailafinn cailafinn added SANS Issues and pull requests related to SANS ISIS Team: LSS Issue and pull requests managed by the LSS subteam at ISIS labels Feb 20, 2025
@cailafinn cailafinn added this to the Release 6.13 milestone Feb 20, 2025
Covers both the electric and magnetic field inputs.

RE mantidproject#38524
The old txt format won't be able to edit the values like the toml
parser, but it will return a blank state so that the behaviour of the
two parsers is identical.

RE mantidproject#38524
Given that the new things we're adding to the user file aren't
compatible with older versions of mantid, we're bumping up to TOML V2 so
that we can keep being backwards compatible. This is mainly to stop new
user files containing this information from being loaded by older
versions, making it clear that you need to upgrade to use these new
features and toml files.

RE mantidproject#38524
@cailafinn cailafinn force-pushed the 38524_sans_polarisation_user_file_parsing branch from 0063f34 to 4d62ded Compare February 20, 2025 19:14
@cailafinn cailafinn assigned cailafinn and MialLewis and unassigned cailafinn Feb 21, 2025
@cailafinn cailafinn marked this pull request as ready for review February 21, 2025 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ISIS Team: LSS Issue and pull requests managed by the LSS subteam at ISIS SANS Issues and pull requests related to SANS
Projects
Status: Review
Status: In Developer Review
Development

Successfully merging this pull request may close these issues.

Polarized SANS metadata: add user file definition and ability to parse inputs
2 participants