Commit d11f0851 authored by Theo Steininger's avatar Theo Steininger

Added logarithmic to CriticalPowerEnergy.at

parent 1d10be46
Pipeline #15148 passed with stages
in 13 minutes and 3 seconds
...@@ -53,24 +53,28 @@ class CriticalPowerEnergy(Energy): ...@@ -53,24 +53,28 @@ class CriticalPowerEnergy(Energy):
default : None default : None
""" """
# ---Overwritten properties and methods---
def __init__(self, position, m, D=None, alpha=1.0, q=0., def __init__(self, position, m, D=None, alpha=1.0, q=0.,
smoothness_prior=0., logarithmic=True, samples=3, w=None): smoothness_prior=0., logarithmic=True, samples=3, w=None):
super(CriticalPowerEnergy, self).__init__(position=position) super(CriticalPowerEnergy, self).__init__(position=position)
self.m = m self.m = m
self.D = D self.D = D
self.samples = samples self.samples = samples
self.smoothness_prior = np.float(smoothness_prior)
self.alpha = Field(self.position.domain, val=alpha) self.alpha = Field(self.position.domain, val=alpha)
self.q = Field(self.position.domain, val=q) self.q = Field(self.position.domain, val=q)
self.T = SmoothnessOperator(domain=self.position.domain[0], self.T = SmoothnessOperator(domain=self.position.domain[0],
strength=self.smoothness_prior, strength=smoothness_prior,
logarithmic=logarithmic) logarithmic=logarithmic)
self.rho = self.position.domain[0].rho self.rho = self.position.domain[0].rho
self._w = w if w is not None else None self._w = w if w is not None else None
# ---Mandatory properties and methods---
def at(self, position): def at(self, position):
return self.__class__(position, self.m, D=self.D, alpha=self.alpha, return self.__class__(position, self.m, D=self.D, alpha=self.alpha,
q=self.q, smoothness_prior=self.smoothness_prior, q=self.q, smoothness_prior=self.smoothness_prior,
logarithmic=self.logarithmic,
w=self.w, samples=self.samples) w=self.w, samples=self.samples)
@property @property
...@@ -94,6 +98,16 @@ class CriticalPowerEnergy(Energy): ...@@ -94,6 +98,16 @@ class CriticalPowerEnergy(Energy):
T=self.T) T=self.T)
return curvature return curvature
# ---Added properties and methods---
@property
def logarithmic(self):
return self.T.logarithmic
@property
def smoothness_prior(self):
return self.T.strength
@property @property
def w(self): def w(self):
if self._w is None: if self._w is None:
......
...@@ -48,7 +48,9 @@ class LaplaceOperator(EndomorphicOperator): ...@@ -48,7 +48,9 @@ class LaplaceOperator(EndomorphicOperator):
if not isinstance(self.domain[0], PowerSpace): if not isinstance(self.domain[0], PowerSpace):
raise TypeError("The domain must contain exactly one 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 = self.domain[0].kindex.copy()
self.positions[1:] = np.log(self.positions[1:]) self.positions[1:] = np.log(self.positions[1:])
self.positions[0] = -1. self.positions[0] = -1.
...@@ -78,6 +80,10 @@ class LaplaceOperator(EndomorphicOperator): ...@@ -78,6 +80,10 @@ class LaplaceOperator(EndomorphicOperator):
def self_adjoint(self): def self_adjoint(self):
return False return False
@property
def logarithmic(self):
return self._logarithmic
def _times(self, x, spaces): def _times(self, x, spaces):
spaces = utilities.cast_axis_to_tuple(spaces, len(x.domain)) spaces = utilities.cast_axis_to_tuple(spaces, len(x.domain))
if spaces is None: if spaces is None:
......
...@@ -20,7 +20,7 @@ class SmoothnessOperator(EndomorphicOperator): ...@@ -20,7 +20,7 @@ class SmoothnessOperator(EndomorphicOperator):
Parameters Parameters
---------- ----------
sigma: float, strength: float,
Specifies the strength of the SmoothnessOperator Specifies the strength of the SmoothnessOperator
logarithmic : boolean, logarithmic : boolean,
Whether smoothness is calculated on a logarithmic scale or linear scale Whether smoothness is calculated on a logarithmic scale or linear scale
...@@ -83,6 +83,10 @@ class SmoothnessOperator(EndomorphicOperator): ...@@ -83,6 +83,10 @@ class SmoothnessOperator(EndomorphicOperator):
# ---Added properties and methods--- # ---Added properties and methods---
@property
def logarithmic(self):
return self._laplace.logarithmic
@property @property
def strength(self): def strength(self):
return self._strength return self._strength
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