diff --git a/nifty5/minimization/iteration_controllers.py b/nifty5/minimization/iteration_controllers.py index e27201e85501a2612372b5dbb274555dc55dc13d..c0c2c9ca111f87e377a546a01201cc45fbe15e65 100644 --- a/nifty5/minimization/iteration_controllers.py +++ b/nifty5/minimization/iteration_controllers.py @@ -133,7 +133,7 @@ class GradientNormController(IterationController): if self._iteration_limit is not None: if self._itcount >= self._iteration_limit: logger.warning( - "{} Iteration limit reached. Assuming convergence" + "{}Iteration limit reached. Assuming convergence" .format("" if self._name is None else self._name+": ")) return self.CONVERGED if self._ccount >= self._convergence_level: diff --git a/nifty5/plot.py b/nifty5/plot.py index 53650755c7dcbb68028aa21a52bd59d65c7759bb..799500d6aee13219c6b5e63114f33de6bec6c009 100644 --- a/nifty5/plot.py +++ b/nifty5/plot.py @@ -168,17 +168,29 @@ def _rgb_data(spectral_cube): res[:,i] = lambda2xyz(1./E[i]) return res + def to_logscale(arr, lo, hi): + res = arr.clip(lo, hi) + res = np.log(res/hi) + tmp = np.log(hi/lo) + res += tmp + res /= tmp + return res + + spectral_cube = spectral_cube.reshape((-1, spectral_cube.shape[-1])) xyz = getxyz(spectral_cube.shape[-1]) xyz_data = np.tensordot(spectral_cube, xyz, axes=[-1, -1]) - xyz_data /= xyz_data.max() +# vmax = max(xyz_data[:,0].max()/0.9505, +# xyz_data[:,1].max(), +# xyz_data[:,2].max()/1.0890) + vmax = xyz_data.max() + xyz_data /= vmax + xyz_data = to_logscale(xyz_data, 1e-3, 1.) rgb_data = xyz_data.copy() - it = np.nditer(xyz_data[:,:,0], flags=['multi_index']) - while not it.finished: - rgb_data[it.multi_index] = _gammacorr( - np.matmul(MATRIX_SRGB_D65, xyz_data[it.multi_index])) - it.iternext() - rgb_data = rgb_data.clip(0.,1.) - return rgb_data + it = np.nditer(xyz_data[:,0], flags=['multi_index']) + for x in range(xyz_data.shape[0]): + rgb_data[x] = _gammacorr(np.matmul(MATRIX_SRGB_D65, xyz_data[x])) + rgb_data = rgb_data.clip(1e-13,1.) + return rgb_data.reshape(spectral_cube.shape[:-1]+(-1,)) def _find_closest(A, target):