It appears that the nnls() method is reimplemented in SciPy 1.12, and due to some changes in the termination criteria, inversion_with_raytransfer.py, inversion_with_voxels.py bolometer demos and admit_tomographic_inversion.py from #427 return zero emissivity profiles.
Normalising the c_matrix and d_vector by d_vector.max() before passing them to nnls(), solves the problem.
Also, the new nnls implementation is much slower if atol is not set. I suggest adding **kwargs to invert_regularised_nnls() so that the user can control maxiter and atol parameters.
It appears that the
nnls()
method is reimplemented in SciPy 1.12, and due to some changes in the termination criteria,inversion_with_raytransfer.py
,inversion_with_voxels.py
bolometer demos andadmit_tomographic_inversion.py
from #427 return zero emissivity profiles.Normalising the
c_matrix
andd_vector
byd_vector.max()
before passing them tonnls()
, solves the problem.Also, the new
nnls
implementation is much slower ifatol
is not set. I suggest adding**kwargs
toinvert_regularised_nnls()
so that the user can controlmaxiter
andatol
parameters.