class_docstr: Class for (principal) fiber bundles.
  
  This class implements abstract methods for fiber bundles, or more
  generally manifolds, with a submersion map, or a right Lie group action.
  
  Parameters
  ----------
  group : LieGroup
      Group that acts on the total space by the right.
      Optional. Default : None.
      Either the group or the group action must be given.
  group_action : callable
      Right group action. It must take as input a point of the total space
      and an element of the group, and return a point of the total space.
class_docstr_tok: ["Class","for","(","principal",")","fiber","bundles",".","This","class","implements","abstract","methods","for","fiber","bundles",",","or","more","generally","manifolds",",","with","a","submersion","map",",","or","a","right","Lie","group","action",".","Parameters","--","--","--","--","--","group",":","LieGroup","Group","that","acts","on","the","total","space","by","the","right",".","Optional",".","Default",":","None",".","Either","the","group","or","the","group","action","must","be","given",".","group_action",":","callable","Right","group","action",".","It","must","take","as","input","a","point","of","the","total","space","and","an","element","of","the","group",",","and","return","a","point","of","the","total","space","."]
docstr: Project a point to base manifold.
  
  This is the projection of the fiber bundle, defined on the total
  space, with values in the base manifold. This map is surjective.
  By default, the base manifold is not explicit but is identified with a
  local section of the fiber bundle, so the submersion is the identity
  map.
  
  Parameters
  ----------
  point : array-like, shape=[..., {total_space.dim, [n, m]}]
      Point of the total space.
  
  Returns
  -------
  projection : array-like, shape=[..., {base_dim, [n, m]}]
      Point of the base manifold.
docstr_tok: ["Project","a","point","to","base","manifold",".","This","is","the","projection","of","the","fiber","bundle",",","defined","on","the","total","space",",","with","values","in","the","base","manifold",".","This","map","is","surjective",".","By","default",",","the","base","manifold","is","not","explicit","but","is","identified","with","a","local","section","of","the","fiber","bundle",",","so","the","submersion","is","the","identity","map",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","{","total_space.dim",",","[","n",",","m","]","}","]","Point","of","the","total","space",".","Returns","--","--","--","-","projection",":","array-like",",","shape=","[","...",",","{","base_dim",",","[","n",",","m","]","}","]","Point","of","the","base","manifold","."]
code: def riemannian_submersion(point):
      """Project a point to base manifold.
  
      This is the projection of the fiber bundle, defined on the total
      space, with values in the base manifold. This map is surjective.
      By default, the base manifold is not explicit but is identified with a
      local section of the fiber bundle, so the submersion is the identity
      map.
  
      Parameters
      ----------
      point : array-like, shape=[..., {total_space.dim, [n, m]}]
          Point of the total space.
  
      Returns
      -------
      projection : array-like, shape=[..., {base_dim, [n, m]}]
          Point of the base manifold.
      """
      return gs.copy(point)
  
file_path: geomstats/geomstats/geometry/fiber_bundle.py
imports: import sys
  from abc import ABC
  from scipy.optimize import minimize
  import geomstats.backend
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 2 for calling the FiberBundle obj's underlying member method code with example usage: obj.riemannian_submersion(point) and returns: gs