Commit 6d44c94b authored by Martin Reinecke's avatar Martin Reinecke
Browse files

allow sigma/strength of 0

parent a35319be
Pipeline #22892 passed with stage
in 4 minutes and 45 seconds
...@@ -41,9 +41,8 @@ class NonlinearPowerEnergy(Energy): ...@@ -41,9 +41,8 @@ class NonlinearPowerEnergy(Energy):
self.D = D self.D = D
self.d = d self.d = d
self.N = N self.N = N
self.sigma = sigma
self.T = SmoothnessOperator(domain=self.position.domain[0], self.T = SmoothnessOperator(domain=self.position.domain[0],
strength=self.sigma, logarithmic=True) strength=sigma, logarithmic=True)
self.FFT = FFT self.FFT = FFT
self.Instrument = Instrument self.Instrument = Instrument
self.nonlinearity = nonlinearity self.nonlinearity = nonlinearity
...@@ -63,7 +62,7 @@ class NonlinearPowerEnergy(Energy): ...@@ -63,7 +62,7 @@ class NonlinearPowerEnergy(Energy):
def at(self, position): def at(self, position):
return self.__class__(position, self.d, self.N, self.m, self.D, return self.__class__(position, self.d, self.N, self.m, self.D,
self.FFT, self.Instrument, self.nonlinearity, self.FFT, self.Instrument, self.nonlinearity,
self.Projection, sigma=self.sigma, self.Projection, sigma=self.T.strength,
samples=len(self.sample_list), samples=len(self.sample_list),
sample_list=self.sample_list, sample_list=self.sample_list,
inverter=self.inverter) inverter=self.inverter)
......
...@@ -30,8 +30,8 @@ class SmoothnessOperator(EndomorphicOperator): ...@@ -30,8 +30,8 @@ class SmoothnessOperator(EndomorphicOperator):
self._laplace = LaplaceOperator(domain, logarithmic=logarithmic, self._laplace = LaplaceOperator(domain, logarithmic=logarithmic,
space=space) space=space)
if strength <= 0: if strength < 0:
raise ValueError("ERROR: invalid sigma.") raise ValueError("ERROR: strength must be >=0.")
self._strength = strength self._strength = strength
@property @property
...@@ -47,6 +47,8 @@ class SmoothnessOperator(EndomorphicOperator): ...@@ -47,6 +47,8 @@ class SmoothnessOperator(EndomorphicOperator):
return False return False
def _times(self, x): def _times(self, x):
if self._strength == 0.:
return x.zeros_like(x)
result = self._laplace.adjoint_times(self._laplace(x)) result = self._laplace.adjoint_times(self._laplace(x))
result *= self._strength**2 result *= self._strength**2
return result return result
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment