def test_LLbar(self):
        x, y = sp.symbols('x y')
        Identity = lambda k: k
        A = lambda k: k.diff(x)
        A_bar = lambda k: k.diff(y)
        sigma = 0.1
        k = sp.exp(-(x - y)**2 / (2 * sigma**2))

        ops = [A, Identity]
        ops_bar = [A_bar, Identity]

        oc = bpdes.operator_compilation.compile_sympy(ops,
                                                      ops_bar,
                                                      k, [[x], [y]],
                                                      mode='cython')

        pts = np.linspace(0, 1, 11)

        interior = pts[1:-1, None]
        bdy = pts[[0, -1], None]

        print(interior.shape, bdy.shape)

        obs = [(interior, None), (bdy, None)]

        llbar = bpdes.collocation.calc_LLbar(ops, ops_bar, obs, oc)

        top_left = llbar[:len(interior), :len(interior)]
        compare_top_left = pairwise.apply(k_x_x_prime, interior, interior,
                                          np.array([sigma]))
        true_np.testing.assert_almost_equal(top_left, compare_top_left)

        bottom_right = llbar[len(interior):, len(interior):]
        compare_bottom_right = pairwise.apply(k_autograd, bdy, bdy,
                                              np.array([sigma]))
        true_np.testing.assert_almost_equal(bottom_right, compare_bottom_right)

        top_right = llbar[:len(interior), len(interior):]
        compare_top_right = pairwise.apply(k_x, interior, bdy,
                                           np.array([sigma]))
        true_np.testing.assert_almost_equal(top_right, compare_top_right)

        bottom_left = llbar[len(interior):, :len(interior)]
        compare_bottom_left = pairwise.apply(k_x_prime, bdy, interior,
                                             np.array([sigma]))
        true_np.testing.assert_almost_equal(bottom_left, compare_bottom_left)
Example #2
0
    def test_pairwise_2d(self):
        def __fun(a, b):
            assert a.shape == b.shape == (2,)
            return np.sum(a*b)

        A = np.array([[0., 1.], [1., 2.]])
        B = np.array([[1., 0.], [1., 2.]])

        res = pairwise.apply(__fun, A, B)
        expected = np.array([[0., 2.], [1., 5.]])
        np.testing.assert_array_equal(res, expected)
Example #3
0
    def test_pairwise_1d(self):
        def __fun(a, b):
            assert a.shape == b.shape == (1,)
            return a * b

        A = np.array([[0., 1.]]).T
        B = np.array([[-1., 1.]]).T

        res = pairwise.apply(__fun, A, B)
        expected = np.array([[0, 0], [-1, 1]])
        np.testing.assert_array_equal(res, expected)
Example #4
0
    def test_timing(self):
        def __fun(a, b):
            return np.sum(a*b)

        A,B = np.mgrid[0:1:100j, 0:1:100j]

        cython_timing = timeit(lambda: pairwise.apply(__fun, A, B), number=10)
        print cython_timing
        python_timing = timeit(lambda: manual_pairwise(__fun, A, B), number=10)
        print python_timing

        self.assertLess(cython_timing, python_timing)
    def test_LLbar(self):
        x, y = sp.symbols("x y")
        Identity = lambda k: k
        A = lambda k: k.diff(x)
        A_bar = lambda k: k.diff(y)
        sigma = 0.1
        k = sp.exp(-(x - y) ** 2 / (2 * sigma ** 2))

        ops = [A, Identity]
        ops_bar = [A_bar, Identity]

        oc = bpdes.operator_compilation.compile_sympy(ops, ops_bar, k, [[x], [y]], mode="cython")

        pts = np.linspace(0, 1, 11)

        interior = pts[1:-1, None]
        bdy = pts[[0, -1], None]

        print(interior.shape, bdy.shape)

        obs = [(interior, None), (bdy, None)]

        llbar = bpdes.collocation.calc_LLbar(ops, ops_bar, obs, oc)

        top_left = llbar[: len(interior), : len(interior)]
        compare_top_left = pairwise.apply(k_x_x_prime, interior, interior, np.array([sigma]))
        true_np.testing.assert_almost_equal(top_left, compare_top_left)

        bottom_right = llbar[len(interior) :, len(interior) :]
        compare_bottom_right = pairwise.apply(k_autograd, bdy, bdy, np.array([sigma]))
        true_np.testing.assert_almost_equal(bottom_right, compare_bottom_right)

        top_right = llbar[: len(interior), len(interior) :]
        compare_top_right = pairwise.apply(k_x, interior, bdy, np.array([sigma]))
        true_np.testing.assert_almost_equal(top_right, compare_top_right)

        bottom_left = llbar[len(interior) :, : len(interior)]
        compare_bottom_left = pairwise.apply(k_x_prime, bdy, interior, np.array([sigma]))
        true_np.testing.assert_almost_equal(bottom_left, compare_bottom_left)
 def __return(x_1, x_2, fun_args=None):
     return pairwise.apply(function, x_1, x_2)
 def __return(x_1, x_2, fun_args=None):
     return pairwise.apply(function, x_1, x_2)
Example #8
0
 def __ret_function(a, b, extra=None):
     return pairwise.apply(sympy_fun, a, b, extra)