code: def arg_parse():
      """
      argument parser
      """
      parser = argparse.ArgumentParser(description="DiffPool arguments")
      parser.add_argument(
          "--dataset", dest="dataset", help="Input Dataset"
      )
      parser.add_argument(
          "--pool_ratio",
          dest="pool_ratio",
          type=float,
          help="pooling ratio",
      )
      parser.add_argument(
          "--num_pool",
          dest="num_pool",
          type=int,
          help="num_pooling layer",
      )
      parser.add_argument(
          "--no_link_pred",
          dest="linkpred",
          action="store_false",
          help="switch of link prediction object",
      )
      parser.add_argument(
          "--cuda", dest="cuda", type=int, help="switch cuda"
      )
      parser.add_argument(
          "--lr", dest="lr", type=float, help="learning rate"
      )
      parser.add_argument(
          "--clip", dest="clip", type=float, help="gradient clipping"
      )
      parser.add_argument(
          "--batch-size", dest="batch_size", type=int, help="batch size"
      )
      parser.add_argument(
          "--epochs", dest="epoch", type=int, help="num-of-epoch"
      )
      parser.add_argument(
          "--train-ratio",
          dest="train_ratio",
          type=float,
          help="ratio of trainning dataset split",
      )
      parser.add_argument(
          "--test-ratio",
          dest="test_ratio",
          type=float,
          help="ratio of testing dataset split",
      )
      parser.add_argument(
          "--num_workers",
          dest="n_worker",
          type=int,
          help="number of workers when dataloading",
      )
      parser.add_argument(
          "--gc-per-block",
          dest="gc_per_block",
          type=int,
          help="number of graph conv layer per block",
      )
      parser.add_argument(
          "--bn",
          dest="bn",
          action="store_const",
          const=True,
          default=True,
          help="switch for bn",
      )
      parser.add_argument(
          "--dropout", dest="dropout", type=float, help="dropout rate"
      )
      parser.add_argument(
          "--bias",
          dest="bias",
          action="store_const",
          const=True,
          default=True,
          help="switch for bias",
      )
      parser.add_argument(
          "--save_dir",
          dest="save_dir",
          help="model saving directory: SAVE_DICT/DATASET",
      )
      parser.add_argument(
          "--load_epoch",
          dest="load_epoch",
          type=int,
          help="load trained model params from\
                           SAVE_DICT/DATASET/model-LOAD_EPOCH",
      )
      parser.add_argument(
          "--data_mode",
          dest="data_mode",
          help="data\
                          preprocessing mode: default, id, degree, or one-hot\
                          vector of degree number",
          choices=["default", "id", "deg", "deg_num"],
      )
  
      parser.set_defaults(
          dataset="ENZYMES",
          pool_ratio=0.15,
          num_pool=1,
          cuda=1,
          lr=1e-3,
          clip=2.0,
          batch_size=20,
          epoch=4000,
          train_ratio=0.7,
          test_ratio=0.1,
          n_worker=1,
          gc_per_block=3,
          dropout=0.0,
          method="diffpool",
          bn=True,
          bias=True,
          save_dir="./model_param",
          load_epoch=-1,
          data_mode="default",
      )
      return parser.parse_args()
  
imports: import argparse
  import os
  import random
  import time
  import dgl
  import dgl.function
  import networkx
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.utils.data
  from data_utils import pre_process
  from dgl import DGLGraph
  from dgl.data import tu
  from model.encoder import DiffPool
label_desc: Use image node_id 1 for calling a global function with example usage: arg_parse() and returns: parser