code: def make_sparse_tree(
      inds,
      indptr,
      spdata,
      rng_state,
      leaf_size=30,
      angular=False,
      max_depth=200,
  ):
      indices = np.arange(indptr.shape[0] - 1).astype(np.int32)
  
      hyperplanes = numba.typed.List.empty_list(sparse_hyperplane_type)
      offsets = numba.typed.List.empty_list(offset_type)
      children = numba.typed.List.empty_list(children_type)
      point_indices = numba.typed.List.empty_list(point_indices_type)
  
      if angular:
          make_sparse_angular_tree(
              inds,
              indptr,
              spdata,
              indices,
              hyperplanes,
              offsets,
              children,
              point_indices,
              rng_state,
              leaf_size,
              max_depth=max_depth,
          )
      else:
          make_sparse_euclidean_tree(
              inds,
              indptr,
              spdata,
              indices,
              hyperplanes,
              offsets,
              children,
              point_indices,
              rng_state,
              leaf_size,
              max_depth=max_depth,
          )
  
      max_leaf_size = leaf_size
      for points in point_indices:
          if len(points) > max_leaf_size:
              max_leaf_size = numba.int32(len(points))
  
      return FlatTree(
          hyperplanes, offsets, children, point_indices, max_leaf_size
      )
  
imports: from warnings import warn
  import locale
  import numpy
  import numba
  import scipy.sparse
  from pynndescent.sparse import sparse_mul, sparse_diff, sparse_sum, arr_intersect, sparse_dot_product
  from pynndescent.utils import tau_rand_int, norm
  import joblib
  from collections import namedtuple
label_desc: Use image node_id 10 for calling a global function with example usage: make_sparse_tree(inds, indptr, spdata, rng_state, leaf_size, angular, max_depth) and returns: FlatTree