code: def get_maps(A):
      
  
      N = A.shape[0]
      flat_map = []
      for i in range(1, N):
          for j in range(1, N):
              flat_map.append([i, j])
  
      flat_map = np.array(flat_map)
  
      square_map = np.zeros(A.shape, 'int')
  
      for k in range((N - 1) ** 2):
          i, j = flat_map[k]
          square_map[i, j] = k
  
      return flat_map, square_map
docs: Get mappings from the square array A to the flat vector of parameters
      alpha.
  
      Helper function for PCCA+ optimization.
  
      Parameters
      ----------
      A : ndarray
          The transformation matrix A.
  
      Returns
      -------
      flat_map : ndarray
          Mapping from flat indices (k) to square (i,j) indices.
      square map : ndarray
          Mapping from square indices (i,j) to flat indices (k).