class_docstr: Quotient metric.
  
  Given a (principal) fiber bundle, or more generally a manifold with a
  Lie group acting on it by the right, the quotient space is the space of
  orbits under this action. The quotient metric is defined such that the
  canonical projection is a Riemannian submersion, i.e. it is isometric to
  the restriction of the metric of the total space to horizontal subspaces.
  
  Parameters
  ----------
  space : Manifold
      Base.
  fiber_bundle : FiberBundle
      Bundle structure to define the quotient.
class_docstr_tok: ["Quotient","metric",".","Given","a","(","principal",")","fiber","bundle",",","or","more","generally","a","manifold","with","a","Lie","group","acting","on","it","by","the","right",",","the","quotient","space","is","the","space","of","orbits","under","this","action",".","The","quotient","metric","is","defined","such","that","the","canonical","projection","is","a","Riemannian","submersion",",","i.e",".","it","is","isometric","to","the","restriction","of","the","metric","of","the","total","space","to","horizontal","subspaces",".","Parameters","--","--","--","--","--","space",":","Manifold","Base",".","fiber_bundle",":","FiberBundle","Bundle","structure","to","define","the","quotient","."]
docstr: Generate parameterized function for the geodesic curve.
  
  Parameters
  ----------
  initial_point : array-like, shape=[..., dim]
      Point on the manifold, initial point of the geodesic.
  initial_tangent_vec : array-like, shape=[..., dim]
      Tangent vector at base point, the initial speed of the geodesics.
      Optional, default: None.
      If None, an end point must be given and a logarithm is computed.
  
  Returns
  -------
  path : callable
      Time parameterized geodesic curve. If a batch of initial
      conditions is passed, the output array's first dimension
      represents the different initial conditions, and the second
      corresponds to time.
docstr_tok: ["Generate","parameterized","function","for","the","geodesic","curve",".","Parameters","--","--","--","--","--","initial_point",":","array-like",",","shape=","[","...",",","dim","]","Point","on","the","manifold",",","initial","point","of","the","geodesic",".","initial_tangent_vec",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","base","point",",","the","initial","speed","of","the","geodesics",".","Optional",",","default",":","None",".","If","None",",","an","end","point","must","be","given","and","a","logarithm","is","computed",".","Returns","--","--","--","-","path",":","callable","Time","parameterized","geodesic","curve",".","If","a","batch","of","initial","conditions","is","passed",",","the","output","array","'s","first","dimension","represents","the","different","initial","conditions",",","and","the","second","corresponds","to","time","."]
code: def _geodesic_from_exp(self, initial_point, initial_tangent_vec):
      """Generate parameterized function for the geodesic curve.
  
      Parameters
      ----------
      initial_point : array-like, shape=[..., dim]
          Point on the manifold, initial point of the geodesic.
      initial_tangent_vec : array-like, shape=[..., dim]
          Tangent vector at base point, the initial speed of the geodesics.
          Optional, default: None.
          If None, an end point must be given and a logarithm is computed.
  
      Returns
      -------
      path : callable
          Time parameterized geodesic curve. If a batch of initial
          conditions is passed, the output array's first dimension
          represents the different initial conditions, and the second
          corresponds to time.
      """
      fiber_point = self.fiber_bundle.lift(initial_point)
      horizontal_vec = self.fiber_bundle.horizontal_lift(
          initial_tangent_vec,
          fiber_point=fiber_point,
          base_point=initial_point,
      )
      total_path = (
          self.fiber_bundle.total_space.metric._geodesic_from_exp(
              fiber_point, horizontal_vec
          )
      )
  
      def path(t):
          total_geod_points = total_path(t)
          out = self.fiber_bundle.riemannian_submersion(
              total_geod_points
          )
          return out
  
      return path
  
file_path: geomstats/geomstats/geometry/quotient_metric.py
imports: import geomstats.backend
  from geomstats.geometry.riemannian_metric import RiemannianMetric
label_desc: Use image node_id 4 for calling the QuotientMetric obj's underlying member method code with example usage: obj._geodesic_from_exp(initial_point, initial_tangent_vec) and returns: path, out