Source code for monalisa.sparse._sparse_mat_from_matlab_sparse

"""Port of src/sparseMat/m/bmSparseMat_matlabSparse2bmSparseMat.m."""

import numpy as np
import scipy.sparse as sp

from monalisa._mat import int32, single
from monalisa.sparse._sparse_mat import SparseMat


[docs] def sparse_mat_from_matlab_sparse(a, N_u, d_u, kernelType, nWin, kernelParam): """Convert a (scipy) sparse matrix to a ``SparseMat`` of type ``'matlab_ind'``.""" a = sp.csr_matrix(a, copy=True) a.eliminate_zeros() a.sort_indices() size_1, size_2 = a.shape b = SparseMat() b.r_size = np.int32(size_2) b.l_size = np.int32(size_1) b.l_nJump = np.int32(size_1) b.r_nJump = np.diff(a.indptr).astype(np.int32)[None, :] b.r_ind = (a.indices.astype(np.int64) + 1).astype(np.int32)[None, :] b.m_val = single(a.data)[None, :] b.N_u = int32(N_u) b.d_u = single(d_u) b.kernel_type = kernelType b.nWin = int32(nWin) b.kernelParam = None if kernelParam is None else single(kernelParam) b.block_type = "void" b.type = "matlab_ind" b.l_squeeze_flag = False return b