code: def read_binary_graph_raw(raw_dir, add_inverse_edge=False):
      """
      raw_dir: path to the raw directory
      add_inverse_edge (bool): whether to add inverse edge or not
  
      return: graph_list, which is a list of graphs.
      Each graph is a dictionary, containing edge_index, edge_feat, node_feat, and num_nodes
      edge_feat and node_feat are optional: if a graph does not contain it, we will have None.
  
      raw_dir must contain data.npz
      - edge_index
      - num_nodes_list
      - num_edges_list
      - node_** (optional, node_feat is the default node features)
      - edge_** (optional, edge_feat is the default edge features)
      """
  
      if add_inverse_edge:
          raise RuntimeError(
              "add_inverse_edge is depreciated in read_binary"
          )
  
      print("Loading necessary files...")
      print("This might take a while.")
      data_dict = np.load(osp.join(raw_dir, "data.npz"))
  
      edge_index = data_dict["edge_index"]
      num_nodes_list = data_dict["num_nodes_list"]
      num_edges_list = data_dict["num_edges_list"]
  
      # storing node and edge features
      node_dict = {}
      edge_dict = {}
  
      for key in list(data_dict.keys()):
          if (
              key == "edge_index"
              or key == "num_nodes_list"
              or key == "num_edges_list"
          ):
              continue
  
          if key[:5] == "node_":
              node_dict[key] = data_dict[key]
          elif key[:5] == "edge_":
              edge_dict[key] = data_dict[key]
          else:
              raise RuntimeError(
                  f"Keys in graph object should start from either 'node_' or 'edge_', but found '{key}'."
              )
  
      graph_list = []
      num_nodes_accum = 0
      num_edges_accum = 0
  
      print("Processing graphs...")
      for num_nodes, num_edges in tqdm(
          zip(num_nodes_list, num_edges_list), total=len(num_nodes_list)
      ):
          graph = dict()
  
          graph["edge_index"] = edge_index[
              :, num_edges_accum : num_edges_accum + num_edges
          ]
  
          for key, feat in edge_dict.items():
              graph[key] = feat[
                  num_edges_accum : num_edges_accum + num_edges
              ]
  
          if "edge_feat" not in graph:
              graph["edge_feat"] = None
  
          for key, feat in node_dict.items():
              graph[key] = feat[
                  num_nodes_accum : num_nodes_accum + num_nodes
              ]
  
          if "node_feat" not in graph:
              graph["node_feat"] = None
  
          graph["num_nodes"] = num_nodes
  
          num_edges_accum += num_edges
          num_nodes_accum += num_nodes
  
          graph_list.append(graph)
  
      return graph_list
  
file_path: ogb/ogb/io/read_graph_raw.py
imports: import pandas
  import os.path
  import os
  import numpy
  from ogb.utils.url import decide_download, download_url, extract_zip
  from tqdm.auto import tqdm
label_desc: Use image node_id 2 for calling a global function with example usage: read_binary_graph_raw(raw_dir, add_inverse_edge) and returns: graph_list