diff --git a/nifty/library/critical_filter/critical_power_energy.py b/nifty/library/critical_filter/critical_power_energy.py index e94e2d35c97be477d11f96792300897da6e1dd55..0d42b8f783ac6c0e58978fa50afd01c92174c1da 100644 --- a/nifty/library/critical_filter/critical_power_energy.py +++ b/nifty/library/critical_filter/critical_power_energy.py @@ -53,24 +53,28 @@ class CriticalPowerEnergy(Energy): default : None """ + # ---Overwritten properties and methods--- + def __init__(self, position, m, D=None, alpha=1.0, q=0., smoothness_prior=0., logarithmic=True, samples=3, w=None): super(CriticalPowerEnergy, self).__init__(position=position) self.m = m self.D = D self.samples = samples - self.smoothness_prior = np.float(smoothness_prior) self.alpha = Field(self.position.domain, val=alpha) self.q = Field(self.position.domain, val=q) self.T = SmoothnessOperator(domain=self.position.domain[0], - strength=self.smoothness_prior, + strength=smoothness_prior, logarithmic=logarithmic) self.rho = self.position.domain[0].rho self._w = w if w is not None else None + # ---Mandatory properties and methods--- + def at(self, position): return self.__class__(position, self.m, D=self.D, alpha=self.alpha, q=self.q, smoothness_prior=self.smoothness_prior, + logarithmic=self.logarithmic, w=self.w, samples=self.samples) @property @@ -94,6 +98,16 @@ class CriticalPowerEnergy(Energy): T=self.T) return curvature + # ---Added properties and methods--- + + @property + def logarithmic(self): + return self.T.logarithmic + + @property + def smoothness_prior(self): + return self.T.strength + @property def w(self): if self._w is None: diff --git a/nifty/operators/laplace_operator/laplace_operator.py b/nifty/operators/laplace_operator/laplace_operator.py index cce914cfac1ed593a37ed6d9ae7abd2ed97e6e9f..00f6eba8fca1464454e08b8cdf8c0ec456a66086 100644 --- a/nifty/operators/laplace_operator/laplace_operator.py +++ b/nifty/operators/laplace_operator/laplace_operator.py @@ -48,7 +48,9 @@ class LaplaceOperator(EndomorphicOperator): if not isinstance(self.domain[0], PowerSpace): raise TypeError("The domain must contain exactly one PowerSpace.") - if logarithmic: + self._logarithmic = bool(logarithmic) + + if self.logarithmic: self.positions = self.domain[0].kindex.copy() self.positions[1:] = np.log(self.positions[1:]) self.positions[0] = -1. @@ -78,6 +80,10 @@ class LaplaceOperator(EndomorphicOperator): def self_adjoint(self): return False + @property + def logarithmic(self): + return self._logarithmic + def _times(self, x, spaces): spaces = utilities.cast_axis_to_tuple(spaces, len(x.domain)) if spaces is None: diff --git a/nifty/operators/smoothness_operator/smoothness_operator.py b/nifty/operators/smoothness_operator/smoothness_operator.py index e9e35453616ff9df87ed252db3727e245c360343..a22b8fc356947f4780220da31cc958c37f4a53c7 100644 --- a/nifty/operators/smoothness_operator/smoothness_operator.py +++ b/nifty/operators/smoothness_operator/smoothness_operator.py @@ -20,7 +20,7 @@ class SmoothnessOperator(EndomorphicOperator): Parameters ---------- - sigma: float, + strength: float, Specifies the strength of the SmoothnessOperator logarithmic : boolean, Whether smoothness is calculated on a logarithmic scale or linear scale @@ -83,6 +83,10 @@ class SmoothnessOperator(EndomorphicOperator): # ---Added properties and methods--- + @property + def logarithmic(self): + return self._laplace.logarithmic + @property def strength(self): return self._strength