Skip to content

Restore determinism in beersheba tests - #977

Open
gonzaponte wants to merge 3 commits into
next-exp:masterfrom
gonzaponte:deterministic-b7-tests
Open

gonzaponte wants to merge 3 commits into
next-exp:masterfrom
gonzaponte:deterministic-b7-tests

Conversation

@gonzaponte

Copy link
Copy Markdown
Collaborator

This PR addresses instabilities in the RL algorithm caused by roundoff errors. At the same time, it fixes a silent issue by which the "joint" mode of beersheba was not being exercised. After fixing this issue, the exact_result tests are no longer flaky.

Closes #975.

The separate-mode fixture updated `deconv_params` on the shared
`beersheba_config` dictionary. Pytest reuses a fixture's returned object
within a test, so requesting both fixtures could leave the base
configuration set to separate mode as well.

A deep copy of the base configuration before changing to separate mode
prevents this issue. Tests can now use independent configurations for
joint and separate deconvolution, so each variant exercises the mode it
intends to check.
FFT convolution can produce tiny negative or near-zero values through
floating-point roundoff. Replacing only exact zeros (as we have been
doing so far) with machine epsilon leaves those values in place;
dividing the image by them can greatly amplify numerical noise during
the Richardson–Lucy update.

Clamping the convolved estimate to at least machine epsilon before
calculating the relative blur keeps the denominator positive and
prevents small roundoff differences from causing large changes in the
reconstruction.
@gonzaponte
gonzaponte requested a review from jwaiton October 3, 2026 15:16
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.

Beersheba tests are not deterministic

1 participant