code: def get_neighbors(self, n_id):
      neighbors = []
      neighbor_src = []
      last_count = tf.size(n_id)
      total_fanout = 0
      for i in range(len(self.metapath)):
          if i == len(self.metapath) - 1:
              one_neighbor = tf_euler.get_full_neighbor(
                  tf.reshape(n_id, [-1]), self.metapath[i]
              )[0]
              one_indices = one_neighbor.indices[:, 0]
              one_neighbor = one_neighbor.values
          else:
              total_fanout += self.fanouts[i]
              last_count = tf.size(n_id)
              unique_neighbor, adj = tf_euler.sample_neighbor_layerwise(
                  tf.reshape(n_id, [1, last_count]),
                  self.metapath[i],
                  total_fanout,
              )
              neighbor_idx = adj.indices[:, 2]
              one_neighbor = tf.gather(
                  tf.reshape(unique_neighbor, [-1]), neighbor_idx
              )
              one_indices = adj.indices[:, 1]
          neighbors.append(tf.reshape(one_neighbor, [-1]))
          neighbor_src.append(tf.cast(one_indices, tf.int32))
          new_n_id = tf.reshape(one_neighbor, [-1])
          n_id = tf.concat([new_n_id, n_id], axis=0)
          n_id, _ = tf.unique(tf.reshape(n_id, [-1]))
      return neighbors, neighbor_src
  
file_path: euler/tf_euler/python/dataflow/layerwise_dataflow.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  import tf_euler
  from tf_euler.python.dataflow.neighbor_dataflow import UniqueDataFlow
  from tf_euler.python.dataflow.neighbor_dataflow import NeighborDataFlow
label_desc: Use image node_id 2 for calling the LayerwiseDataFlow obj's underlying member method code with example usage: obj.get_neighbors(n_id) and returns: neighbors,  neighbor_src