code: def aggregate_radius(radius, g, z):
      # initializing list to collect message passing result
      z_list = []
      g.ndata["z"] = z
      # pulling message from 1-hop neighbourhood
      g.update_all(fn.copy_u(u="z", out="m"), fn.sum(msg="m", out="z"))
      z_list.append(g.ndata["z"])
      for i in range(radius - 1):
          for j in range(2**i):
              # pulling message from 2^j neighborhood
              g.update_all(
                  fn.copy_u(u="z", out="m"), fn.sum(msg="m", out="z")
              )
          z_list.append(g.ndata["z"])
      return z_list
  
imports: import os
  import dgl
  import torch
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.data import citation_graph
  import matplotlib.pyplot
  import networkx
  import dgl.function
  from torch.utils.data import DataLoader
label_desc: Use image node_id 2 for calling a global function with example usage: aggregate_radius(radius, g, z) and returns: z_list