Minisanity history broken if likelihoods with different names are used
Reproducer:
import nifty8 as ift
dom = ift.RGSpace(2)
lh0 = ift.GaussianEnergy(domain=dom).ducktape("inp")
lh1 = ift.GaussianEnergy(domain=dom).ducktape("inp")
lh0.name = "First lh"
lh1.name = "Second lh"
ic = ift.GradientNormController(iteration_limit=2)
mini = ift.SteepestDescent(ic)
def lhs(iglobal):
if iglobal == 0:
return lh0
return lh1
ift.optimize_kl(lhs, 2, 0, mini, ic, None, overwrite=True)
Output:
Iteration limit reached. Assuming convergence
========================================================
reduced χ² mean # dof
--------------------------------------------------------
Data residuals
First lh 0.0 0.0 2
Latent space
inp 0.0 0.0 2
========================================================
/home/philipp/git/nifty/nifty8/plot.py:342: UserWarning: Attempting to set identical left == right == 0.0 results in singular transformations; automatically expanding.
ax.set_xlim((mi-delta, ma+delta))
========================================================
reduced χ² mean # dof
--------------------------------------------------------
Data residuals
Second lh 0.0 0.0 2
Latent space
inp 0.0 0.0 2
========================================================
Traceback (most recent call last):
File "/home/philipp/asdf.py", line 18, in <module>
ift.optimize_kl(lhs, 2, 0, mini, ic, None, overwrite=True)
File "/home/philipp/git/nifty/nifty8/minimization/optimize_kl.py", line 392, in optimize_kl
_minisanity(likelihood_energy, iglobal, sl, comm, plot_minisanity_history)
File "/home/philipp/git/nifty/nifty8/minimization/optimize_kl.py", line 627, in _minisanity
v = ms_val[k1][k2][k3]
KeyError: 'First lh'