Commit d11f0851 authored by Theo Steininger's avatar Theo Steininger
Browse files

Added logarithmic to

parent 1d10be46
Pipeline #15148 passed with stages
in 13 minutes and 3 seconds
......@@ -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],
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,
w=self.w, samples=self.samples)
......@@ -94,6 +98,16 @@ class CriticalPowerEnergy(Energy):
return curvature
# ---Added properties and methods---
def logarithmic(self):
return self.T.logarithmic
def smoothness_prior(self):
return self.T.strength
def w(self):
if self._w is None:
......@@ -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
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:
......@@ -20,7 +20,7 @@ class SmoothnessOperator(EndomorphicOperator):
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---
def logarithmic(self):
return self._laplace.logarithmic
def strength(self):
return self._strength
Supports Markdown
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