code: def preprocess_features(features):
      """Row-normalize feature matrix and convert to tuple representation"""
      rowsum = np.array(features.sum(1))
      r_inv = np.power(rowsum, -1).flatten()
      r_inv[np.isinf(r_inv)] = 0.0
      r_mat_inv = sp.diags(r_inv)
      features = r_mat_inv.dot(features)
      if isinstance(features, np.ndarray):
          return features
      else:
          return features.todense(), sparse_to_tuple(features)
  
file_path: dgl/examples/pytorch/mvgrl/node/dataset.py
imports: import dgl
  import networkx
  import numpy
  import scipy.sparse
  import torch
  from dgl.data import CiteseerGraphDataset, CoraGraphDataset, PubmedGraphDataset
  from dgl.nn import APPNPConv
  from scipy.linalg import fractional_matrix_power, inv
  from sklearn.preprocessing import MinMaxScaler
label_desc: Use image node_id 1 for calling a global function with example usage: preprocess_features(features) and returns: features, features,  sparse_to_tuple