code: def ego_graph(edge_index, num_nodes, node, radius=2):
      edge_list = {}
      for i in range(edge_index.shape[1]):
          if edge_index[0][i].item() in edge_list:
              edge_list[edge_index[0][i].item()].add(
                  edge_index[1][i].item()
              )
          else:
              edge_list[edge_index[0][i].item()] = set(
                  [edge_index[1][i].item()]
              )
      if radius > 4:
          return set(range(num_nodes)), edge_list
      neighbors = set([node])
      for i in range(radius):
          neighbors_temp = copy.copy(neighbors)
          for neighbor in neighbors:
              neighbor_neighbors = edge_list[neighbor]
              for nn in neighbor_neighbors:
                  neighbors_temp.add(nn)
          neighbors = neighbors_temp
      ego_edge_list = {}
      for neighbor in neighbors:
          if neighbor in edge_list:
              neighbor_neighbors = edge_list[neighbor]
              for nn in neighbor_neighbors:
                  if nn in neighbors:
                      if neighbor in ego_edge_list:
                          ego_edge_list[neighbor].append(nn)
                      else:
                          ego_edge_list[neighbor] = [nn]
      return list(neighbors), ego_edge_list
  
file_path: deepsnap/benchmark/transform/ego_net.py
imports: import copy
  import time
  import torch
  import argparse
  import numpy
  from torch.utils.data import DataLoader
  from deepsnap.batch import Batch
  from deepsnap.dataset import GraphDataset
  from torch_geometric.datasets import TUDataset
label_desc: Use image node_id 3 for calling a global function with example usage: ego_graph(edge_index, num_nodes, node, radius) and returns: list,  ego_edge_list, set,  edge_list