code: def group_vectors(vectors,
                    angle=1e-4,
                    include_negative=False):
      
  
      vectors = np.asanyarray(vectors, dtype=np.float64)
      angle = float(angle)
  
      if include_negative:
          vectors = util.vector_hemisphere(vectors)
  
      spherical = util.vector_to_spherical(vectors)
      angles, groups = group_distance(spherical, angle)
      new_vectors = util.spherical_to_vector(angles)
      return new_vectors, groups
docs: Group vectors based on an angle tolerance, with the option to
      include negative vectors.
  
      Parameters
      -----------
      vectors : (n,3) float
          Direction vector
      angle : float
          Group vectors closer than this angle in radians
      include_negative : bool
          If True consider the same:
          [0,0,1] and [0,0,-1]
  
      Returns
      ------------
      new_vectors : (m,3) float
          Direction vector
      groups : (m,) sequence of int
          Indices of source vectors