code: def partition_graph(num_community, G, resultdir):
      """
      Performs vertex-cut based graph partitioning and converts the partitioning
      output to DGL input format.
  
      Given a graph, this function will create a folder named ``XCommunities`` where ``X``
      stands for the number of communities.  It will contain ``X`` files named
      ``communityZ.txt`` for each partition Z (from 0 to X-1);
      each such file contains a list of edges assigned to that partition.
      These files constitute the output of Libra graph partitioner.
  
      The folder also contains X subfolders named ``partZ``, each of these folders stores
      DGL/DistGNN graphs for partition Z; these graph files are used as input to
      DistGNN.
  
      The folder also contains a json file which contains partitions' information.
  
      Currently we require the graph's node data to contain the following columns:
  
      * ``features`` for node features.
      * ``label`` for node labels.
      * ``train_mask`` as a boolean mask of training node set.
      * ``val_mask`` as a boolean mask of validation node set.
      * ``test_mask`` as a boolean mask of test node set.
  
      Parameters
      ----------
      num_community : int
          Number of partitions to create.
      G : DGLGraph
          Input graph to be partitioned.
      resultdir : str
          Output location for storing the partitioned graphs.
      """
  
      print("num partitions: ", num_community)
      print("output location: ", resultdir)
  
      ## create ouptut directory
      try:
          os.makedirs(resultdir, mode=0o775, exist_ok=True)
      except:
          raise DGLError(
              "Error: Could not create directory: ", resultdir
          )
  
      tic = time.time()
      print(
          "####################################################################"
      )
      print("Executing parititons: ", num_community)
      ltic = time.time()
      try:
          resultdir = os.path.join(
              resultdir, str(num_community) + "Communities"
          )
          os.makedirs(resultdir, mode=0o775, exist_ok=True)
      except:
          raise DGLError(
              "Error: Could not create sub-directory: ", resultdir
          )
  
      ## Libra partitioning
      libra_partition(num_community, G, resultdir)
  
      ltoc = time.time()
      print(
          "Time taken by {} partitions {:0.4f} sec".format(
              num_community, ltoc - ltic
          )
      )
      print()
  
      toc = time.time()
      print(
          "Generated ",
          num_community,
          " partitions in {:0.4f} sec".format(toc - tic),
          flush=True,
      )
      print("Partitioning completed successfully !!!")
  
file_path: dgl/python/dgl/distgnn/partition/libra_partition.py
imports: import json
  import os
  import time
  import torch
  from dgl import DGLGraph
  from dgl._sparse_ops import libra2dgl_build_adjlist, libra2dgl_build_dict, libra2dgl_set_lr, libra_vertex_cut
  from dgl.base import DGLError
  from dgl.data.utils import save_graphs, save_tensors
label_desc: Use image node_id 2 for calling a global function with example usage: partition_graph(num_community, G, resultdir) without return types