docstr: Bulk kurtosis.
  
  Returns
  -------
  k_bulk : numpy.ndarray
  
  Notes
  -----
  Bulk kurtosis is calculated as
  
      .. math::
  
          K_      ext{bulk} = 3 rac{\mathbb{C} : \mathbb{E}_     ext{bulk}}
          {\langle \mathbf{D} 
  angle \otimes \langle \mathbf{D} 
  angle :
          \mathbb{E}_     ext{bulk}}
docstr_tok: ["Bulk","kurtosis",".","Returns","--","--","--","-","k_bulk",":","numpy.ndarray","Notes","--","--","-","Bulk","kurtosis","is","calculated","as","..","math",":",":","K_","ext","{","bulk","}","=","3","rac","{","\\mathbb","{","C","}",":","\\mathbb","{","E","}","_","ext","{","bulk","}","}","{","\\langle","\\mathbf","{","D","}","angle","\\otimes","\\langle","\\mathbf","{","D","}","angle",":","\\mathbb","{","E","}","_","ext","{","bulk","}","}"]
code: def k_bulk(self):
      """Bulk kurtosis.
  
      Returns
      -------
      k_bulk : numpy.ndarray
  
      Notes
      -----
      Bulk kurtosis is calculated as
  
          .. math::
  
              K_\text{bulk} = 3 \frac{\mathbb{C} : \mathbb{E}_\text{bulk}}
              {\langle \mathbf{D} \rangle \otimes \langle \mathbf{D} \rangle :
              \mathbb{E}_\text{bulk}}
      """
      k_bulk = (
          3
          * np.matmul(
              self.params[..., np.newaxis, 7::],
              from_6x6_to_21x1(E_bulk),
          )
          / np.matmul(
              np.swapaxes(from_6x6_to_21x1(self.d_sq), -1, -2),
              from_6x6_to_21x1(E_bulk),
          )
      )[..., 0, 0]
      return k_bulk
  
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 17 for calling the QtiFit obj's underlying member method code with example usage: obj.k_bulk() and returns: k_bulk