Skip to content

Variable resolution fitting fixes from #425 p.3 - #437

Merged
rozyczko merged 3 commits into
developfrom
425-variable-res
Oct 12, 2026
Merged

rozyczko merged 3 commits into
developfrom
425-variable-res

Conversation

@rozyczko

Copy link
Copy Markdown
Member

Resolution handling improvements:

  • Bayesian sampling (MultiFitter.mcmc_sample) now uses each dataset's own resolution by default when built with for_experiments, and enforces that the number of curves matches the number of datasets when a DataGroup is provided. This ensures consistency between classical and Bayesian fits and prevents accidental mismatches.
  • The resolution function is now bound directly to the evaluator in posterior_predictive_reflectivity and related code, rather than being swapped on the model. This avoids thread-safety issues and ensures the correct resolution is always used without side effects.
  • The logic for associating curves and models in multi-dataset and polarized experiments has been clarified and enforced, both in code and docstrings.

Documentation updates:

  • Added a new user guide page, Resolution, detailing which resolution is used in models, datasets, fits, and polarized experiments, and how to combine datasets. This page is now linked in the navigation and referenced from relevant tutorials and guides.
  • Updated and clarified docstrings and user-facing documentation to reflect the new resolution handling, including usage examples and caveats.

@rozyczko rozyczko added [scope] enhancement Adds/improves features (major.MINOR.patch) [priority] high Should be prioritized soon enhancement labels Oct 12, 2026
@codecov

codecov Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.41%. Comparing base (94cf799) to head (85103ff).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop     #437      +/-   ##
===========================================
+ Coverage    95.39%   95.41%   +0.01%     
===========================================
  Files           59       59              
  Lines         7021     7042      +21     
===========================================
+ Hits          6698     6719      +21     
  Misses         323      323              
