def test_from_csc162x162(): from siconos.numerics import SBM_from_csparse, SBM_get_value, NM_display from scipy.sparse import csr_matrix, linalg try: from scipy.sparse import load_npz except: return 0 M = load_npz(os.path.join(working_dir, 'data/csc162x162.npz')) #M = load_npz('data/csc162x162.npz') blocksize = 9 r, SBM = SBM_from_csparse(blocksize, M) assert SBM_get_value(SBM, 0, 0) == M[0, 0] assert SBM_get_value(SBM, 161, 161) == M[161, 161]
def test_SBM_from_csparse1(): from siconos.numerics import SBM_from_csparse, SBM_get_value, SBM_new_from_file, SBM_print, SBM_to_sparse from scipy.sparse import csr_matrix, lil_matrix A = lil_matrix((100, 100)) A.setdiag(range(100)) A[0, :10] = range(10) A[1, 10:20] = A[0, :10] M = csr_matrix(A) v, SBM = SBM_from_csparse(2, M) for i in range(M.shape[0]): for j in range(M.shape[1]): assert abs(SBM_get_value(SBM, i, j) - M[i, j]) < eps
def test_SBM_to_SBM_from_csparse(): from siconos.numerics import SBM_get_value, SBM_new_from_file, SBM_print, SBM_to_sparse, SBM_from_csparse from scipy.sparse.csr import csr_matrix SBM1 = SBM_new_from_file(os.path.join(working_dir, 'data/SBM1.dat')) r, SPARSE = SBM_to_sparse(SBM1) v, SBM2 = SBM_from_csparse(3, SPARSE) assert SBM1.nbblocks == SBM2.nbblocks assert SBM1.blocknumber0 == SBM2.blocknumber0 assert SBM1.blocknumber1 == SBM2.blocknumber1 for i in range(SPARSE.shape[0]): for j in range(SPARSE.shape[1]): assert (SBM_get_value(SBM1, i, j) - SBM_get_value(SBM2, i, j)) < eps
def test_from_csr2(): from siconos.numerics import SBM_from_csparse, SBM_get_value from scipy.sparse.csr import csr_matrix M = csr_matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(M.indices) print(M.indptr) print(M.data) blocksize = 1 r, SBM = SBM_from_csparse(blocksize, M) assert SBM_get_value(SBM, 0, 0) == 1 assert SBM_get_value(SBM, 0, 1) == 2 assert SBM_get_value(SBM, 0, 2) == 3 assert SBM_get_value(SBM, 1, 0) == 4 assert SBM_get_value(SBM, 1, 1) == 5 assert SBM_get_value(SBM, 1, 2) == 6 assert SBM_get_value(SBM, 2, 0) == 7 assert SBM_get_value(SBM, 2, 1) == 8 assert SBM_get_value(SBM, 2, 2) == 9