Commit 05d1d092 authored by Theo Steininger's avatar Theo Steininger
Browse files

Merge branch 'fight_the_power' into 'master'

replace ** with clearer operators where possible

See merge request !149
parents f0b59b53 9879e567
Pipeline #13331 passed with stages
in 11 minutes and 23 seconds
...@@ -65,7 +65,6 @@ class LineSearchStrongWolfe(LineSearch): ...@@ -65,7 +65,6 @@ class LineSearchStrongWolfe(LineSearch):
max_step_size=50, max_iterations=10, max_step_size=50, max_iterations=10,
max_zoom_iterations=10): max_zoom_iterations=10):
super(LineSearchStrongWolfe, self).__init__() super(LineSearchStrongWolfe, self).__init__()
self.c1 = np.float(c1) self.c1 = np.float(c1)
...@@ -308,7 +307,8 @@ class LineSearchStrongWolfe(LineSearch): ...@@ -308,7 +307,8 @@ class LineSearchStrongWolfe(LineSearch):
"""Estimating the minimum with cubic interpolation. """Estimating the minimum with cubic interpolation.
Finds the minimizer for a cubic polynomial that goes through the Finds the minimizer for a cubic polynomial that goes through the
points ( a,f(a) ), ( b,f(b) ), and ( c,f(c) ) with derivative at point a of fpa. points ( a,f(a) ), ( b,f(b) ), and ( c,f(c) ) with derivative at point
a of fpa.
f(x) = A *(x-a)^3 + B*(x-a)^2 + C*(x-a) + D f(x) = A *(x-a)^3 + B*(x-a)^2 + C*(x-a) + D
If no minimizer can be found return None If no minimizer can be found return None
...@@ -341,12 +341,12 @@ class LineSearchStrongWolfe(LineSearch): ...@@ -341,12 +341,12 @@ class LineSearchStrongWolfe(LineSearch):
C = fpa C = fpa
db = b - a db = b - a
dc = c - a dc = c - a
denom = (db * dc) ** 2 * (db - dc) denom = db * db * dc * dc * (db - dc)
d1 = np.empty((2, 2)) d1 = np.empty((2, 2))
d1[0, 0] = dc ** 2 d1[0, 0] = dc * dc
d1[0, 1] = -db ** 2 d1[0, 1] = -(db*db)
d1[1, 0] = -dc ** 3 d1[1, 0] = -(dc*dc*dc)
d1[1, 1] = db ** 3 d1[1, 1] = db*db*db
[A, B] = np.dot(d1, np.asarray([fb - fa - C * db, [A, B] = np.dot(d1, np.asarray([fb - fa - C * db,
fc - fa - C * dc]).flatten()) fc - fa - C * dc]).flatten())
A /= denom A /= denom
......
...@@ -118,7 +118,7 @@ class RGRGTransformation(Transformation): ...@@ -118,7 +118,7 @@ class RGRGTransformation(Transformation):
np.absolute(np.array(domain.shape) * np.absolute(np.array(domain.shape) *
np.array(domain.distances) * np.array(domain.distances) *
np.array(codomain.distances) - 1) < np.array(codomain.distances) - 1) <
10**-7): 1e-7):
raise AttributeError("The grid-distances of domain and codomain " raise AttributeError("The grid-distances of domain and codomain "
"do not match.") "do not match.")
......
...@@ -93,11 +93,11 @@ class HPSpace(Space): ...@@ -93,11 +93,11 @@ class HPSpace(Space):
@property @property
def shape(self): def shape(self):
return (np.int(12 * self.nside ** 2),) return (np.int(12 * self.nside * self.nside),)
@property @property
def dim(self): def dim(self):
return np.int(12 * self.nside ** 2) return np.int(12 * self.nside * self.nside)
@property @property
def total_volume(self): def total_volume(self):
...@@ -108,7 +108,7 @@ class HPSpace(Space): ...@@ -108,7 +108,7 @@ class HPSpace(Space):
def weight(self, x, power=1, axes=None, inplace=False): def weight(self, x, power=1, axes=None, inplace=False):
weight = ((4 * np.pi) / (12 * self.nside**2)) ** np.float(power) weight = ((4*np.pi) / (12*self.nside*self.nside)) ** np.float(power)
if inplace: if inplace:
x *= weight x *= weight
......
...@@ -130,7 +130,7 @@ class LMSpace(Space): ...@@ -130,7 +130,7 @@ class LMSpace(Space):
# dim = (((2*(l+1)-1)+1)**2/4 - 2 * (l-m)(l-m+1)/2 # dim = (((2*(l+1)-1)+1)**2/4 - 2 * (l-m)(l-m+1)/2
# dim = np.int((l+1)**2 - (l-m)*(l-m+1.)) # dim = np.int((l+1)**2 - (l-m)*(l-m+1.))
# We fix l == m # We fix l == m
return np.int((l+1)**2) return np.int((l+1)*(l+1))
@property @property
def total_volume(self): def total_volume(self):
...@@ -166,7 +166,7 @@ class LMSpace(Space): ...@@ -166,7 +166,7 @@ class LMSpace(Space):
def get_fft_smoothing_kernel_function(self, sigma): def get_fft_smoothing_kernel_function(self, sigma):
# FIXME why x(x+1) ? add reference to paper! # FIXME why x(x+1) ? add reference to paper!
return lambda x: np.exp(-0.5 * x * (x + 1) * sigma**2) return lambda x: np.exp(-0.5 * x * (x + 1) * sigma*sigma)
# ---Added properties and methods--- # ---Added properties and methods---
......
...@@ -267,14 +267,16 @@ class RGSpace(Space): ...@@ -267,14 +267,16 @@ class RGSpace(Space):
cords = np.ogrid[inds] cords = np.ogrid[inds]
dists = ((cords[0] - shape[0]//2)*dk[0])**2 dists = (cords[0] - shape[0]//2)*dk[0]
dists *= dists
# apply zerocenterQ shift # apply zerocenterQ shift
if not self.zerocenter[0]: if not self.zerocenter[0]:
dists = np.fft.ifftshift(dists) dists = np.fft.ifftshift(dists)
# only save the individual slice # only save the individual slice
dists = dists[slice_of_first_dimension] dists = dists[slice_of_first_dimension]
for ii in range(1, len(shape)): for ii in range(1, len(shape)):
temp = ((cords[ii] - shape[ii] // 2) * dk[ii])**2 temp = (cords[ii] - shape[ii] // 2) * dk[ii]
temp *= temp
if not self.zerocenter[ii]: if not self.zerocenter[ii]:
temp = np.fft.ifftshift(temp) temp = np.fft.ifftshift(temp)
dists = dists + temp dists = dists + temp
...@@ -282,7 +284,7 @@ class RGSpace(Space): ...@@ -282,7 +284,7 @@ class RGSpace(Space):
return dists return dists
def get_fft_smoothing_kernel_function(self, sigma): def get_fft_smoothing_kernel_function(self, sigma):
return lambda x: np.exp(-0.5 * np.pi**2 * x**2 * sigma**2) return lambda x: np.exp(-0.5 * np.pi*np.pi * x*x * sigma*sigma)
# ---Added properties and methods--- # ---Added properties and methods---
......
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