code: def batch_fn(self, batch_nodes):
      graph_list, from_reindex = neighbor_sample(
          self.dataset.graph, batch_nodes, self.samples
      )
  
      neigh_nodes = graph_list[0][1]
      neigh_nodes = np.array(neigh_nodes, dtype="int32")
      y = self.dataset.y[batch_nodes]
  
      label_idx = list(
          (set(neigh_nodes) - set(batch_nodes))
          & self.dataset.train_idx_label
      )
      sub_label_index = graph_kernel.map_nodes(label_idx, from_reindex)
      sub_label_y = self.dataset.y[label_idx]
      pos = 2021 - self.dataset.year[neigh_nodes]
      return (
          graph_list,
          neigh_nodes,
          y,
          sub_label_y,
          sub_label_index,
          pos,
      )
  
imports: import os
  import yaml
  import pgl
  import time
  import copy
  import numpy
  import os.path
  from pgl.utils.logger import log
  from pgl.graph import Graph
  from pgl import graph_kernel
  from pgl.sampling.custom import subgraph
  from ogb.lsc import MAG240MDataset, MAG240MEvaluator
  from dataset.base_dataset import BaseDataGenerator
  import time
  from tqdm import tqdm
label_desc: Use image node_id 2 for calling the DataGenerator obj's underlying member method code with example usage: obj.batch_fn(batch_nodes) and returns: graph_list,  neigh_nodes,  y,  sub_label_y,  sub_label_index,  pos