class_docstr: Pullback metric induced by a diffeomorphism.
class_docstr_tok: ["Pullback","metric","induced","by","a","diffeomorphism","."]
docstr: Compute the geodesic via diffeomorphic pullback.
  
  Parameters
  ----------
  initial_point : array-like, shape=[..., *shape]
      Initial Point.
  end_point : array-like, shape=[..., *shape]
      End Point.
  
  Returns
  -------
  geodesic : callable
      Geodesic between initial_point and end_point.
docstr_tok: ["Compute","the","geodesic","via","diffeomorphic","pullback",".","Parameters","--","--","--","--","--","initial_point",":","array-like",",","shape=","[","...",",","*","shape","]","Initial","Point",".","end_point",":","array-like",",","shape=","[","...",",","*","shape","]","End","Point",".","Returns","--","--","--","-","geodesic",":","callable","Geodesic","between","initial_point","and","end_point","."]
code: def geodesic(
      self, initial_point, end_point=None, initial_tangent_vec=None
  ):
      """Compute the geodesic via diffeomorphic pullback.
  
      Parameters
      ----------
      initial_point : array-like, shape=[..., *shape]
          Initial Point.
      end_point : array-like, shape=[..., *shape]
          End Point.
  
      Returns
      -------
      geodesic : callable
          Geodesic between initial_point and end_point.
      """
      image_initial_point = self.diffeo.diffeomorphism(initial_point)
      if end_point is None:
          image_end_point = None
      else:
          image_end_point = self.diffeo.diffeomorphism(end_point)
      if initial_tangent_vec is None:
          image_initial_tangent_vec = None
      else:
          image_initial_tangent_vec = (
              self.diffeo.tangent_diffeomorphism(
                  initial_tangent_vec,
                  base_point=initial_point,
                  image_point=image_initial_point,
              )
          )
      image_geodesic = self.image_space.metric.geodesic(
          image_initial_point,
          image_end_point,
          image_initial_tangent_vec,
      )
  
      def path(t):
          image_point_t = image_geodesic(t)
          point_t = self.diffeo.inverse_diffeomorphism(image_point_t)
          return point_t
  
      return path
  
imports: import geomstats.backend
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.numerics.geodesic import ExpODESolver, LogShootingSolver
  from geomstats.numerics.ivp import GSIVPIntegrator
  from geomstats.vectorization import check_is_batch
label_desc: Use image node_id 10 for calling the PullbackDiffeoMetric obj's underlying member method code with example usage: obj.geodesic(initial_point, end_point, initial_tangent_vec) and returns: path, point_t