code: def extract_enclosing_subgraphs(
      self, edge_index, edge_label_index, y
  ):
      data_list = []
      for src, dst in edge_label_index.t().tolist():
          sub_nodes, sub_edge_index, mapping, _ = k_hop_subgraph(
              [src, dst], self.num_hops, edge_index, relabel_nodes=True
          )
          src, dst = mapping.tolist()
  
          # Remove target link from the subgraph.
          mask1 = (sub_edge_index[0] != src) | (
              sub_edge_index[1] != dst
          )
          mask2 = (sub_edge_index[0] != dst) | (
              sub_edge_index[1] != src
          )
          sub_edge_index = sub_edge_index[:, mask1 & mask2]
  
          # Calculate node labeling.
          z = self.drnl_node_labeling(
              sub_edge_index, src, dst, num_nodes=sub_nodes.size(0)
          )
  
          data = Data(
              x=self.data.x[sub_nodes],
              z=z,
              edge_index=sub_edge_index,
              y=y,
          )
          data_list.append(data)
  
      return data_list
  
imports: import math
  import os.path
  import time
  from itertools import chain
  import numpy
  import torch
  import torch.nn.functional
  from scipy.sparse.csgraph import shortest_path
  from sklearn.metrics import roc_auc_score
  from torch.nn import BCEWithLogitsLoss, Conv1d, MaxPool1d, ModuleList
  from torch_geometric.data import Data, InMemoryDataset
  from torch_geometric.datasets import Planetoid
  from torch_geometric.loader import DataLoader
  from torch_geometric.nn import MLP, GCNConv, SortAggregation
  from torch_geometric.transforms import RandomLinkSplit
  from torch_geometric.utils import k_hop_subgraph, to_scipy_sparse_matrix
label_desc: Use image node_id 4 for calling the SEALDataset obj's underlying member method code with example usage: obj.extract_enclosing_subgraphs(edge_index, edge_label_index, y) and returns: data_list