def test_matrix_inner(fn): xarr, yarr, x, y = _vectors(fn, 2) sparse_mat = _sparse_matrix(fn) sparse_mat_as_dense = np.asarray(sparse_mat.todense()) dense_mat = _dense_matrix(fn) true_inner_sparse = np.vdot(yarr, np.dot(sparse_mat_as_dense, xarr)) true_inner_dense = np.vdot(yarr, np.dot(dense_mat, xarr)) w_sparse = FnMatrixWeighting(sparse_mat) w_dense = FnMatrixWeighting(dense_mat) assert almost_equal(w_sparse.inner(x, y), true_inner_sparse) assert almost_equal(w_dense.inner(x, y), true_inner_dense) # With free functions w_sparse_inner = weighted_inner(sparse_mat) w_dense_inner = weighted_inner(dense_mat) assert almost_equal(w_sparse_inner(x, y), true_inner_sparse) assert almost_equal(w_dense_inner(x, y), true_inner_dense) # Exponent != 2 -> no inner w_dense = FnMatrixWeighting(dense_mat, exponent=1) with pytest.raises(NotImplementedError): w_dense.inner(x, y)
def test_matrix_inner(fn): [xarr, yarr], [x, y] = example_vectors(fn, 2) sparse_mat = _sparse_matrix(fn) sparse_mat_as_dense = np.asarray(sparse_mat.todense()) dense_mat = _dense_matrix(fn) true_inner_sparse = np.vdot(yarr, np.dot(sparse_mat_as_dense, xarr)) true_inner_dense = np.vdot(yarr, np.dot(dense_mat, xarr)) w_sparse = FnMatrixWeighting(sparse_mat) w_dense = FnMatrixWeighting(dense_mat) assert almost_equal(w_sparse.inner(x, y), true_inner_sparse) assert almost_equal(w_dense.inner(x, y), true_inner_dense) # With free functions w_sparse_inner = weighted_inner(sparse_mat) w_dense_inner = weighted_inner(dense_mat) assert almost_equal(w_sparse_inner(x, y), true_inner_sparse) assert almost_equal(w_dense_inner(x, y), true_inner_dense) # Exponent != 2 -> no inner w_dense = FnMatrixWeighting(dense_mat, exponent=1) with pytest.raises(NotImplementedError): w_dense.inner(x, y)
def test_vector_inner(fn): xarr, yarr, x, y = _vectors(fn, 2) weight_vec = _pos_array(fn) weighting_vec = FnVectorWeighting(weight_vec) true_inner = np.vdot(yarr, xarr * weight_vec) assert almost_equal(weighting_vec.inner(x, y), true_inner) # With free function inner_vec = weighted_inner(weight_vec) assert almost_equal(inner_vec(x, y), true_inner) # Exponent != 2 -> no inner product, should raise with pytest.raises(NotImplementedError): FnVectorWeighting(weight_vec, exponent=1.0).inner(x, y)
def test_vector_inner(fn): [xarr, yarr], [x, y] = example_vectors(fn, 2) weight_vec = _pos_array(fn) weighting_vec = FnVectorWeighting(weight_vec) true_inner = np.vdot(yarr, xarr * weight_vec) assert almost_equal(weighting_vec.inner(x, y), true_inner) # With free function inner_vec = weighted_inner(weight_vec) assert almost_equal(inner_vec(x, y), true_inner) # Exponent != 2 -> no inner product, should raise with pytest.raises(NotImplementedError): FnVectorWeighting(weight_vec, exponent=1.0).inner(x, y)