docstr: Microscopic kurtosis.
  
  Returns
  -------
  k_mu : numpy.ndarray
  
  Notes
  -----
  Microscopic kurtosis is calculated as
  
      .. math::
  
          K_\mu = rac{6}{5} rac{\langle \mathbf{D} \otimes \mathbf{D}
          
  angle : \mathbb{E}_     ext{shear}}{\langle \mathbf{D} 
  angle
          \otimes \langle \mathbf{D} 
  angle : \mathbb{E}_     ext{bulk}}
docstr_tok: ["Microscopic","kurtosis",".","Returns","--","--","--","-","k_mu",":","numpy.ndarray","Notes","--","--","-","Microscopic","kurtosis","is","calculated","as","..","math",":",":","K_\\mu","=","rac","{","6","}","{","5","}","rac","{","\\langle","\\mathbf","{","D","}","\\otimes","\\mathbf","{","D","}","angle",":","\\mathbb","{","E","}","_","ext","{","shear","}","}","{","\\langle","\\mathbf","{","D","}","angle","\\otimes","\\langle","\\mathbf","{","D","}","angle",":","\\mathbb","{","E","}","_","ext","{","bulk","}","}"]
code: def k_mu(self):
      """Microscopic kurtosis.
  
      Returns
      -------
      k_mu : numpy.ndarray
  
      Notes
      -----
      Microscopic kurtosis is calculated as
  
          .. math::
  
              K_\mu = \frac{6}{5} \frac{\langle \mathbf{D} \otimes \mathbf{D}
              \rangle : \mathbb{E}_\text{shear}}{\langle \mathbf{D} \rangle
              \otimes \langle \mathbf{D} \rangle : \mathbb{E}_\text{bulk}}
      """
      k_mu = (
          6
          / 5
          * np.matmul(
              np.swapaxes(from_6x6_to_21x1(self.mean_d_sq), -1, -2),
              from_6x6_to_21x1(E_shear),
          )
          / np.matmul(
              np.swapaxes(from_6x6_to_21x1(self.d_sq), -1, -2),
              from_6x6_to_21x1(E_bulk),
          )
      )[..., 0, 0]
      return k_mu
  
imports: from warnings import warn
  import numpy
  from dipy.reconst.base import ReconstModel
  from dipy.reconst.dti import auto_attr
  from dipy.utils.optpkg import optional_package
label_desc: Use image node_id 19 for calling the QtiFit obj's underlying member method code with example usage: obj.k_mu() and returns: k_mu