diff --git a/nifty6/minimization/iteration_controllers.py b/nifty6/minimization/iteration_controllers.py index 85c081906bc677272b95c883c81152f1e1c9657c..dfa8618f209c24c221bf8d59ceb5df8291283ad6 100644 --- a/nifty6/minimization/iteration_controllers.py +++ b/nifty6/minimization/iteration_controllers.py @@ -108,7 +108,7 @@ class EnergyHistory(object): self._lst = [] @property - def timestamps(self): + def time_stamps(self): return [x for x, _ in self._lst] @property @@ -128,6 +128,9 @@ class EnergyHistory(object): self._lst += other._lst return self + def __len__(self): + return len(self._lst) + def append_history(func): @functools.wraps(func) diff --git a/nifty6/plot.py b/nifty6/plot.py index 92c5e2a82149b8ab64a4eb391b96a65f6349e782..8ba30f87cef1c762a3b9b0bbb7e7b54fc4d00e97 100644 --- a/nifty6/plot.py +++ b/nifty6/plot.py @@ -288,7 +288,7 @@ def _plot_history(f, ax, **kwargs): plt.yscale(kwargs.pop("yscale", "linear")) mi, ma = np.inf, -np.inf for i, fld in enumerate(f): - xcoord = date2num([dt.fromtimestamp(ts) for ts in fld.timestamps]) + xcoord = date2num([dt.fromtimestamp(ts) for ts in fld.time_stamps]) ycoord = fld.energy_values ax.scatter(xcoord, ycoord, label=label[i], alpha=alpha[i], color=color[i], s=size[i]) diff --git a/test/test_kl.py b/test/test_kl.py index eadbcccfe3f028d7f3fb7de3f3bb473fd1ab51a5..fa43322c15bbb76a5749fb86ad4bda3431465a58 100644 --- a/test/test_kl.py +++ b/test/test_kl.py @@ -39,7 +39,7 @@ def test_kl(constants, point_estimates, mirror_samples, mf): import numpy as np lh = ift.GaussianEnergy(domain=op.target, sampling_dtype=np.float64) @ op ic = ift.GradientNormController(iteration_limit=5) - ic.activate_and_reset_logging() + ic.enable_logging() h = ift.StandardHamiltonian(lh, ic_samp=ic) mean0 = ift.from_random('normal', h.domain) @@ -51,7 +51,14 @@ def test_kl(constants, point_estimates, mirror_samples, mf): point_estimates=point_estimates, mirror_samples=mirror_samples, napprox=0) - ic.pop_history() + assert_(len(ic.history) > 0) + assert_(len(ic.history) == len(ic.history.time_stamps)) + assert_(len(ic.history) == len(ic.history.energy_values)) + ic.history.reset() + assert_(len(ic.history) == 0) + assert_(len(ic.history) == len(ic.history.time_stamps)) + assert_(len(ic.history) == len(ic.history.energy_values)) + locsamp = kl._local_samples klpure = ift.MetricGaussianKL(mean0, h, @@ -87,8 +94,10 @@ def test_kl(constants, point_estimates, mirror_samples, mf): # Test constants (after some minimization) cg = ift.GradientNormController(iteration_limit=5) - minimizer = ift.NewtonCG(cg) + minimizer = ift.NewtonCG(cg, activate_logging=True) kl, _ = minimizer(kl) + if len(constants) != 2: + assert_(len(minimizer.inversion_history) > 0) diff = (mean0 - kl.position).to_dict() for kk in constants: assert_allclose(diff[kk].val, 0*diff[kk].val)