code: def covariances_X(X, estimator="scm", alpha=0.2, **kwds):
      """Special form covariance matrix, embedding input X.
  
      Parameters
      ----------
      X : ndarray, shape (n_matrices, n_channels, n_times)
          Multi-channel time-series.
      estimator : string, default='scm'
          Covariance matrix estimator, see
          :func:`pyriemann.utils.covariance.covariances`.
      alpha : float, default=0.2
          Regularization parameter (strictly positive).
      **kwds : optional keyword parameters
          Any further parameters are passed directly to the covariance estimator.
  
      Returns
      -------
      covmats : ndarray, shape (n_matrices, n_channels + n_times, n_channels + \
              n_times)
          Covariance matrices.
  
      References
      ----------
      .. [1] `A special form of SPD covariance matrix for interpretation and
          visualization of data manipulated with Riemannian geometry
          <https://hal.archives-ouvertes.fr/hal-01103344/>`_
          M. Congedo and A. Barachant, MaxEnt - 34th International Workshop on
          Bayesian Inference and Maximun Entropy Methods in Science and
          Engineering (MaxEnt'14), Sep 2014, Amboise, France. pp.495
      """
      if alpha <= 0:
          raise ValueError(
              f"Parameter alpha must be strictly positive (Got {alpha})"
          )
      est = _check_cov_est_function(estimator)
      n_matrices, n_channels, n_times = X.shape
  
      Hchannels = (
          np.eye(n_channels)
          - np.outer(np.ones(n_channels), np.ones(n_channels))
          / n_channels
      )
      Htimes = (
          np.eye(n_times)
          - np.outer(np.ones(n_times), np.ones(n_times)) / n_times
      )
      X = Hchannels @ X @ Htimes  # Eq(8), double centering
  
      covmats = np.empty(
          (n_matrices, n_channels + n_times, n_channels + n_times)
      )
      for i in range(n_matrices):
          Y = np.concatenate(
              (
                  np.concatenate(
                      (X[i], alpha * np.eye(n_channels)), axis=1
                  ),  # top
                  np.concatenate(
                      (alpha * np.eye(n_times), X[i].T), axis=1
                  ),  # bottom
              ),
              axis=0,
          )  # Eq(9)
          covmats[i] = est(Y, **kwds)
      return covmats / (2 * alpha)
  
imports: import warnings
  from functools import wraps
  import numpy
  from scipy.linalg import block_diag
  from scipy.stats import chi2
  from sklearn.covariance import oas, ledoit_wolf, fast_mcd
  from .distance import distance_mahalanobis
  from .test import is_square, is_real_type
label_desc: Use image node_id 14 for calling a global function with example usage: covariances_X(X, estimator, alpha) and returns: unknown