class_docstr: Implemetation of sampler in order to sample metapath random walk.
  
  Args:
      config: dict, some configure parameters.
docstr: Build pgl heterogeneous graph.
          
docstr_tok: ["Build","pgl","heterogeneous","graph","."]
code: def build_graph(self):
      """Build pgl heterogeneous graph."""
      (
          self.conf_id2index,
          self.conf_name2index,
          conf_node_type,
      ) = self.remapping_id(
          self.config["data_path"] + "id_conf.txt",
          start_index=0,
          node_type="conf",
      )
      logging.info(
          "%d venues have been loaded." % (len(self.conf_id2index))
      )
  
      (
          self.author_id2index,
          self.author_name2index,
          author_node_type,
      ) = self.remapping_id(
          self.config["data_path"] + "id_author.txt",
          start_index=len(self.conf_id2index),
          node_type="author",
      )
      logging.info(
          "%d authors have been loaded." % (len(self.author_id2index))
      )
  
      (
          self.paper_id2index,
          self.paper_name2index,
          paper_node_type,
      ) = self.remapping_id(
          self.config["data_path"] + "paper.txt",
          start_index=(
              len(self.conf_id2index) + len(self.author_id2index)
          ),
          node_type="paper",
          separator="\t",
      )
      logging.info(
          "%d papers have been loaded." % (len(self.paper_id2index))
      )
  
      node_types = conf_node_type + author_node_type + paper_node_type
      num_nodes = len(node_types)
      edges_by_types = {}
      paper_author_edges = self.load_edges(
          self.config["data_path"] + "paper_author.txt",
          self.paper_id2index,
          self.author_id2index,
      )
      paper_conf_edges = self.load_edges(
          self.config["data_path"] + "paper_conf.txt",
          self.paper_id2index,
          self.conf_id2index,
      )
  
      #  edges_by_types['edge'] = paper_author_edges + paper_conf_edges
      edges_by_types["p2c"] = paper_conf_edges
      edges_by_types["c2p"] = [
          (dst, src) for src, dst in paper_conf_edges
      ]
      edges_by_types["p2a"] = paper_author_edges
      edges_by_types["a2p"] = [
          (dst, src) for src, dst in paper_author_edges
      ]
  
      #  logging.info('%d edges have been loaded.' %
      #               (len(edges_by_types['edge'])))
  
      node_features = {
          "index": np.array([i for i in range(num_nodes)])
          .reshape(-1, 1)
          .astype(np.int64)
      }
  
      self.graph = heter_graph.HeterGraph(
          num_nodes=num_nodes,
          edges=edges_by_types,
          node_types=node_types,
          node_feat=node_features,
      )
  
imports: import multiprocessing
  from multiprocessing import Pool
  from multiprocessing import Process
  import argparse
  import sys
  import os
  import numpy
  import pickle
  import tqdm
  import time
  import logging
  import random
  from pgl import heter_graph
  from pgl.sample import metapath_randomwalk
  from utils import *
label_desc: Use image node_id 2 for calling the Sampler obj's underlying member method code with example usage: obj.build_graph() without return types