Python numpy.outer() Examples
The following are 30
code examples of numpy.outer().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
numpy
, or try the search function
.
Example #1
Source File: _knockoff.py From ibllib with MIT License | 6 votes |
def _get_knmat(exog, xcov, sl): # Utility function, see equation 2.2 of Barber & Candes. nobs, nvar = exog.shape ash = np.linalg.inv(xcov) ash *= -np.outer(sl, sl) i, j = np.diag_indices(nvar) ash[i, j] += 2 * sl umat = np.random.normal(size=(nobs, nvar)) u, _ = np.linalg.qr(exog) umat -= np.dot(u, np.dot(u.T, umat)) umat, _ = np.linalg.qr(umat) ashr, xc, _ = np.linalg.svd(ash, 0) ashr *= np.sqrt(xc) ashr = ashr.T ex = (sl[:, None] * np.linalg.solve(xcov, exog.T)).T exogn = exog - ex + np.dot(umat, ashr) return exogn
Example #2
Source File: test_basicoperators.py From pylops with GNU Lesser General Public License v3.0 | 6 votes |
def test_Flip2D(par): """Dot-test, forward and adjoint for Flip operator on 2d signal """ np.random.seed(10) x = {} x['0'] = np.outer(np.arange(par['ny']), np.ones(par['nx'])) + \ par['imag'] * np.outer(np.arange(par['ny']), np.ones(par['nx'])) x['1'] = np.outer(np.ones(par['ny']), np.arange(par['nx'])) + \ par['imag'] * np.outer(np.ones(par['ny']), np.arange(par['nx'])) for dir in [0, 1]: Fop = Flip(par['ny']*par['nx'], dims=(par['ny'], par['nx']), dir=dir, dtype=par['dtype']) assert dottest(Fop, par['ny']*par['nx'], par['ny']*par['nx']) y = Fop * x[str(dir)].flatten() xadj = Fop.H * y.flatten() xadj = xadj.reshape(par['ny'], par['nx']) assert_array_equal(x[str(dir)], xadj)
Example #3
Source File: test_purification.py From tenpy with GNU General Public License v3.0 | 6 votes |
def gen_disentangler_psi_prod(psiP, psiQ): """generate a PurificationMPS as tensorproduct (psi_P x psi_Q). psiQ should have the same `sites` as psiP. """ L = psiP.L Bs = [] for i in range(L): BP = psiP.get_B(i) BQ = psiQ.get_B(i) B2 = npc.outer(BP, BQ.conj()) B2 = B2.combine_legs([['vL', 'vL*'], ['vR', 'vR*']], qconj=[+1, -1]) B2.ireplace_labels(['(vL.vL*)', '(vR.vR*)', 'p*'], ['vL', 'vR', 'q']) Bs.append(B2) Ss = [np.outer(S, S2).flatten() for S, S2 in zip(psiP._S, psiQ._S)] return purification_mps.PurificationMPS(psiP.sites, Bs, Ss)
Example #4
Source File: test_core.py From recruit with Apache License 2.0 | 6 votes |
def test_TakeTransposeInnerOuter(self): # Test of take, transpose, inner, outer products x = arange(24) y = np.arange(24) x[5:6] = masked x = x.reshape(2, 3, 4) y = y.reshape(2, 3, 4) assert_equal(np.transpose(y, (2, 0, 1)), transpose(x, (2, 0, 1))) assert_equal(np.take(y, (2, 0, 1), 1), take(x, (2, 0, 1), 1)) assert_equal(np.inner(filled(x, 0), filled(y, 0)), inner(x, y)) assert_equal(np.outer(filled(x, 0), filled(y, 0)), outer(x, y)) y = array(['abc', 1, 'def', 2, 3], object) y[2] = masked t = take(y, [0, 3, 4]) assert_(t[0] == 'abc') assert_(t[1] == 2) assert_(t[2] == 3)
Example #5
Source File: test_common.py From pyscf with Apache License 2.0 | 6 votes |
def tdhf_frozen_mask(eri, kind="ov"): if isinstance(eri.nocc, int): nocc = int(eri.model.mo_occ.sum() // 2) mask = eri.space else: nocc = numpy.array(tuple(int(i.sum() // 2) for i in eri.model.mo_occ)) assert numpy.all(nocc == nocc[0]) assert numpy.all(eri.space == eri.space[0, numpy.newaxis, :]) nocc = nocc[0] mask = eri.space[0] mask_o = mask[:nocc] mask_v = mask[nocc:] if kind == "ov": mask_ov = numpy.outer(mask_o, mask_v).reshape(-1) return numpy.tile(mask_ov, 2) elif kind == "1ov": return numpy.outer(mask_o, mask_v).reshape(-1) elif kind == "sov": mask_ov = numpy.outer(mask_o, mask_v).reshape(-1) nk = len(eri.model.mo_occ) return numpy.tile(mask_ov, 2 * nk ** 2) elif kind == "o,v": return mask_o, mask_v
Example #6
Source File: interpolation.py From scarlet with MIT License | 6 votes |
def quintic_spline(dx, dtype=np.float64): def inner(x): return 1 + x ** 3 / 12 * (-95 + 138 * x - 55 * x ** 2) def middle(x): return (x - 1) * (x - 2) / 24 * (-138 + 348 * x - 249 * x ** 2 + 55 * x ** 3) def outer(x): return (x - 2) * (x - 3) ** 2 / 24 * (-54 + 50 * x - 11 * x ** 2) window = np.arange(-3, 4) x = np.abs(dx - window) result = np.piecewise( x, [x <= 1, (x > 1) & (x <= 2), (x > 2) & (x <= 3)], [lambda x: inner(x), lambda x: middle(x), lambda x: outer(x)], ) return result, window
Example #7
Source File: linear_svm.py From discomll with Apache License 2.0 | 6 votes |
def map_fit(interface, state, label, inp): """ Function calculates matrices ete and etde for every sample, aggregates and output them. """ import numpy as np ete, etde = 0, 0 out = interface.output(0) for row in inp: row = row.strip().split(state["delimiter"]) # split row if len(row) > 1: # check if row is empty # intercept term is added to every sample x = np.array([(0 if v in state["missing_vals"] else float(v)) for i, v in enumerate(row) if i in state["X_indices"]] + [-1]) # map label value to 1 or -1. If label does not match set error y = 1 if state["y_map"][0] == row[state["y_index"]] else -1 if state["y_map"][1] == row[ state["y_index"]] else "Error" ete += np.outer(x, x) etde += x * y out.add("etde", etde) for i, row in enumerate(ete): out.add(i, row)
Example #8
Source File: test_basicoperators.py From pylops with GNU Lesser General Public License v3.0 | 6 votes |
def test_Symmetrize2D(par): """Dot-test, forward and inverse for Symmetrize operator on 2d signal """ np.random.seed(10) x = {} x['0'] = np.outer(np.arange(par['ny']), np.ones(par['nx'])) + \ par['imag'] * np.outer(np.arange(par['ny']), np.ones(par['nx'])) x['1'] = np.outer(np.ones(par['ny']), np.arange(par['nx'])) + \ par['imag'] * np.outer(np.ones(par['ny']), np.arange(par['nx'])) for dir in [0, 1]: Sop = Symmetrize(par['ny']*par['nx'], dims=(par['ny'], par['nx']), dir=dir, dtype=par['dtype']) y = Sop * x[str(dir)].flatten() assert dottest(Sop, y.size, par['ny']*par['nx']) xinv = Sop / y assert_array_almost_equal(x[str(dir)].ravel(), xinv, decimal=3)
Example #9
Source File: transform_utils.py From robosuite with MIT License | 6 votes |
def quat2mat(quaternion): """ Converts given quaternion (x, y, z, w) to matrix. Args: quaternion: vec4 float angles Returns: 3x3 rotation matrix """ q = np.array(quaternion, dtype=np.float32, copy=True)[[3, 0, 1, 2]] n = np.dot(q, q) if n < EPS: return np.identity(3) q *= math.sqrt(2.0 / n) q = np.outer(q, q) return np.array( [ [1.0 - q[2, 2] - q[3, 3], q[1, 2] - q[3, 0], q[1, 3] + q[2, 0]], [q[1, 2] + q[3, 0], 1.0 - q[1, 1] - q[3, 3], q[2, 3] - q[1, 0]], [q[1, 3] - q[2, 0], q[2, 3] + q[1, 0], 1.0 - q[1, 1] - q[2, 2]], ] )
Example #10
Source File: fermionic_simulation.py From OpenFermion-Cirq with Apache License 2.0 | 6 votes |
def _eigen_components(self): components = [(0, np.diag([1, 1, 1, 0, 1, 0, 0, 1]))] nontrivial_part = np.zeros((3, 3), dtype=np.complex128) for ij, w in zip([(1, 2), (0, 2), (0, 1)], self.weights): nontrivial_part[ij] = w nontrivial_part[ij[::-1]] = w.conjugate() assert np.allclose(nontrivial_part, nontrivial_part.conj().T) eig_vals, eig_vecs = np.linalg.eigh(nontrivial_part) for eig_val, eig_vec in zip(eig_vals, eig_vecs.T): exp_factor = -eig_val / np.pi proj = np.zeros((8, 8), dtype=np.complex128) nontrivial_indices = np.array([3, 5, 6], dtype=np.intp) proj[nontrivial_indices[:, np.newaxis], nontrivial_indices] = ( np.outer(eig_vec.conjugate(), eig_vec)) components.append((exp_factor, proj)) return components
Example #11
Source File: linear_regression.py From discomll with Apache License 2.0 | 6 votes |
def map_fit(interface, state, label, inp): import numpy as np a, b = 0, 0 out = interface.output(0) for row in inp: row = row.strip().split(state["delimiter"]) if len(row) > 1: x = np.array([1] + [(0 if v in state["missing_vals"] else float(v)) for i, v in enumerate(row) if i in state["X_indices"]]) y = float(row[state["y_index"]]) a += np.outer(x, x) b += x * y out.add("b", b) for i, row in enumerate(a): out.add(i, row)
Example #12
Source File: locally_weighted_linear_regression.py From discomll with Apache License 2.0 | 6 votes |
def map_fit(interface, state, label, inp): import numpy as np combiner = dict([(k, [0, 0]) for k in state["samples"].keys()]) out = interface.output(0) for row in inp: row = row.strip().split(state["delimiter"]) if len(row) > 1: x = np.array([1] + [(0 if v in state["missing_vals"] else float(v)) for i, v in enumerate(row) if i in state["X_indices"]]) y = float(row[state["y_index"]]) for test_id, x1 in state["samples"].iteritems(): w = np.exp(np.dot(-(x1 - x).transpose(), x1 - x) / state["tau"]) combiner[test_id][0] += w * np.outer(x, x) combiner[test_id][1] += w * x * y for k, v in combiner.iteritems(): out.add(k + state["delimiter"] + "b", v[1]) for i in range(len(v[0])): out.add(k + state["delimiter"] + "A" + state["delimiter"] + str(i), v[0][i])
Example #13
Source File: test_common.py From pyscf with Apache License 2.0 | 6 votes |
def tdhf_frozen_mask(eri, kind="ov"): if isinstance(eri.nocc, int): nocc = int(eri.model.mo_occ.sum() // 2) mask = eri.space else: nocc = numpy.array(tuple(int(i.sum() // 2) for i in eri.model.mo_occ)) assert numpy.all(nocc == nocc[0]) assert numpy.all(eri.space == eri.space[0, numpy.newaxis, :]) nocc = nocc[0] mask = eri.space[0] mask_o = mask[:nocc] mask_v = mask[nocc:] if kind == "ov": mask_ov = numpy.outer(mask_o, mask_v).reshape(-1) return numpy.tile(mask_ov, 2) elif kind == "1ov": return numpy.outer(mask_o, mask_v).reshape(-1) elif kind == "sov": mask_ov = numpy.outer(mask_o, mask_v).reshape(-1) nk = len(eri.model.mo_occ) return numpy.tile(mask_ov, 2 * nk ** 2) elif kind == "o,v": return mask_o, mask_v
Example #14
Source File: test_common.py From pyscf with Apache License 2.0 | 6 votes |
def tdhf_frozen_mask(eri, kind="ov"): if isinstance(eri.nocc, int): nocc = int(eri.model.mo_occ.sum() // 2) mask = eri.space else: nocc = numpy.array(tuple(int(i.sum() // 2) for i in eri.model.mo_occ)) assert numpy.all(nocc == nocc[0]) assert numpy.all(eri.space == eri.space[0, numpy.newaxis, :]) nocc = nocc[0] mask = eri.space[0] mask_o = mask[:nocc] mask_v = mask[nocc:] if kind == "ov": mask_ov = numpy.outer(mask_o, mask_v).reshape(-1) return numpy.tile(mask_ov, 2) elif kind == "1ov": return numpy.outer(mask_o, mask_v).reshape(-1) elif kind == "sov": mask_ov = numpy.outer(mask_o, mask_v).reshape(-1) nk = len(eri.model.mo_occ) return numpy.tile(mask_ov, 2 * nk ** 2) elif kind == "o,v": return mask_o, mask_v
Example #15
Source File: test_old_ma.py From recruit with Apache License 2.0 | 6 votes |
def test_testTakeTransposeInnerOuter(self): # Test of take, transpose, inner, outer products x = arange(24) y = np.arange(24) x[5:6] = masked x = x.reshape(2, 3, 4) y = y.reshape(2, 3, 4) assert_(eq(np.transpose(y, (2, 0, 1)), transpose(x, (2, 0, 1)))) assert_(eq(np.take(y, (2, 0, 1), 1), take(x, (2, 0, 1), 1))) assert_(eq(np.inner(filled(x, 0), filled(y, 0)), inner(x, y))) assert_(eq(np.outer(filled(x, 0), filled(y, 0)), outer(x, y))) y = array(['abc', 1, 'def', 2, 3], object) y[2] = masked t = take(y, [0, 3, 4]) assert_(t[0] == 'abc') assert_(t[1] == 2) assert_(t[2] == 3)
Example #16
Source File: stats.py From bayeslite with Apache License 2.0 | 6 votes |
def chi2_contingency(contingency): """Pearson chi^2 test of independence statistic on contingency table. https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test#Test_of_independence """ contingency = numpy.array(contingency, dtype=int, ndmin=2) assert contingency.ndim == 2 n = float(numpy.sum(contingency)) n0 = contingency.shape[0] n1 = contingency.shape[1] assert 0 < n0 assert 0 < n1 p0 = numpy.sum(contingency, axis=1)/n p1 = numpy.sum(contingency, axis=0)/n expected = n * numpy.outer(p0, p1) return numpy.sum(((contingency - expected)**2)/expected)
Example #17
Source File: test_dwiparams.py From me-ica with GNU Lesser General Public License v2.1 | 6 votes |
def test_b2q(): # conversion of b matrix to q q = np.array([1,2,3]) s = np.sqrt(np.sum(q * q)) # vector norm B = np.outer(q, q) assert_array_almost_equal(q*s, B2q(B)) q = np.array([1,2,3]) # check that the sign of the vector as positive x convention B = np.outer(-q, -q) assert_array_almost_equal(q*s, B2q(B)) q = np.array([-1, 2, 3]) B = np.outer(q, q) assert_array_almost_equal(-q*s, B2q(B)) B = np.eye(3) * -1 assert_raises(ValueError, B2q, B) # no error if we up the tolerance q = B2q(B, tol=1)
Example #18
Source File: utils_image.py From KAIR with MIT License | 6 votes |
def ssim(img1, img2): C1 = (0.01 * 255)**2 C2 = (0.03 * 255)**2 img1 = img1.astype(np.float64) img2 = img2.astype(np.float64) kernel = cv2.getGaussianKernel(11, 1.5) window = np.outer(kernel, kernel.transpose()) mu1 = cv2.filter2D(img1, -1, window)[5:-5, 5:-5] # valid mu2 = cv2.filter2D(img2, -1, window)[5:-5, 5:-5] mu1_sq = mu1**2 mu2_sq = mu2**2 mu1_mu2 = mu1 * mu2 sigma1_sq = cv2.filter2D(img1**2, -1, window)[5:-5, 5:-5] - mu1_sq sigma2_sq = cv2.filter2D(img2**2, -1, window)[5:-5, 5:-5] - mu2_sq sigma12 = cv2.filter2D(img1 * img2, -1, window)[5:-5, 5:-5] - mu1_mu2 ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2)) return ssim_map.mean()
Example #19
Source File: timer_comparison.py From recruit with Apache License 2.0 | 6 votes |
def test_4(self): """ Test of take, transpose, inner, outer products. """ x = self.arange(24) y = np.arange(24) x[5:6] = self.masked x = x.reshape(2, 3, 4) y = y.reshape(2, 3, 4) assert self.allequal(np.transpose(y, (2, 0, 1)), self.transpose(x, (2, 0, 1))) assert self.allequal(np.take(y, (2, 0, 1), 1), self.take(x, (2, 0, 1), 1)) assert self.allequal(np.inner(self.filled(x, 0), self.filled(y, 0)), self.inner(x, y)) assert self.allequal(np.outer(self.filled(x, 0), self.filled(y, 0)), self.outer(x, y)) y = self.array(['abc', 1, 'def', 2, 3], object) y[2] = self.masked t = self.take(y, [0, 3, 4]) assert t[0] == 'abc' assert t[1] == 2 assert t[2] == 3
Example #20
Source File: test_optimization_methods.py From simnibs with GNU General Public License v3.0 | 6 votes |
def optimization_variables_avg_QCQP(): l = np.array([4, 1, 1, -5, 3], dtype=float) A = np.array([[1, 2, 3, 4], [3, 1, 2, 2], [2, 3, 1, 1], [1, 3, 5, 1]], dtype=float) A = np.vstack([-np.mean(A, axis=1), A - np.mean(A, axis=1)]) Q = A.dot(A.T) A_in = np.array([[1, 5, 2, 4], [5, 2, 1, 2], [0, 1, 1, 1], [2, 4, 3, 5]], dtype=float) A_in = np.vstack([-np.mean(A_in, axis=1), A_in - np.mean(A_in, axis=1)]) Q_in = A_in.dot(A_in.T) Q_in += np.outer(l, l) return l, Q, np.ones(5), Q_in
Example #21
Source File: test_optimization_methods.py From simnibs with GNU General Public License v3.0 | 6 votes |
def test_both_limit_angle_Q_iteration(self, optimization_variables_avg_QCQP): l, Q, A, Q_in = optimization_variables_avg_QCQP # l, Q, A = optimization_variables_avg # Q_in = 6 * np.eye(len(l)) + np.outer(l, l) max_angle = 20 m = 2e-3 m1 = 4e-3 f = .01 x = optimization_methods.optimize_focality(l, Q, f, max_el_current=m, max_total_current=m1, Qin=Q_in, max_angle=max_angle) x_sp = optimize_focality( l, Q, f, max_el_current=m, max_total_current=m1, Qin=Q_in, max_angle=max_angle) assert np.linalg.norm(x, 1) <= 2 * m1 + 1e-4 assert np.all(np.abs(x) <= m + 1e-4) assert np.isclose(np.sum(x), 0) assert np.isclose(l.dot(x), f) assert np.arccos(l.dot(x) / np.sqrt(x.dot(Q_in).dot(x))) <= np.deg2rad(max_angle) assert np.allclose(x.dot(Q.dot(x)), x_sp.dot(Q.dot(x_sp)), rtol=1e-4, atol=1e-5)
Example #22
Source File: misc.py From simnibs with GNU General Public License v3.0 | 6 votes |
def mutcoh(A): """ mutcoh calculates the mutual coherence of a matrix A, i.e. the cosine of the smallest angle between two columns mutual_coherence = mutcoh(A) Input: A ... m x n matrix Output: mutual_coherence """ T = np.dot(A.conj().T,A) s = np.sqrt(np.diag(T)) S = np.diag(s) mutual_coherence = np.max(1.0*(T-S)/np.outer(s,s)) return mutual_coherence
Example #23
Source File: test_choice_calcs.py From pylogit with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_robust_outer_product(self): """ Ensure that robust_outer_product returns the expected results. Unfortunately, I cannot find a good case now where using the regular outer product gives incorrect results. However without a compelling reason to remove the function, I'll trust my earlier judgement in creating it in the first place. """ # Define a vector whose outer product we want to take x = np.array([1e-100, 0.01]) outer_product = np.outer(x, x) robust_outer_product = cc.robust_outer_product(x, x) # Perform the desired tests self.assertIsInstance(robust_outer_product, np.ndarray) self.assertEqual(robust_outer_product.shape, outer_product.shape) npt.assert_allclose(outer_product, robust_outer_product) return None
Example #24
Source File: choice_calcs.py From pylogit with BSD 3-Clause "New" or "Revised" License | 6 votes |
def calc_asymptotic_covariance(hessian, fisher_info_matrix): """ Parameters ---------- hessian : 2D ndarray. It should have shape `(num_vars, num_vars)`. It is the matrix of second derivatives of the total loss across the dataset, with respect to each pair of coefficients being estimated. fisher_info_matrix : 2D ndarray. It should have a shape of `(num_vars, num_vars)`. It is the approximation of the negative of the expected hessian formed by taking the outer product of (each observation's gradient of the loss function) with itself, and then summing across all observations. Returns ------- huber_white_matrix : 2D ndarray. Will have shape `(num_vars, num_vars)`. The entries in the returned matrix are calculated by the following formula: `hess_inverse * fisher_info_matrix * hess_inverse`. """ # Calculate the inverse of the hessian hess_inv = scipy.linalg.inv(hessian) return np.dot(hess_inv, np.dot(fisher_info_matrix, hess_inv))
Example #25
Source File: choice_calcs.py From pylogit with BSD 3-Clause "New" or "Revised" License | 6 votes |
def robust_outer_product(vec_1, vec_2): """ Calculates a 'robust' outer product of two vectors that may or may not contain very small values. Parameters ---------- vec_1 : 1D ndarray vec_2 : 1D ndarray Returns ------- outer_prod : 2D ndarray. The outer product of vec_1 and vec_2 """ mantissa_1, exponents_1 = np.frexp(vec_1) mantissa_2, exponents_2 = np.frexp(vec_2) new_mantissas = mantissa_1[None, :] * mantissa_2[:, None] new_exponents = exponents_1[None, :] + exponents_2[:, None] return new_mantissas * np.exp2(new_exponents)
Example #26
Source File: transformations.py From rai-python with MIT License | 6 votes |
def reflection_matrix(point, normal): """Return matrix to mirror at plane defined by point and normal vector. >>> v0 = numpy.random.random(4) - 0.5 >>> v0[3] = 1.0 >>> v1 = numpy.random.random(3) - 0.5 >>> R = reflection_matrix(v0, v1) >>> numpy.allclose(2., numpy.trace(R)) True >>> numpy.allclose(v0, numpy.dot(R, v0)) True >>> v2 = v0.copy() >>> v2[:3] += v1 >>> v3 = v0.copy() >>> v2[:3] -= v1 >>> numpy.allclose(v2, numpy.dot(R, v3)) True """ normal = unit_vector(normal[:3]) M = numpy.identity(4) M[:3, :3] -= 2.0 * numpy.outer(normal, normal) M[:3, 3] = (2.0 * numpy.dot(point[:3], normal)) * normal return M
Example #27
Source File: transformations.py From cozmo_driver with Apache License 2.0 | 6 votes |
def reflection_matrix(point, normal): """Return matrix to mirror at plane defined by point and normal vector. >>> v0 = numpy.random.random(4) - 0.5 >>> v0[3] = 1.0 >>> v1 = numpy.random.random(3) - 0.5 >>> R = reflection_matrix(v0, v1) >>> numpy.allclose(2., numpy.trace(R)) True >>> numpy.allclose(v0, numpy.dot(R, v0)) True >>> v2 = v0.copy() >>> v2[:3] += v1 >>> v3 = v0.copy() >>> v2[:3] -= v1 >>> numpy.allclose(v2, numpy.dot(R, v3)) True """ normal = unit_vector(normal[:3]) M = numpy.identity(4) M[:3, :3] -= 2.0 * numpy.outer(normal, normal) M[:3, 3] = (2.0 * numpy.dot(point[:3], normal)) * normal return M
Example #28
Source File: transformations.py From rai-python with MIT License | 6 votes |
def shear_matrix(angle, direction, point, normal): """Return matrix to shear by angle along direction vector on shear plane. The shear plane is defined by a point and normal vector. The direction vector must be orthogonal to the plane's normal vector. A point P is transformed by the shear matrix into P" such that the vector P-P" is parallel to the direction vector and its extent is given by the angle of P-P'-P", where P' is the orthogonal projection of P onto the shear plane. >>> angle = (random.random() - 0.5) * 4*math.pi >>> direct = numpy.random.random(3) - 0.5 >>> point = numpy.random.random(3) - 0.5 >>> normal = numpy.cross(direct, numpy.random.random(3)) >>> S = shear_matrix(angle, direct, point, normal) >>> numpy.allclose(1.0, numpy.linalg.det(S)) True """ normal = unit_vector(normal[:3]) direction = unit_vector(direction[:3]) if abs(numpy.dot(normal, direction)) > 1e-6: raise ValueError("direction and normal vectors are not orthogonal") angle = math.tan(angle) M = numpy.identity(4) M[:3, :3] += angle * numpy.outer(direction, normal) M[:3, 3] = -angle * numpy.dot(point[:3], normal) * direction return M
Example #29
Source File: test_mps.py From tenpy with GNU General Public License v3.0 | 6 votes |
def test_expectation_value_multisite(): s = spin_half psi = mps.MPS.from_singlets(s, 6, [(0, 1), (2, 3), (4, 5)], lonely=[], bc='finite') SpSm = npc.outer(s.Sp.replace_labels(['p', 'p*'], ['p0', 'p0*']), s.Sm.replace_labels(['p', 'p*'], ['p1', 'p1*'])) psi1 = psi.copy() ev = psi.expectation_value(SpSm) npt.assert_almost_equal(ev, [-0.5, 0., -0.5, 0., -0.5]) env1 = mps.MPSEnvironment(psi1, psi) ev = env1.expectation_value(SpSm) npt.assert_almost_equal(ev, [-0.5, 0., -0.5, 0., -0.5]) psi1.apply_local_op(2, SpSm) # multi-site operator ev = psi1.expectation_value(SpSm) # normalized! npt.assert_almost_equal(ev, [-0.5, 0., 0.0, 0., -0.5]) env1 = mps.MPSEnvironment(psi1, psi) ev = env1.expectation_value(SpSm) / psi1.overlap(psi) # normalize npt.assert_almost_equal(ev, [-0.5, 0., -1., 0., -0.5])
Example #30
Source File: distributionfunction.py From pytim with GNU General Public License v3.0 | 5 votes |
def _determine_weights(self, fg1, fg2): # both are (arrays of) scalars if len(fg1.shape) == 1 and len(fg2.shape) == 1: weights = np.outer(fg1, fg2) # both are (arrays of) vectors elif len(fg1.shape) == 2 and len(fg2.shape) == 2: # TODO: tests on the second dimension... weights = np.dot(fg1, fg2.T) else: raise Exception("Error, shape of the observable output not handled" "in RDF") return weights.ravel()