class_docstr: Class for the Hypersphere Metric.
docstr: Compute the Christoffel symbols at a point.
  
  Only implemented in dimension 2 and for spherical coordinates.
  
  Parameters
  ----------
  base_point : array-like, shape=[..., dim]
      Point on hypersphere where the Christoffel symbols are computed.
  
  Returns
  -------
  christoffel : array-like, shape=[..., contravariant index, 1st                                          covariant index, 2nd covariant index]
      Christoffel symbols at point.
docstr_tok: ["Compute","the","Christoffel","symbols","at","a","point",".","Only","implemented","in","dimension","2","and","for","spherical","coordinates",".","Parameters","--","--","--","--","--","base_point",":","array-like",",","shape=","[","...",",","dim","]","Point","on","hypersphere","where","the","Christoffel","symbols","are","computed",".","Returns","--","--","--","-","christoffel",":","array-like",",","shape=","[","...",",","contravariant","index",",","1st","covariant","index",",","2nd","covariant","index","]","Christoffel","symbols","at","point","."]
code: def christoffels(self, base_point):
      """Compute the Christoffel symbols at a point.
  
          Only implemented in dimension 2 and for spherical coordinates.
  
          Parameters
          ----------
          base_point : array-like, shape=[..., dim]
              Point on hypersphere where the Christoffel symbols are computed.
  
          Returns
          -------
          christoffel : array-like, shape=[..., contravariant index, 1st \
                                           covariant index, 2nd covariant index]
              Christoffel symbols at point.
          """
      if (
          self._space.dim != 2
          or self._space.default_coords_type != "intrinsic"
      ):
          raise NotImplementedError(
              "The Christoffel symbols are only implemented"
              " for spherical coordinates in the 2-sphere"
          )
      batch_shape = get_batch_shape(self._space.point_ndim, base_point)
  
      theta = base_point[..., 0]
  
      gamma_0 = gs.stack(
          [
              gs.zeros(batch_shape + (2,)),
              gs.stack(
                  [
                      gs.zeros(batch_shape),
                      -gs.sin(theta) * gs.cos(theta),
                  ],
                  axis=-1,
              ),
          ],
          axis=-1,
      )
      gamma_1 = gs.stack(
          [
              gs.stack(
                  [
                      gs.zeros(batch_shape),
                      gs.cos(theta) / gs.sin(theta),
                  ],
                  axis=-1,
              ),
              gs.stack(
                  [
                      gs.cos(theta) / gs.sin(theta),
                      gs.zeros(batch_shape),
                  ],
                  axis=-1,
              ),
          ],
          axis=-1,
      )
  
      return gs.stack([gamma_0, gamma_1], axis=-3)
  
imports: import logging
  import math
  from itertools import product
  from scipy.stats import beta
  import geomstats.algebra_utils
  import geomstats.backend
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.euclidean import Euclidean
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import get_batch_shape, repeat_out
label_desc: Use image node_id 9 for calling the HypersphereMetric obj's underlying member method code with example usage: obj.christoffels(base_point) and returns: gs