def __init__(self, G, Nf=6, lpfactor=20, scales=None, normalize=False): self.lpfactor = lpfactor self.normalize = normalize lmin = G.lmax / lpfactor if scales is None: scales = utils.compute_log_scales(lmin, G.lmax, Nf - 1) self.scales = scales if len(scales) != Nf - 1: raise ValueError('len(scales) should be Nf-1.') def band_pass(x): return x * np.exp(-x) def low_pass(x): return np.exp(-x**4) kernels = [lambda x: 1.2 * np.exp(-1) * low_pass(x / 0.4 / lmin)] for i in range(Nf - 1): def kernel(x, i=i): norm = np.sqrt(scales[i]) if normalize else 1 return norm * band_pass(scales[i] * x) kernels.append(kernel) super(MexicanHat, self).__init__(G, kernels)
def __init__(self, G, Nf=6, lpfactor=20, scales=None): def kernel_abspline3(x, alpha, beta, t1, t2): M = np.array([[1, t1, t1**2, t1**3], [1, t2, t2**2, t2**3], [0, 1, 2*t1, 3*t1**2], [0, 1, 2*t2, 3*t2**2]]) v = np.array([1, 1, t1**(-alpha) * alpha * t1**(alpha - 1), -beta*t2**(- beta - 1) * t2**beta]) a = np.linalg.solve(M, v) r1 = x <= t1 r2 = (x >= t1)*(x < t2) r3 = (x >= t2) if isinstance(x, np.float64): if r1: r = x[r1]**alpha * t1**(-alpha) if r2: r = a[0] + a[1] * x + a[2] * x**2 + a[3] * x**3 if r3: r = x[r3]**(-beta) * t2**beta else: r = np.zeros(x.shape) x2 = x[r2] r[r1] = x[r1]**alpha * t1**(-alpha) r[r2] = a[0] + a[1] * x2 + a[2] * x2**2 + a[3] * x2**3 r[r3] = x[r3]**(-beta) * t2 ** beta return r self.lpfactor = lpfactor lmin = G.lmax / lpfactor if scales is None: scales = utils.compute_log_scales(lmin, G.lmax, Nf - 1) self.scales = scales gb = lambda x: kernel_abspline3(x, 2, 2, 1, 2) gl = lambda x: np.exp(-np.power(x, 4)) lminfac = .4 * lmin g = [lambda x: 1.2 * np.exp(-1) * gl(x / lminfac)] for i in range(0, Nf - 1): g.append(lambda x, i=i: gb(self.scales[i] * x)) f = lambda x: -gb(x) xstar = optimize.minimize_scalar(f, bounds=(1, 2), method='bounded') gamma_l = -f(xstar.x) lminfac = .6 * lmin g[0] = lambda x: gamma_l * gl(x / lminfac) super(Abspline, self).__init__(G, g)
def __init__(self, G, Nf=6, lpfactor=20, scales=None): def kernel_abspline3(x, alpha, beta, t1, t2): M = np.array([[1, t1, t1**2, t1**3], [1, t2, t2**2, t2**3], [0, 1, 2 * t1, 3 * t1**2], [0, 1, 2 * t2, 3 * t2**2]]) v = np.array([ 1, 1, t1**(-alpha) * alpha * t1**(alpha - 1), -beta * t2**(-beta - 1) * t2**beta ]) a = np.linalg.solve(M, v) r1 = x <= t1 r2 = (x >= t1) * (x < t2) r3 = (x >= t2) if isinstance(x, np.float64): if r1: r = x[r1]**alpha * t1**(-alpha) if r2: r = a[0] + a[1] * x + a[2] * x**2 + a[3] * x**3 if r3: r = x[r3]**(-beta) * t2**beta else: r = np.zeros(x.shape) x2 = x[r2] r[r1] = x[r1]**alpha * t1**(-alpha) r[r2] = a[0] + a[1] * x2 + a[2] * x2**2 + a[3] * x2**3 r[r3] = x[r3]**(-beta) * t2**beta return r self.lpfactor = lpfactor lmin = G.lmax / lpfactor if scales is None: scales = utils.compute_log_scales(lmin, G.lmax, Nf - 1) self.scales = scales gb = lambda x: kernel_abspline3(x, 2, 2, 1, 2) gl = lambda x: np.exp(-np.power(x, 4)) lminfac = .4 * lmin g = [lambda x: 1.2 * np.exp(-1) * gl(x / lminfac)] for i in range(0, Nf - 1): g.append(lambda x, i=i: gb(self.scales[i] * x)) f = lambda x: -gb(x) xstar = optimize.minimize_scalar(f, bounds=(1, 2), method='bounded') gamma_l = -f(xstar.x) lminfac = .6 * lmin g[0] = lambda x: gamma_l * gl(x / lminfac) super(Abspline, self).__init__(G, g)