def func(theta, i):
     # ith eigenvalue of K
     K = np.zeros((n, n))
     _ratematrix.build_ratemat(np.exp(theta), n, None, K)
     w = np.real(scipy.linalg.eigvals(K))
     w = np.sort(w)
     return w[i]
Esempio n. 2
0
 def func(theta, i):
     # ith eigenvalue of K
     K = np.zeros((n, n))
     _ratematrix.build_ratemat(theta, n, K)
     w = np.real(scipy.linalg.eigvals(K))
     w = np.sort(w)
     return w[i]
 def g(i):
     h = 1e-7
     e = np.zeros_like(exp_sp)
     e[i] = h
     K1 = np.zeros((n, n))
     K2 = np.zeros((n, n))
     _ratematrix.build_ratemat(exp_sp, n, inds_sp, K1)
     _ratematrix.build_ratemat(np.exp(np.log(exp_sp) + e), n, inds_sp, K2)
     return np.sum(np.multiply(A, (K2 - K1) / h))
 def g(i):
     h = 1e-7
     e = np.zeros_like(exptheta)
     e[i] = h
     K1 = np.zeros((n, n))
     K2 = np.zeros((n, n))
     _ratematrix.build_ratemat(exptheta, n, None, K1)
     _ratematrix.build_ratemat(np.exp(np.log(exptheta) + e), n, None, K2)
     return np.sum(np.multiply(A, (K2 - K1) / h)), (K2 - K1) / h
def test_build_ratemat_1():
    # test build_ratemat in sparse mode vs. dense mode
    n = 4
    exptheta = dense_exptheta(n)
    u = np.arange(n*(n-1)/2 + n).astype(np.intp)
    K1 = np.zeros((n, n))
    K2 = np.zeros((n, n))

    _ratematrix.build_ratemat(exptheta, n, u, K1)
    _ratematrix.build_ratemat(exptheta, n, None, K2)
    np.testing.assert_array_equal(K1, K2)
def test_build_ratemat_2():
    # test build_ratemat in sparse mode vs. dense mode
    n = 4
    exp_d, exp_sp, inds_sp = sparse_exptheta(n)

    K1 = np.zeros((n, n))
    K2 = np.zeros((n, n))

    _ratematrix.build_ratemat(exp_sp, n, inds_sp, K1)
    _ratematrix.build_ratemat(exp_d, n, None, K2)

    np.testing.assert_array_equal(K1, K2)
def test_build_ratemat_1():
    # test build_ratemat
    n = 4
    theta = example_theta(n)
    K = np.zeros((n, n))
    _ratematrix.build_ratemat(theta, n, K)

    # diagonal entries are negative
    assert np.all(np.diag(K) < 0)
    # off diagonal entries are non-negative
    assert np.all(np.extract(1-np.eye(n), K) >= 0)
    # row-sums are 0
    np.testing.assert_array_almost_equal(np.sum(K, axis=1), 0)
Esempio n. 8
0
def test_build_ratemat():
    # test build_ratemat
    n = 4
    theta = example_theta(n)
    K = np.zeros((n, n))
    _ratematrix.build_ratemat(theta, n, K)

    # diagonal entries are negative
    assert np.all(np.diag(K) < 0)
    # off diagonal entries are non-negative
    assert np.all(np.extract(1 - np.eye(n), K) >= 0)
    # row-sums are 0
    np.testing.assert_array_almost_equal(np.sum(K, axis=1), 0)
    def grad(theta, i):
        # gradient of the ith eigenvalue of K with respect to theta
        K = np.zeros((n, n))
        _ratematrix.build_ratemat(np.exp(theta), n, None, K)
        w, V = scipy.linalg.eig(K)
        order = np.argsort(np.real(w))

        V = np.real(np.ascontiguousarray(V[:, order]))
        U = np.ascontiguousarray(scipy.linalg.inv(V).T)

        g = np.zeros(len(theta))

        for u in range(len(theta)):
            dKu = np.zeros((n, n))
            _ratematrix.dK_dtheta_A(np.exp(theta), n, u, None, None, dKu)
            out = np.zeros(n)
            temp = np.zeros(n)
            _ratematrix.dw_du(dKu, U, V, n, temp, out)
            g[u] = out[i]
        return g
Esempio n. 10
0
    def grad(theta, i):
        # gradient of the ith eigenvalue of K with respect to theta
        K = np.zeros((n, n))
        _ratematrix.build_ratemat(theta, n, K)
        w, V = scipy.linalg.eig(K)
        order = np.argsort(np.real(w))

        V = np.real(np.ascontiguousarray(V[:, order]))
        U = np.ascontiguousarray(scipy.linalg.inv(V).T)

        g = np.zeros(len(theta))

        for u in range(len(theta)):
            dKu = np.zeros((n, n))
            _ratematrix.dK_dtheta_ij(theta, n, u, None, dKu)
            out = np.zeros(n)
            temp = np.zeros(n)
            _ratematrix.dw_du(dKu, U, V, n, temp, out)
            g[u] = out[i]
        return g
Esempio n. 11
0
 def func(x, i, j):
     # (i,j) entry of the rate matrix
     K = np.zeros((n, n))
     _ratematrix.build_ratemat(x, n, K)
     return K[i, j]
Esempio n. 12
0
 def func(x, i, j):
     # (i,j) entry of the rate matrix
     K = np.zeros((n, n))
     _ratematrix.build_ratemat(x, n, K)
     return K[i, j]