code: def truncatedSVD(data, k=50):
      """Truncated SVD on input data.
  
      Parameters
      ----------
      data :
          input matrix to be decomposed
      k : int
          number of singular values and vectors to compute.
  
      Returns
      -------
      numpy.array
          reconstructed matrix.
      """
      print("=== GCN-SVD: rank={} ===".format(k))
      if sp.issparse(data):
          data = data.asfptype()
          U, S, V = sp.linalg.svds(data, k=k)
          print("rank_after = {}".format(len(S.nonzero()[0])))
          diag_S = np.diag(S)
      else:
          U, S, V = np.linalg.svd(data)
          U = U[:, :k]
          S = S[:k]
          V = V[:k, :]
          print("rank_before = {}".format(len(S.nonzero()[0])))
          diag_S = np.diag(S)
          print("rank_after = {}".format(len(diag_S.nonzero()[0])))
  
      return U @ diag_S @ V
  
file_path: AutoGL/autogl/module/preprocessing/structure_engineering/_gcn_svd.py
imports: import scipy.sparse
  import numpy
  from numba import njit
  from .._data_preprocessor_registry import DataPreprocessorUniversalRegistry
  from ._structure_engineer import StructureEngineer, get_feature, get_edges, set_edges, to_adjacency_list, to_adjacency_matrix, LOGGER
  import torch
label_desc: Use image node_id 1 for calling a global function with example usage: truncatedSVD(data, k) and returns: unknown