code: def walks_pick(
      self,
      edge_index: Tensor,
      pick_edge_indices: List,
      walk_indices: List = [],
      num_layers=0,
  ):
      walk_indices_list = []
      for edge_idx in pick_edge_indices:
          # Adding one edge
          walk_indices.append(edge_idx)
          _, new_src = src, tgt = edge_index[:, edge_idx]
          next_edge_indices = np.array(
              (edge_index[0, :] == new_src).nonzero().view(-1)
          )
  
          # Finding next edge
          if len(walk_indices) >= num_layers:
              # return one walk
              walk_indices_list.append(walk_indices.copy())
          else:
              walk_indices_list += self.walks_pick(
                  edge_index,
                  next_edge_indices,
                  walk_indices,
                  num_layers,
              )
  
          # remove the last edge
          walk_indices.pop(-1)
  
      return walk_indices_list
  
imports: from typing import List, Tuple, Dict
  from math import sqrt
  import torch
  from torch import Tensor
  import torch.nn
  import matplotlib.pyplot
  import networkx
  from torch_geometric.nn import MessagePassing
  from torch_geometric.utils.loop import add_self_loops, remove_self_loops
  from torch_geometric.data import Data, Batch
  from torch_geometric.utils import to_networkx
  from ..models.utils import subgraph
  from rdkit import Chem
  from matplotlib.axes import Axes
  import numpy
  from ..models import GNNPool
label_desc: Use image node_id 3 for calling the WalkBase obj's underlying member method code with example usage: obj.walks_pick(edge_index, pick_edge_indices, walk_indices, num_layers) and returns: walk_indices_list