code: def _friends_bootstrap_radius(args):
      
  
      # Unzipping.
      points, ftype = args
      rstate = np.random
  
      # Resampling.
      npoints, ndim = points.shape
      idxs = rstate.randint(npoints, size=npoints)  # resample
      idx_in = np.unique(idxs)  # selected objects
      sel = np.ones(npoints, dtype='bool')
      sel[idx_in] = False
      idx_out = np.where(sel)[0]  # "missing" objects
      if len(idx_out) < 2:  # edge case
          idx_out = np.append(idx_out, [0, 1])
      points_in, points_out = points[idx_in], points[idx_out]
  
      # Construct KDTree to enable quick nearest-neighbor lookup for
      # our resampled objects.
      kdtree = spatial.KDTree(points_in)
  
      if ftype == 'balls':
          # Compute distances from our "missing" points its closest neighbor
          # among the resampled points using the Euclidean norm
          # (i.e. "radius" of n-sphere).
          dists, ids = kdtree.query(points_out, k=1, eps=0, p=2)
      elif ftype == 'cubes':
          # Compute distances from our "missing" points its closest neighbor
          # among the resampled points using the Euclidean norm
          # (i.e. "half-side-length" of n-cube).
          dists, ids = kdtree.query(points_out, k=1, eps=0, p=np.inf)
  
      # Conservative upper-bound on radius.
      dist = max(dists)
  
      return dist
docs: Internal method used to compute the radius (half-side-length) for each
      ball (cube) used in :class:`RadFriends` (:class:`SupFriends`) using
      bootstrapping.