Flag Coverage Δ
integration 39.15% <29.54%> (+1.80%) ⬆️
unittests 95.41% <100.00%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/easyreflectometry/analysis/bayesian.py 97.07% <100.00%> (-0.02%) ⬇️
src/easyreflectometry/fitting.py 98.24% <100.00%> (+0.05%) ⬆️
src/easyreflectometry/project.py 95.04% <100.00%> (+0.03%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rozyczko
rozyczko merged commit a86554a into develop Oct 12, 2026
55 checks passed
@rozyczko
rozyczko deleted the 425-variable-res branch October 12, 2026 12:52
rozyczko added a commit that referenced this pull request Oct 19, 2026
* Refl1d fix (#302)

* assure refl1d actually runs from the GUI

* don't fail on codecov upload

* Improved limits for certain parameters (#304)

* initial implementation

* set `disable` status on relevant sub/super-phase parameters

* fixed tests

* fixes after CR

* fixed tests

* Mighell transform (#303)

* initial implementation of the mighell algorithm for data with zero variances

* don't fail on codecov upload

* fixed chi2 reporting, added MD file with description

* unit test update

* added docs about Mighell

* updated easyscience branch, deleted script

* chi -> chi2

* use develop for core

* version bump. dependency fix for release.

* modified release version

* updated docs

* include plopp as a doc dependency

* Preparations for the release (#350) (#351)

* backmerge after 1.6.0 release

* Apply templates (#353)

* initial commit up to and including `pixi run check` step

* fixes

* updates to pyproject.toml

* remade __init__.py

* minor fix

* a few more fixes

* Apply templates with docstrings fixes

* Add missing favicon and update SVG assets

* moved docs for mkdocs

* make "pixi run mkdocs build" and "pixi run nonpy-format-check" work
together

* try using absolute paths for the wheel

* minor fixes

* refactor md file headers for docs

* minor CR changes

* linting

* code review fixes

* CR fixes

* proper globbing

* remove __version__

---------

Co-authored-by: Andrew Sazonov <andrew.sazonov@icloud.com>

* prettify the summary (#356)

* refactor printout formatter (#358)

* make PDF links clickable (#359)

* Move to EasyList (#360)

* initial commit

* PR review

* more tests

* Bayesian analysis (#352)

* initial commit with examples

* ruff format

* refactor core modifications to live in reflectometry lib only

* modified the notebook a bit

* refactored MCMC sampling to easyscience module

* added pass-through for cancellation and total number of calculations

* silly typo

* yet another linting

* moved the notebook to the correct location and fixed the formatting

* added more initial arguments to sample. Added unit tests

* prettify charts. Updated notebook

* fixed issue with the notebook

* move file fetch to reflectometry/data

* PR review fixes

* be careful with small chains

* ruff

* try to use explicit dtype for Ubuntu

* another attempt at fixing failing test

* better corner and distribution plots

* updates to the Bayesian API after changes to core

* use bayesian_extend

* minor fixes

* fix failing test

* test against develop, so we can merge the PR

* use mcmc_sample

* fixed tests

* minor notebook fix

* HTML Summary now shows plots with plotly (#363)

* Pointwise update (#362)

* initial commit with examples

* ruff format

* refactor core modifications to live in reflectometry lib only

* modified the notebook a bit

* refactored MCMC sampling to easyscience module

* added pass-through for cancellation and total number of calculations

* silly typo

* yet another linting

* moved the notebook to the correct location and fixed the formatting

* added more initial arguments to sample. Added unit tests

* prettify charts. Updated notebook

* fixed issue with the notebook

* move file fetch to reflectometry/data

* PR review fixes

* be careful with small chains

* ruff

* try to use explicit dtype for Ubuntu

* another attempt at fixing failing test

* better corner and distribution plots

* updated poitwise logic/notebook

* 381 apitest hygiene (#384)

* addressing #381

* minor docstring update

* fixes for summary printout #375 (#385)

* Core fixes (#383)

* moved to Sampler class from Core

* reparent branch

* fixed issue #367 (#382)

* fixed issue #367

* disable automatic parallelization for windows

* Changes after code review

* added test

* arviz fix

* try to fix prettier issues

* updated notebook

* linting

* fixing #370 (#388)

* reparent to develop

* Core fixes pointwise (#387)

* fixed pointwise treatment on file load

* more tests

* reparented easyscience, updated CHANGELOG

* codecov related fixes (#391)

* Codecov fixes 2 (#392)

* try to fix failing test

* another attempt

* Polarized channels (#393)

* initial version

* added magnetic SLD profile

* added magnetic parameters

* code review comments addressed

* code review fixes for Phase 2, added notebook

* PR code review comments

* fixed polarized file load issue

* enable magnetic layers

* new LayerMagnetism component

* ruff

* ruff on notebooks

* bind calculator to model for performance

* attempt at fixing package testing

* package tests only on master

* don't run ruff twice

* code review fixes

* added polarized fitting example/notebook

* fixed default sample generation

* improved wording in the magnetic fitting notebook

* move the most expensive test to integration

* dont show 0.0 for parameter errors where no fitting was done (#397)

* removed vestiges of BA (#394)

* Improved constraints + doc migration (#400)

* initial version

* added magnetic SLD profile

* added magnetic parameters

* ruff

* code review comments addressed

* code review fixes for Phase 2, added notebook

* ruff

* PR code review comments

* fixed polarized file load issue

* enable magnetic layers

* new LayerMagnetism component

* ruff

* ruff on notebooks

* bind calculator to model for performance

* attempt at fixing package testing

* package tests only on master

* don't run ruff twice

* code review fixes

* added polarized fitting example/notebook

* fixed default sample generation

* improved wording in the magnetic fitting notebook

* move the most expensive test to integration

* Improved constraints (#395)

* improved handling of constraints

* ruff

* wording

* additional cell in a notebook to showcase the new way of doing
constraints

* fixed notebook

* initial checkin

* .bounds -> min, max

* updates so the code is self-contained and doesn't depend on changes to
core

* Code review comments addressed

* Updated docs (#398)

* move everything to MKDocs
minor updates/fixes after code review

* ruff fix for notebook

* Fix broken conflict resolutions from develop merge

The merge of develop (2042778) left two files with damaged conflict
resolutions: magnetism.ipynb gained a corrupt hybrid cell (invalid
notebook JSON, duplicate cell id) and project.py gained a duplicated
copy of the spin-asymmetry method block with an orphaned method body.
Both files are restored to the branch-side version, which already
contained everything develop had for them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* code review issues addressed

* removed explicit EasyCore constraints factory reliance

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* Orso improvements (#402)

* initial commit

* code review fixes

* more unit tests for orso functionality

* Enable SLD dependence on material data (#403)

* enable SLD dependence on material data

* extending methods for use in ERA

* code review issues addressed

* ruff

* make molecular weight a descriptor

* Improvements to the state tracking #401 (#405)

* Improvements to the state tracking #401

* PR issues addressed

* minor ruff NOQA

* reparent to develop of core and fixed the functionality

* minor material editor fix (#408)

* fix default elements (#410)

* 378 remove datastore (#409)

* Removed DataStore

* ruff on CHANGELOG

* ruff

* Added exception when file exists and overwrite=false (#411)

* fix the multi-column load #376 (#413)

* fix the multi-column load #376

* preparations for the release

* pixi update

* updated EasyScience dep

* pre-release doc fixes

* correct units for scattering lengths #377 (#419)

* correct units for scattering lengths #377

* improved help and tests

* reparent example files properly (#420)

* minor fixes required for the updated GUI (#422)

* minor fixes required for the updated GUI

* PR review fixes #1

* PR review fixes

* 281 volume fraction (#421)

* Added volume fraction profile calculation and display. #281

* fixed CHANGELOG

* variable resolution fitting (#424)

* variable resolution fitting, initial commit

* PR review fixes

* 426 fix wrong curve (#428)

* fixed unique_name reuse for uncollected models #426

* added missing test

* added fit configuration owner #427 (#429)

* added fit configuration owner #427

* PR review fixes

* 425 multiple contrasts (#432)

* Multiple contrasts implementation improved. #425 issue #2

* PR review fixes

* another round of reviews

* added docs and notebook for multiple contrasts

* added multiple contrast docs and notebook

* fixed docs

* added a convergence integration test. (#436)

* Variable resolution fitting fixes from #425 p.3 (#437)

* Variable resolution fitting fixes from #425 p.3

* code review fixes

* updated README.md (#438)

* updated README.md

* slight modifications of README

* implemented fixes to the magnetism feature. #425, point 3. (#439)

* implemented fixes to the magnetism feature. #425, point 3.

* code review fixes

* update versioning

---------

Co-authored-by: Piotr Rozyczko <piotr.rozyczko@gmail.com>
Co-authored-by: Andrew Sazonov <andrew.sazonov@icloud.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement [priority] high Should be prioritized soon [scope] enhancement Adds/improves features (major.MINOR.patch)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant