code: def sample_blocks(self, seeds):
      block_list = []
      for sampler in self.sampler_list:
          frontier = sampler(seeds)
          # add self loop
          frontier = dgl.remove_self_loop(frontier)
          frontier.add_edges(torch.tensor(seeds), torch.tensor(seeds))
          block = dgl.to_block(frontier, seeds)
          block_list.append(block)
  
      return seeds, block_list
  
imports: import dgl
  import numpy
  import argparse
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.nn.pytorch import GATConv
  from dgl.sampling import RandomWalkNeighborSampler
  from sklearn.metrics import f1_score
  from torch.utils.data import DataLoader
  from model_hetero import SemanticAttention
  from utils import EarlyStopping, set_random_seed
label_desc: Use image node_id 2 for calling the HANSampler obj's underlying member method code with example usage: obj.sample_blocks(seeds) and returns: seeds,  block_list