code: def collate_fn(self, data_list: List[Union[Data, Tuple]]):
      if len(data_list) == 1 and isinstance(data_list[0], Data):
          return data_list[0]
  
      out, aux = zip(*data_list)
      out = np.concatenate(out)
      aux = np.unique(np.concatenate(aux))
      mask = torch.from_numpy(np.in1d(aux, out))
      aux = torch.from_numpy(aux)
  
      subg = get_subgraph(
          aux,
          self.graph,
          self.return_edge_index_type,
          self.adj,
          output_node_mask=mask,
      )
      return subg
  
imports: import logging
  import math
  from typing import Callable, Iterator, List, NamedTuple, Optional, Tuple, Union
  import numpy
  import scipy.sparse
  import torch
  from torch import Tensor
  from tqdm import tqdm
  from torch_geometric.data import Data
  from torch_geometric.typing import SparseTensor
  from torch_geometric.utils import get_ppr, is_undirected, subgraph
label_desc: Use image node_id 5 for calling the IBMBBaseLoader obj's underlying member method code with example usage: obj.collate_fn(data_list) and returns: subg, data_list