class_docstr: Procrustes metric on the pre-shape space.
class_docstr_tok: ["Procrustes","metric","on","the","pre-shape","space","."]
docstr: Compute the Riemannian parallel transport of a tangent vector.
  
  Parameters
  ----------
  tangent_vec : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at a base point.
  base_point : array-like, shape=[..., k_landmarks, m_ambient]
      Point on the pre-shape space.
  direction : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at a base point.
      Optional, default : None.
  end_point : array-like, shape=[..., k_landmarks, m_ambient]
      Point on the pre-shape space, to transport to. Unused if
      `tangent_vec_b` is given.
      Optional, default : None.
  
  Returns
  -------
  transported : array-like, shape=[..., k_landmarks, m_ambient]
      Point on the pre-shape space equal to the Riemannian exponential
      of tangent_vec at the base point.
docstr_tok: ["Compute","the","Riemannian","parallel","transport","of","a","tangent","vector",".","Parameters","--","--","--","--","--","tangent_vec",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","a","base","point",".","base_point",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Point","on","the","pre-shape","space",".","direction",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","a","base","point",".","Optional",",","default",":","None",".","end_point",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Point","on","the","pre-shape","space",",","to","transport","to",".","Unused","if","`","tangent_vec_b","`","is","given",".","Optional",",","default",":","None",".","Returns","--","--","--","-","transported",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Point","on","the","pre-shape","space","equal","to","the","Riemannian","exponential","of","tangent_vec","at","the","base","point","."]
code: def parallel_transport(
      self, tangent_vec, base_point, direction=None, end_point=None
  ):
      """Compute the Riemannian parallel transport of a tangent vector.
  
      Parameters
      ----------
      tangent_vec : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at a base point.
      base_point : array-like, shape=[..., k_landmarks, m_ambient]
          Point on the pre-shape space.
      direction : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at a base point.
          Optional, default : None.
      end_point : array-like, shape=[..., k_landmarks, m_ambient]
          Point on the pre-shape space, to transport to. Unused if
          `tangent_vec_b` is given.
          Optional, default : None.
  
      Returns
      -------
      transported : array-like, shape=[..., k_landmarks, m_ambient]
          Point on the pre-shape space equal to the Riemannian exponential
          of tangent_vec at the base point.
      """
      if direction is None:
          if end_point is not None:
              direction = self.log(end_point, base_point)
          else:
              raise ValueError(
                  "Either an end_point or a tangent_vec_b must be given to define the"
                  " geodesic along which to transport."
              )
  
      batch_shape = get_batch_shape(
          self._space.point_ndim,
          tangent_vec,
          base_point,
          direction,
          end_point,
      )
  
      flat_bp = self._flatten_point(base_point)
      flat_tan_a = self._flatten_point(tangent_vec)
      flat_tan_b = self._flatten_point(direction)
  
      flat_transport = self._space._sphere.metric.parallel_transport(
          flat_tan_a, flat_bp, flat_tan_b
      )
      return gs.reshape(flat_transport, batch_shape + self._space.shape)
  
imports: import geomstats.backend
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.fiber_bundle import FiberBundle
  from geomstats.geometry.hypersphere import Hypersphere
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.quotient_metric import QuotientMetric
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.integrator import integrate
  from geomstats.vectorization import get_batch_shape, repeat_out
label_desc: Use image node_id 7 for calling the PreShapeMetric obj's underlying member method code with example usage: obj.parallel_transport(tangent_vec, base_point, direction, end_point) and returns: gs