code: def _aug_data(self, data):
      node_num, _ = data.x.size()
      _, edge_num = data.edge_index.size()
      drop_num = int(node_num * self.aug_ratio)
  
      idx_perm = np.random.permutation(node_num)
  
      idx_drop = idx_perm[:drop_num]
      idx_nondrop = idx_perm[drop_num:]
      idx_nondrop.sort()
      idx_dict = {
          idx_nondrop[n]: n for n in list(range(idx_nondrop.shape[0]))
      }
  
      edge_index = data.edge_index.numpy()
      adj = torch.zeros((node_num, node_num))
      adj[edge_index[0], edge_index[1]] = 1
      adj = adj[idx_nondrop, :][:, idx_nondrop]
      edge_index = adj.nonzero().t()
  
      try:
          data.edge_index = edge_index
          data.x = data.x[idx_nondrop]
      except:
          data = data
      return data
  
imports: import random
  import torch
  import numpy
  from itertools import repeat, product
  from torch_geometric.data import Batch
label_desc: Use image node_id 2 for calling the DropNode obj's underlying member method code with example usage: obj._aug_data(data) and returns: data