class_docstr: Class for the manifold of multinomial distributions.
  
  This is the set of `n+1`-tuples of positive reals that sum up to one,
  i.e. the `n`-simplex. Each point is the parameter of a multinomial
  distribution, i.e. gives the probabilities of $n$ different outcomes
  in a single experiment.
  
  Attributes
  ----------
  dim : int
      Dimension of the parameter manifold of multinomial distributions.
      The number of outcomes is dim + 1.
  embedding_manifold : Manifold
      Embedding manifold.
docstr: Project a point on the simplex.
  
  Negative components are replaced by zero and the point is
  renormalized by its 1-norm.
  
  Parameters
  ----------
  point: array-like, shape=[..., dim + 1]
      Point in embedding Euclidean space.
  atol : float
      Tolerance to evaluate positivity.
  
  Returns
  -------
  projected_point : array-like, shape=[..., dim + 1]
      Point projected on the simplex.
docstr_tok: ["Project","a","point","on","the","simplex",".","Negative","components","are","replaced","by","zero","and","the","point","is","renormalized","by","its","1-norm",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","dim","+","1","]","Point","in","embedding","Euclidean","space",".","atol",":","float","Tolerance","to","evaluate","positivity",".","Returns","--","--","--","-","projected_point",":","array-like",",","shape=","[","...",",","dim","+","1","]","Point","projected","on","the","simplex","."]
code: def projection(self, point, atol=gs.atol):
      """Project a point on the simplex.
  
      Negative components are replaced by zero and the point is
      renormalized by its 1-norm.
  
      Parameters
      ----------
      point: array-like, shape=[..., dim + 1]
          Point in embedding Euclidean space.
      atol : float
          Tolerance to evaluate positivity.
  
      Returns
      -------
      projected_point : array-like, shape=[..., dim + 1]
          Point projected on the simplex.
      """
      point_quadrant = gs.where(point < atol, atol, point)
      norm = gs.sum(point_quadrant, axis=-1)
      projected_point = gs.einsum(
          "...,...i->...i", 1.0 / norm, point_quadrant
      )
      return projected_point
  
imports: from scipy.stats import dirichlet, multinomial
  import geomstats.backend
  from geomstats.algebra_utils import from_vector_to_diagonal_matrix
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.euclidean import Euclidean
  from geomstats.geometry.hypersphere import Hypersphere
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.information_geometry.base import InformationManifoldMixin, ScipyMultivariateRandomVariable
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 7 for calling the MultinomialDistributions obj's underlying member method code with example usage: obj.projection(point, atol) and returns: projected_point