code: def tmatrix_cov(C, k=None):
      r
      if issparse(C):
          warnings.warn("Covariance matrix will be dense for sparse input")
          C = C.toarray()
      return dense.covariance.tmatrix_cov(C, row=k)
docs: r"""Covariance tensor for non-reversible transition matrix posterior.
  
      Parameters
      ----------
      C : (M, M) ndarray or scipy.sparse matrix
          Count matrix
      k : int (optional)
          Return only covariance matrix for entires in the k-th row of
          the transition matrix
  
      Returns
      -------
      cov : (M, M, M) ndarray
          Covariance tensor for transition matrix posterior
  
      Notes
      -----
      The posterior of non-reversible transition matrices is
  
      .. math:: \mathbb{P}(T|C) \propto \prod_{i=1}^{M} \left( \prod_{j=1}^{M} p_{ij}^{c_{ij}} \right)
  
      Each row in the transition matrix is distributed according to a
      Dirichlet distribution with parameters given by the observed
      transition counts :math:`c_{ij}`.
  
      The covariance tensor
      :math:`\text{cov}[p_{ij},p_{kl}]=\Sigma_{i,j,k,l}` is zero
      whenever :math:`i \neq k` so that only :math:`\Sigma_{i,j,i,l}` is
      returned.