code: def vertex_coloring(G, method='MIS'):
      
      G = asgraph(G)
      N = G.shape[0]
  
      coloring = np.empty(N, dtype='intc')
  
      if method == 'MIS':
          fn = amg_core.vertex_coloring_mis
          fn(N, G.indptr, G.indices, coloring)
      elif method == 'JP':
          fn = amg_core.vertex_coloring_jones_plassmann
          fn(N, G.indptr, G.indices, coloring, sp.rand(N))
      elif method == 'LDF':
          fn = amg_core.vertex_coloring_LDF
          fn(N, G.indptr, G.indices, coloring, sp.rand(N))
      else:
          raise ValueError('unknown method (%s)' % method)
  
      return coloring
docs: Compute a vertex coloring of a graph.
  
      Parameters
      ----------
      G : sparse matrix
          Symmetric matrix, preferably in sparse CSR or CSC format
          The nonzeros of G represent the edges of an undirected graph.
      method : string
          Algorithm used to compute the vertex coloring:
  
              * 'MIS' - Maximal Independent Set
              * 'JP'  - Jones-Plassmann (parallel)
              * 'LDF' - Largest-Degree-First (parallel)
  
      Returns
      -------
      coloring : array
          An array of vertex colors (integers beginning at 0)
  
      Notes
      -----
      Diagonal entries in the G (self loops) will be ignored.