class_docstr: The supergraph structure in GripNet. Each supergraph is a directed acyclic graph (DAG) containing
  supervertices and superedges.
  
  Args:
      supervertex_list (list[SuperVertex]): a list of supervertices.
      superedge_list (list[SuperEdge]): a list of superedges.
      supervertex_para_setting (dict[str, SuperVertexParaSetting], Optional): the parameter settings for each supervertex.
class_docstr_tok: ["The","supergraph","structure","in","GripNet",".","Each","supergraph","is","a","directed","acyclic","graph","(","DAG",")","containing","supervertices","and","superedges",".","Args",":","supervertex_list","(","list","[","SuperVertex","]",")",":","a","list","of","supervertices",".","superedge_list","(","list","[","SuperEdge","]",")",":","a","list","of","superedges",".","supervertex_para_setting","(","dict","[","str",",","SuperVertexParaSetting","]",",","Optional",")",":","the","parameter","settings","for","each","supervertex","."]
docstr: Process the graph of the supergraph.
docstr_tok: ["Process","the","graph","of","the","supergraph","."]
code: def __process_supergraph__(self):
      r"""
      Process the graph of the supergraph.
      """
      # initialize the supergraph
      self.G = nx.DiGraph()
      self.G.add_edges_from(self.superedge_dict.keys())
  
      # check whether the graph is a DAG
      if not nx.is_directed_acyclic_graph(self.G):
          error_msg = "The supergraph is not a directed acyclic graph."
          logging.error(error_msg)
          raise TypeError(error_msg)
  
      self.num_supervertex = self.G.number_of_nodes()
      self.num_superedge = self.G.number_of_edges()
  
      # get the topological order of the supergraph
      self.topological_order = list(nx.topological_sort(self.G))
  
imports: import logging
  from typing import Dict, List, Optional
  import networkx
  import torch
label_desc: Use image node_id 2 for calling the SuperGraph obj's underlying member method code with example usage: obj.__process_supergraph__() without return types