code: def sample_fanout_with_feature(
      nodes,
      edge_types,
      count,
      default_node,
      dense_feature_names,
      dense_dimensions,
      sparse_feature_names,
      sparse_default_values,
  ):
      edge_types = type_ops.get_edge_type_id(edge_types)
      res = _sample_fanout_with_feature(
          tf.reshape(nodes, [-1]),
          edge_types,
          count,
          default_node=default_node,
          sparse_feature_names=sparse_feature_names,
          sparse_default_values=sparse_default_values,
          dense_feature_names=dense_feature_names,
          dense_dimensions=dense_dimensions,
          N=len(count),
          ND=(len(count) + 1) * len(dense_feature_names),
          NS=(len(count) + 1) * len(sparse_feature_names),
      )
      neighbors = [tf.reshape(nodes, [-1])]
      neighbors.extend([tf.reshape(i, [-1]) for i in res[0]])
      weights = res[1]
      types = res[2]
      dense_features = res[3]
      sparse_features = [tf.SparseTensor(*sp) for sp in zip(*res[4:7])]
      return neighbors, weights, types, dense_features, sparse_features
  
file_path: euler/tf_euler/python/euler_ops/neighbor_ops.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  from tf_euler.python.euler_ops import base
  from tf_euler.python.euler_ops import type_ops
label_desc: Use image node_id 4 for calling a global function with example usage: sample_fanout_with_feature(nodes, edge_types, count, default_node, dense_feature_names, dense_dimensions, sparse_feature_names, sparse_default_values) and returns: neighbors,  weights,  types,  dense_features,  sparse_features