### replace ** with clearer operators where possible

parent 4af562db
Pipeline #13245 passed with stage
in 5 minutes and 17 seconds
 ... ... @@ -409,7 +409,7 @@ class Field(Loggable, Versionable, object): def _calculate_power_spectrum(self, x, pindex, rho, axes=None): fieldabs = abs(x) fieldabs **= 2 fieldabs *= fieldabs if axes is not None: pindex = self._shape_up_pindex( ... ... @@ -425,7 +425,7 @@ class Field(Loggable, Versionable, object): rho = rho.reshape(new_rho_shape) power_spectrum /= rho power_spectrum **= 0.5 power_spectrum = sqrt(power_spectrum) return power_spectrum def _shape_up_pindex(self, pindex, target_shape, target_strategy, axes): ... ...
 ... ... @@ -23,29 +23,29 @@ from .line_search import LineSearch class LineSearchStrongWolfe(LineSearch): """Class for finding a step size that satisfies the strong Wolfe conditions. Algorithm contains two stages. It begins whit a trial step length and it Algorithm contains two stages. It begins whit a trial step length and it keeps increasing the it until it finds an acceptable step length or an interval. If it does not satisfy the Wolfe conditions it performs the Zoom algorithm (second stage). By interpolating it decreases the size of the interval until an acceptable step length is found. interval. If it does not satisfy the Wolfe conditions it performs the Zoom algorithm (second stage). By interpolating it decreases the size of the interval until an acceptable step length is found. Parameters ---------- c1 : float c1 : float Parameter for Armijo condition rule. (Default: 1e-4) c2 : float Parameter for curvature condition rule. (Default: 0.9) max_step_size : float Maximum step allowed in to be made in the descent direction. Maximum step allowed in to be made in the descent direction. (Default: 50) max_iterations : integer Maximum number of iterations performed by the line search algorithm. (Default: 10) max_zoom_iterations : integer Maximum number of iterations performed by the zoom algorithm. Maximum number of iterations performed by the zoom algorithm. (Default: 10) Attributes ---------- c1 : float ... ... @@ -53,19 +53,18 @@ class LineSearchStrongWolfe(LineSearch): c2 : float Parameter for curvature condition rule. max_step_size : float Maximum step allowed in to be made in the descent direction. Maximum step allowed in to be made in the descent direction. max_iterations : integer Maximum number of iterations performed by the line search algorithm. max_zoom_iterations : integer Maximum number of iterations performed by the zoom algorithm. """ def __init__(self, c1=1e-4, c2=0.9, max_step_size=50, max_iterations=10, max_zoom_iterations=10): super(LineSearchStrongWolfe, self).__init__() self.c1 = np.float(c1) ... ... @@ -76,11 +75,11 @@ class LineSearchStrongWolfe(LineSearch): def perform_line_search(self, energy, pk, f_k_minus_1=None): """Performs the first stage of the algorithm. It starts with a trial step size and it keeps increasing it until it satisfy the strong Wolf conditions. It also performs the descent and It starts with a trial step size and it keeps increasing it until it satisfy the strong Wolf conditions. It also performs the descent and returns the optimal step length and the new enrgy. Parameters ---------- energy : Energy object ... ... @@ -89,9 +88,9 @@ class LineSearchStrongWolfe(LineSearch): pk : Field Unit vector pointing into the search direction. f_k_minus_1 : float Value of the fuction (which is being minimized) at the k-1 Value of the fuction (which is being minimized) at the k-1 iteration of the line search procedure. (Default: None) Returns ------- alpha_star : float ... ... @@ -100,9 +99,9 @@ class LineSearchStrongWolfe(LineSearch): Value of the energy after the performed descent. energy_star : Energy object The new Energy object on the new position. """ """ self._set_line_energy(energy, pk, f_k_minus_1=f_k_minus_1) c1 = self.c1 c2 = self.c2 ... ... @@ -195,11 +194,11 @@ class LineSearchStrongWolfe(LineSearch): def _zoom(self, alpha_lo, alpha_hi, phi_0, phiprime_0, phi_lo, phiprime_lo, phi_hi, c1, c2): """Performs the second stage of the line search algorithm. If the first stage was not successful then the Zoom algorithm tries to find a suitable step length by using bisection, quadratic, cubic If the first stage was not successful then the Zoom algorithm tries to find a suitable step length by using bisection, quadratic, cubic interpolation. Parameters ---------- alpha_lo : float ... ... @@ -207,24 +206,24 @@ class LineSearchStrongWolfe(LineSearch): alph_hi : float The upper boundary for the step length interval. phi_0 : float Value of the energy at the starting point of the line search Value of the energy at the starting point of the line search algorithm. phiprime_0 : Field Gradient at the starting point of the line search algorithm. phi_lo : float Value of the energy if we perform a step of length alpha_lo in Value of the energy if we perform a step of length alpha_lo in descent direction. phiprime_lo : Field Gradient at the nwe position if we perform a step of length Gradient at the nwe position if we perform a step of length alpha_lo in descent direction. phi_hi : float Value of the energy if we perform a step of length alpha_hi in Value of the energy if we perform a step of length alpha_hi in descent direction. c1 : float Parameter for Armijo condition rule. c2 : float Parameter for curvature condition rule. Returns ------- alpha_star : float ... ... @@ -233,7 +232,7 @@ class LineSearchStrongWolfe(LineSearch): Value of the energy after the performed descent. energy_star : Energy object The new Energy object on the new position. """ max_iterations = self.max_zoom_iterations # define the cubic and quadratic interpolant checks ... ... @@ -306,12 +305,13 @@ class LineSearchStrongWolfe(LineSearch): def _cubicmin(self, a, fa, fpa, b, fb, c, fc): """Estimating the minimum with cubic interpolation. 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 If no minimizer can be found return None Parameters ---------- a : float ... ... @@ -328,12 +328,12 @@ class LineSearchStrongWolfe(LineSearch): Selected point. fc : float Value of polynomial at point c. Returns ------- xmin : float Position of the approximated minimum. """ with np.errstate(divide='raise', over='raise', invalid='raise'): ... ... @@ -341,12 +341,12 @@ class LineSearchStrongWolfe(LineSearch): C = fpa db = b - a dc = c - a denom = (db * dc) ** 2 * (db - dc) denom = db * db * dc * dc * (db - dc) d1 = np.empty((2, 2)) d1[0, 0] = dc ** 2 d1[0, 1] = -db ** 2 d1[1, 0] = -dc ** 3 d1[1, 1] = db ** 3 d1[0, 0] = dc * dc d1[0, 1] = -(db*db) d1[1, 0] = -(dc*dc*dc) d1[1, 1] = db*db*db [A, B] = np.dot(d1, np.asarray([fb - fa - C * db, fc - fa - C * dc]).flatten()) A /= denom ... ... @@ -361,11 +361,11 @@ class LineSearchStrongWolfe(LineSearch): def _quadmin(self, a, fa, fpa, b, fb): """Estimating the minimum with quadratic interpolation. Finds the minimizer for a quadratic polynomial that goes through the points ( a,f(a) ), ( b,f(b) ) with derivative at point a of fpa. f(x) = B*(x-a)^2 + C*(x-a) + D Parameters ---------- a : float ... ... @@ -378,11 +378,11 @@ class LineSearchStrongWolfe(LineSearch): Selected point. fb : float Value of polynomial at point b. Returns ------- xmin : float Position of the approximated minimum. Position of the approximated minimum. """ # f(x) = B*(x-a)^2 + C*(x-a) + D with np.errstate(divide='raise', over='raise', invalid='raise'): ... ...
 ... ... @@ -118,7 +118,7 @@ class RGRGTransformation(Transformation): np.absolute(np.array(domain.shape) * np.array(domain.distances) * np.array(codomain.distances) - 1) < 10**-7): 1e-7): raise AttributeError("The grid-distances of domain and codomain " "do not match.") ... ...
 ... ... @@ -93,11 +93,11 @@ class HPSpace(Space): @property def shape(self): return (np.int(12 * self.nside ** 2),) return (np.int(12 * self.nside * self.nside),) @property def dim(self): return np.int(12 * self.nside ** 2) return np.int(12 * self.nside * self.nside) @property def total_volume(self): ... ... @@ -108,7 +108,7 @@ class HPSpace(Space): 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: x *= weight ... ...
 ... ... @@ -130,7 +130,7 @@ class LMSpace(Space): # 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.)) # We fix l == m return np.int((l+1)**2) return np.int((l+1)*(l+1)) @property def total_volume(self): ... ... @@ -166,7 +166,7 @@ class LMSpace(Space): def get_fft_smoothing_kernel_function(self, sigma): # 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--- ... ...
 ... ... @@ -267,14 +267,16 @@ class RGSpace(Space): cords = np.ogrid[inds] dists = ((cords - shape//2)*dk)**2 dists = (cords - shape//2)*dk dists *= dists # apply zerocenterQ shift if not self.zerocenter: dists = np.fft.ifftshift(dists) # only save the individual slice dists = dists[slice_of_first_dimension] 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]: temp = np.fft.ifftshift(temp) dists = dists + temp ... ... @@ -282,7 +284,7 @@ class RGSpace(Space): return dists 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--- ... ...
 ... ... @@ -32,7 +32,7 @@ def create_power_operator(domain, power_spectrum, dtype=None, Parameters ---------- domain : DomainObject Domain over which the power operator shall live. Domain over which the power operator shall live. power_spectrum : (array-like, method) An array-like object, or a method that implements the square root of a power spectrum as a function of k. ... ... @@ -54,7 +54,7 @@ def create_power_operator(domain, power_spectrum, dtype=None, distribution_strategy=distribution_strategy) fp = Field(power_domain, val=power_spectrum, dtype=dtype, distribution_strategy=distribution_strategy) fp **= 2 fp *= fp f = fp.power_synthesize(mean=1, std=0, real_signal=False) return DiagonalOperator(domain, diagonal=f, bare=True)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!