Commit 48fae1a
fix: test-mode-gate singular/non-PD inversion crash
Return a benign dummy from the inversion reconstruction/log-det sites when
PYAUTO_TEST_MODE is active, instead of raising on a singular/non-PD
curvature-regularization matrix. In test mode the fitted model is fabricated /
under-converged and the inversion output is discarded, so an unguarded
test-mode path (search chaining, preloads, result construction) should not
crash — while the real likelihood path already resamples such solutions via
FitException.
Normal operation is byte-for-byte unchanged: the four sites re-raise exactly as
before (LinAlgError / InversionException), so real-mode numerics and the search
resample behaviour are untouched. numpy-only: the JAX linalg path returns NaN
rather than raising.
Sites gated on autoconf.is_test_mode():
- inversion_util.reconstruction_positive_negative_from (xp.linalg.solve)
- inversion_util.reconstruction_positive_only_from (fnnls except)
- abstract.log_det_curvature_reg_matrix_term (cholesky)
- abstract.log_det_regularization_matrix_term (cholesky)
Fixes the flaky release-tail FAILs slam.py / cpu_fast_modeling.py
(PyAutoArray#388; follow-up to PyAutoHeart#72, PyAutoLens#607).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 59a7802 commit 48fae1a
3 files changed
Lines changed: 101 additions & 12 deletions
File tree
- autoarray/inversion/inversion
- test_autoarray/inversion/inversion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
712 | 712 | | |
713 | 713 | | |
714 | 714 | | |
715 | | - | |
716 | | - | |
717 | | - | |
718 | | - | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
719 | 721 | | |
720 | 722 | | |
721 | | - | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
722 | 732 | | |
723 | 733 | | |
724 | 734 | | |
| |||
737 | 747 | | |
738 | 748 | | |
739 | 749 | | |
740 | | - | |
741 | | - | |
742 | | - | |
743 | | - | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
744 | 756 | | |
745 | 757 | | |
746 | | - | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
747 | 765 | | |
748 | 766 | | |
749 | 767 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
221 | 223 | | |
222 | 224 | | |
223 | 225 | | |
224 | | - | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
225 | 239 | | |
226 | 240 | | |
227 | 241 | | |
| |||
350 | 364 | | |
351 | 365 | | |
352 | 366 | | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
353 | 371 | | |
354 | 372 | | |
355 | 373 | | |
| |||
Lines changed: 53 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
0 commit comments