Source code for gammagl.utils.spm_calc
import numpy as np
import scipy.sparse as sp
[docs]
def calc_A_norm_hat(edge_index, weights=None):
if weights is None:
weights = np.ones(edge_index.shape[1])
sparse_adj = sp.coo_matrix((weights, (edge_index[0], edge_index[1])))
nnodes = sparse_adj.shape[0]
A = sparse_adj + sp.eye(nnodes)
D_vec = np.sum(A, axis=1).A1
D_vec_invsqrt_corr = 1 / np.sqrt(D_vec)
D_invsqrt_corr = sp.diags(D_vec_invsqrt_corr)
return D_invsqrt_corr @ A @ D_invsqrt_corr