code: def make_heap(n_points, size):
      """Constructor for the numba enabled heap objects. The heaps are used
      for approximate nearest neighbor search, maintaining a list of potential
      neighbors sorted by their distance. We also flag if potential neighbors
      are newly added to the list or not. Internally this is stored as
      a single ndarray; the first axis determines whether we are looking at the
      array of candidate graph_indices, the array of distances, or the flag array for
      whether elements are new or not. Each of these arrays are of shape
      (``n_points``, ``size``)
  
      Parameters
      ----------
      n_points: int
          The number of graph_data points to track in the heap.
  
      size: int
          The number of items to keep on the heap for each graph_data point.
  
      Returns
      -------
      heap: An ndarray suitable for passing to other numba enabled heap functions.
      """
      indices = np.full((int(n_points), int(size)), -1, dtype=np.int32)
      distances = np.full(
          (int(n_points), int(size)), np.infty, dtype=np.float32
      )
      flags = np.zeros((int(n_points), int(size)), dtype=np.uint8)
      result = (indices, distances, flags)
  
      return result
  
imports: import time
  import numba
  from numba.core import types
  import numba.experimental.structref
  import numpy
label_desc: Use image node_id 9 for calling a global function with example usage: make_heap(n_points, size) and returns: result