code: def dki_signal(gtab, dt, kt, S0=150, snr=None):
      r"""Simulated signal based on the diffusion and diffusion kurtosis
      tensors of a single voxel. Simulations are performed assuming the DKI
      model.
  
      Parameters
      ----------
      gtab : GradientTable
          Measurement directions.
      dt : (6,) ndarray
          Elements of the diffusion tensor.
      kt : (15, ) ndarray
          Elements of the diffusion kurtosis tensor.
      S0 : float (optional)
          Strength of signal in the presence of no diffusion gradient.
      snr : float (optional)
          Signal to noise ratio, assuming Rician noise.  None implies no noise.
  
      Returns
      -------
      S : (N,) ndarray
          Simulated signal based on the DKI model:
  
      .. math::
  
          S=S_{0}e^{-bD+\frac{1}{6}b^{2}D^{2}K}
  
      References
      ----------
      .. [1] R. Neto Henriques et al., "Exploring the 3D geometry of the
             diffusion kurtosis tensor - Impact on the development of robust
             tractography procedures and novel biomarkers", NeuroImage (2015)
             111, 85-99.
  
      """
      dt = np.array(dt)
      kt = np.array(kt)
  
      A = dki_design_matrix(gtab)
  
      # define vector of DKI parameters
      MD = (dt[0] + dt[2] + dt[5]) / 3
      X = np.concatenate(
          (dt, kt * MD * MD, np.array([-np.log(S0)])), axis=0
      )
  
      # Compute signals based on the DKI model
      S = np.exp(dot(A, X))
  
      S = add_noise(S, snr, S0)
  
      return S
  
imports: import numpy
  from numpy import dot
  from dipy.core.geometry import sphere2cart
  from dipy.core.geometry import vec2vec_rotmat
  from dipy.core.gradients import GradientTable
  from dipy.reconst.utils import dki_design_matrix
  from scipy.special import jn
label_desc: Use image node_id 14 for calling a global function with example usage: dki_signal(gtab, dt, kt, S0, snr) and returns: S