class_docstr: Pullback metric induced by a diffeomorphism.
class_docstr_tok: ["Pullback","metric","induced","by","a","diffeomorphism","."]
docstr: Compute the parallel transport via diffeomorphic pullback.
  
  Parameters
  ----------
  tangent_vec : array-like, shape=[..., *shape]
      Tangent vector.
  base_point : array-like, shape=[..., *shape]
      Base point.
  direction : array-like, shape=[..., *shape]
      Direction.
  end_point : array-like, shape=[..., *shape]
      End point.
  
  Returns
  -------
  parallel_transport : array-like, shape=[..., *shape]
      Parallel transport.
docstr_tok: ["Compute","the","parallel","transport","via","diffeomorphic","pullback",".","Parameters","--","--","--","--","--","tangent_vec",":","array-like",",","shape=","[","...",",","*","shape","]","Tangent","vector",".","base_point",":","array-like",",","shape=","[","...",",","*","shape","]","Base","point",".","direction",":","array-like",",","shape=","[","...",",","*","shape","]","Direction",".","end_point",":","array-like",",","shape=","[","...",",","*","shape","]","End","point",".","Returns","--","--","--","-","parallel_transport",":","array-like",",","shape=","[","...",",","*","shape","]","Parallel","transport","."]
code: def parallel_transport(
      self, tangent_vec, base_point, direction=None, end_point=None
  ):
      """Compute the parallel transport via diffeomorphic pullback.
  
      Parameters
      ----------
      tangent_vec : array-like, shape=[..., *shape]
          Tangent vector.
      base_point : array-like, shape=[..., *shape]
          Base point.
      direction : array-like, shape=[..., *shape]
          Direction.
      end_point : array-like, shape=[..., *shape]
          End point.
  
      Returns
      -------
      parallel_transport : array-like, shape=[..., *shape]
          Parallel transport.
      """
      image_base_point = self.diffeo.diffeomorphism(base_point)
      image_tangent_vec = self.diffeo.tangent_diffeomorphism(
          tangent_vec,
          base_point=base_point,
          image_point=image_base_point,
      )
  
      image_direction = (
          None
          if direction is None
          else self.diffeo.tangent_diffeomorphism(
              direction,
              base_point=base_point,
              image_point=image_base_point,
          )
      )
      image_end_point = (
          None
          if end_point is None
          else self.diffeo.diffeomorphism(end_point)
      )
  
      image_parallel_transport = (
          self.image_space.metric.parallel_transport(
              image_tangent_vec,
              image_base_point,
              direction=image_direction,
              end_point=image_end_point,
          )
      )
  
      if image_end_point is None:
          image_end_point = self.image_space.metric.exp(
              image_direction, image_base_point
          )
  
      return self.diffeo.inverse_tangent_diffeomorphism(
          image_parallel_transport,
          image_point=image_end_point,
          base_point=end_point,
      )
  
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 12 for calling the PullbackDiffeoMetric obj's underlying member method code with example usage: obj.parallel_transport(tangent_vec, base_point, direction, end_point) and returns: self