diff --git a/nifty5/__init__.py b/nifty5/__init__.py index a6bd52eafbc76a33654c92478270e52f1dd2ebff..06e55763400db9cd4fabe4c51001d651cdb77e9e 100644 --- a/nifty5/__init__.py +++ b/nifty5/__init__.py @@ -74,7 +74,8 @@ from .minimization.metric_gaussian_kl import MetricGaussianKL from .sugar import * from .plot import Plot -from .library.smooth_linear_amplitude import SLAmplitude, CepstrumOperator +from .library.smooth_linear_amplitude import ( + SLAmplitude, LinearSLAmplitude, CepstrumOperator) from .library.inverse_gamma_operator import InverseGammaOperator from .library.los_response import LOSResponse from .library.dynamic_operator import (dynamic_operator, diff --git a/nifty5/library/smooth_linear_amplitude.py b/nifty5/library/smooth_linear_amplitude.py index 5421cc09b4814932f83a1b5f747c9e1e147257b4..f9c7187e826f1486d8d9810e1c007f6898e8b94b 100644 --- a/nifty5/library/smooth_linear_amplitude.py +++ b/nifty5/library/smooth_linear_amplitude.py @@ -169,6 +169,18 @@ def SLAmplitude(*, target, n_pix, a, k0, sm, sv, im, iv, keys=['tau', 'phi']): which returns on its target a power spectrum which consists out of a smooth and a linear part. ''' + return LinearSLAmplitude(target=target, n_pix=n_pix, a=a, k0=k0, sm=sm, + sv=sv, im=im, iv=iv, keys=keys).exp() + + +def LinearSLAmplitude(*, target, n_pix, a, k0, sm, sv, im, iv, + keys=['tau', 'phi']): + '''LinearOperator for parametrizing smooth log-amplitudes (square roots of + power spectra). + + Logarithm of SLAmplitude + See documentation of SLAmplitude for more details + ''' if not (isinstance(n_pix, int) and isinstance(target, PowerSpace)): raise TypeError @@ -196,4 +208,4 @@ def SLAmplitude(*, target, n_pix, a, k0, sm, sv, im, iv, keys=['tau', 'phi']): loglog_ampl = 0.5*(smooth + linear) # Go from loglog-space to linear-linear-space - return et @ loglog_ampl.exp() + return et @ loglog_ampl diff --git a/nifty5/operators/energy_operators.py b/nifty5/operators/energy_operators.py index ef3fe76333e2266f7e2b1d1e1266abf524f5d046..70f79de170baa88c79e2831269ccf55a55061a43 100644 --- a/nifty5/operators/energy_operators.py +++ b/nifty5/operators/energy_operators.py @@ -20,6 +20,7 @@ import numpy as np from .. import utilities from ..domain_tuple import DomainTuple from ..field import Field +from ..multi_field import MultiField from ..linearization import Linearization from ..sugar import makeDomain, makeOp from .linear_operator import LinearOperator @@ -121,7 +122,7 @@ class GaussianEnergy(EnergyOperator): """ def __init__(self, mean=None, covariance=None, domain=None): - if mean is not None and not isinstance(mean, Field): + if mean is not None and not isinstance(mean, (Field, MultiField)): raise TypeError if covariance is not None and not isinstance(covariance, LinearOperator): @@ -307,7 +308,6 @@ class StandardHamiltonian(EnergyOperator): Tells an internal :class:`SamplingEnabler` which convergence criterion to use to draw Gaussian samples. - See also -------- `Encoding prior knowledge in the structure of the likelihood`,