code: def __call__(self, n_id, graph_index):
      data_flow = self.sampler(n_id)
      num_layers = len(self.convs)
      jk_hidden = []
      x = self.to_x(data_flow[0].n_id)
      block = data_flow[0]
      e_id, edge_index, size = block.e_id, block.edge_index, block.size
      for i, conv in zip(range(num_layers), self.convs):
          if e_id is None:
              edge_attr = None
          else:
              edge_attr = self.get_edge_attr(block)
          x_src, x_dst = x, None
          x = self.calculate_conv(
              conv,
              [x_src, x_dst],
              edge_index,
              size=size,
              edge_attr=edge_attr,
          )
          x = tf.nn.relu(x)
          pool_out = self.graph_pool(x, graph_index)
          jk_hidden.append(pool_out)
          if self.node_pool is not None:
              if i % 2 == 0 and i != 0:
                  pool = self.node_pool[i // 2]
                  x, edge_index, _, graph_index, _, _, size = pool(
                      x, edge_index, graph_index, size
                  )
      if self.jk_mode == "concat":
          pool_out = tf.concat(jk_hidden, axis=1)
      elif self.jk_mode == "maxpool":
          pool_out = tf.reduce_sum(tf.stack(jk_hidden, 1), 1)
      out = self.fc(pool_out)
      return out
  
file_path: euler/tf_euler/python/mp_utils/graph_gnn.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.euler_ops import mp_ops
  from tf_euler.python.mp_utils import utils
  from tf_euler.python.graph_pool.base_pool import Pooling
label_desc: Use image node_id 9 for calling the GraphGNNNet obj's underlying member method code with example usage: obj.__call__(n_id, graph_index) and returns: out