class_docstr: Parameter settings for each supervertex.
  
  Args:
      supervertex_name (str): the name of the supervertex.
      inter_feat_channels (int): the dimension of the output of the internal feature layer.
      inter_agg_channels_list (List[int]): the output dimensions of a sequence of internal aggregation layers.
      exter_agg_channels_dict (Dict[str, int], optional): the dimension of received message vector from parent supervertices.
          Defaults to None.
      mode (str, optional): the allowed gripnet mode--'cat' or 'add'. Defaults to None.
      num_bases (int, optional): the number of bases used for basis-decomposition if the
          supervertex is multi-relational. Defaults to 32.
      concat_output (bool, optional): whether to concatenate the output of each layers. Defaults to True.
class_docstr_tok: ["Parameter","settings","for","each","supervertex",".","Args",":","supervertex_name","(","str",")",":","the","name","of","the","supervertex",".","inter_feat_channels","(","int",")",":","the","dimension","of","the","output","of","the","internal","feature","layer",".","inter_agg_channels_list","(","List","[","int","]",")",":","the","output","dimensions","of","a","sequence","of","internal","aggregation","layers",".","exter_agg_channels_dict","(","Dict","[","str",",","int","]",",","optional",")",":","the","dimension","of","received","message","vector","from","parent","supervertices",".","Defaults","to","None",".","mode","(","str",",","optional",")",":","the","allowed","gripnet","mode","--","'cat","'","or","'add","'",".","Defaults","to","None",".","num_bases","(","int",",","optional",")",":","the","number","of","bases","used","for","basis-decomposition","if","the","supervertex","is","multi-relational",".","Defaults","to","32.","concat_output","(","bool",",","optional",")",":","whether","to","concatenate","the","output","of","each","layers",".","Defaults","to","True","."]
code: def __init__(
      self,
      supervertex_name: str,
      inter_feat_channels: int,
      inter_agg_channels_list: List[int],
      exter_agg_channels_dict: Optional[Dict[str, int]] = None,
      mode: Optional[str] = None,
      num_bases: int = 32,
      concat_output: bool = True,
  ) -> None:
      self.supervertex_name = supervertex_name
      self.inter_feat_channels = inter_feat_channels
      self.inter_agg_channels_list = inter_agg_channels_list
      self.mode = mode
      self.num_bases = num_bases
      self.concat_output = concat_output
      self.exter_agg_channels_dict = exter_agg_channels_dict
  
      # check whether the mode is valid
      if self.mode is not None and self.mode not in ["cat", "add"]:
          error_msg = (
              "`mode` value is invalid. It should be 'cat' or 'add'."
          )
          logging.error(error_msg)
          raise ValueError(error_msg)
  
imports: import logging
  from typing import Dict, List, Optional
  import networkx
  import torch
label_desc: Use image node_id 1 to create a new SuperVertexParaSetting object from inherited base classes: object with example: obj = SuperVertexParaSetting(supervertex_name, inter_feat_channels, inter_agg_channels_list, exter_agg_channels_dict, mode, num_bases, concat_output)