code: def get_neighbors(self, n_id):
      neighbors = []
      neighbor_src = []
      for hop_edge_types, count in zip(self.metapath, self.fanouts):
          n_id = tf.reshape(n_id, [-1])
          one_neighbor, _w, _ = tf_euler.sample_neighbor(
              n_id, hop_edge_types, count, default_node=self.max_id + 1
          )
          neighbors.append(tf.reshape(one_neighbor, [-1]))
          node_src = tf.range(tf.size(n_id))
          node_src = tf.tile(tf.reshape(node_src, [-1, 1]), [1, count])
          node_src = tf.reshape(node_src, [-1])
          neighbor_src.append(node_src)
          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/sage_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
label_desc: Use image node_id 2 for calling the SageDataFlow obj's underlying member method code with example usage: obj.get_neighbors(n_id) and returns: neighbors,  neighbor_src