code: def _sample_gaussian_spd_centered(
      n_matrices,
      n_dim,
      sigma,
      random_state=None,
      n_jobs=1,
      sampling_method="auto",
  ):
      """Sample a Riemannian Gaussian distribution centered at the Identity.
  
      Sample SPD matrices from a Riemannian Gaussian distribution centered at the
      Identity, which has the role of the origin in the SPD manifold, and
      dispersion parametrized by sigma. See [1]_ for the mathematical details.
  
      Parameters
      ----------
      n_matrices : int
          How many matrices to generate.
      n_dim : int
          Dimensionality of the SPD matrices to be sampled.
      sigma : float
          Dispersion of the Riemannian Gaussian distribution.
      random_state : int, RandomState instance or None, default=None
          Pass an int for reproducible output across multiple function calls.
      n_jobs : int, default=1
          The number of jobs to use for the computation. This works by computing
          each of the class centroid in parallel. If -1 all CPUs are used.
      sampling_method : str, default='auto'
          Name of the sampling method used to sample samples_r. It can be
          'auto', 'slice' or 'rejection'. If it is 'auto', the sampling_method
          will be equal to 'slice' for n_dim != 2 and equal to
          'rejection' for n_dim = 2.
  
          .. versionadded:: 0.4
  
      Returns
      -------
      samples : ndarray, shape (n_matrices, n_dim, n_dim)
          Samples of the Riemannian Gaussian distribution.
  
      Notes
      -----
      .. versionadded:: 0.3
  
      References
      ----------
      .. [1] `Riemannian Gaussian distributions on the space of symmetric
          positive definite matrices
          <https://hal.archives-ouvertes.fr/hal-01710191>`_
          S. Said, L. Bombrun, Y. Berthoumieu, and J. Manton. IEEE Trans Inf
          Theory, vol. 63, pp. 2153–2170, 2017.
      """
  
      samples_r = _sample_parameter_r(
          n_samples=n_matrices,
          n_dim=n_dim,
          sigma=sigma,
          random_state=random_state,
          n_jobs=n_jobs,
          sampling_method=sampling_method,
      )
      samples_U = _sample_parameter_U(
          n_samples=n_matrices, n_dim=n_dim, random_state=random_state
      )
  
      samples = np.zeros((n_matrices, n_dim, n_dim))
      for i in range(n_matrices):
          Ui = samples_U[i]
          ri = samples_r[i]
          samples[i] = Ui.T @ np.diag(np.exp(ri)) @ Ui
          samples[i] = 0.5 * (samples[i] + samples[i].T)
  
      return samples
  
file_path: pyRiemann/pyriemann/datasets/sampling.py
imports: from functools import partial
  import warnings
  import numpy
  from scipy.stats import multivariate_normal
  from sklearn.utils import check_random_state
  from joblib import Parallel, delayed
  from ..utils.base import sqrtm, expm
  from ..utils.test import is_sym_pos_semi_def
label_desc: Use image node_id 9 for calling a global function with example usage: _sample_gaussian_spd_centered(n_matrices, n_dim, sigma, random_state, n_jobs, sampling_method) and returns: samples