class_docstr: A class for generating signals from streamlines in an efficient and speedy
  manner.
docstr: Initialize a signal maker
  
  Parameters
  ----------
  gtab : GradientTable class instance
      The gradient table on which the signal is calculated.
  evals : array-like of 3 items, optional
      The eigenvalues of the canonical tensor to use in calculating the
      signal.
  sphere : `dipy.core.Sphere` class instance, optional
      The discrete sphere to use as an approximation for the continuous
      sphere on which the signal is represented. If integer - we will use
      an instance of one of the symmetric spheres cached in
      `dps.get_sphere`. If a 'dipy.core.Sphere' class instance is
      provided, we will use this object. Default: the :mod:`dipy.data`
      symmetric sphere with 724 vertices
docstr_tok: ["Initialize","a","signal","maker","Parameters","--","--","--","--","--","gtab",":","GradientTable","class","instance","The","gradient","table","on","which","the","signal","is","calculated",".","evals",":","array-like","of","3","items",",","optional","The","eigenvalues","of","the","canonical","tensor","to","use","in","calculating","the","signal",".","sphere",":","`","dipy.core.Sphere","`","class","instance",",","optional","The","discrete","sphere","to","use","as","an","approximation","for","the","continuous","sphere","on","which","the","signal","is","represented",".","If","integer","-","we","will","use","an","instance","of","one","of","the","symmetric","spheres","cached","in","`","dps.get_sphere","`",".","If","a","'dipy.core.Sphere","'","class","instance","is","provided",",","we","will","use","this","object",".","Default",":","the",":","mod",":","`","dipy.data","`","symmetric","sphere","with","724","vertices"]
code: def __init__(self, gtab, evals=(0.001, 0, 0), sphere=None):
      """
      Initialize a signal maker
  
      Parameters
      ----------
      gtab : GradientTable class instance
          The gradient table on which the signal is calculated.
      evals : array-like of 3 items, optional
          The eigenvalues of the canonical tensor to use in calculating the
          signal.
      sphere : `dipy.core.Sphere` class instance, optional
          The discrete sphere to use as an approximation for the continuous
          sphere on which the signal is represented. If integer - we will use
          an instance of one of the symmetric spheres cached in
          `dps.get_sphere`. If a 'dipy.core.Sphere' class instance is
          provided, we will use this object. Default: the :mod:`dipy.data`
          symmetric sphere with 724 vertices
      """
      self.sphere = sphere or dpd.default_sphere
  
      self.gtab = gtab
      self.evals = evals
      # Initialize an empty dict to fill with signals for each of the sphere
      # vertices:
      self.signal = np.empty(
          (self.sphere.vertices.shape[0], np.sum(~gtab.b0s_mask))
      )
      # We'll need to keep track of what we've already calculated:
      self._calculated = []
  
imports: import numpy
  import scipy.sparse
  import scipy.linalg
  from dipy.reconst.base import ReconstModel, ReconstFit
  from dipy.tracking.utils import unique_rows
  from dipy.tracking.streamline import transform_streamlines
  from dipy.tracking.vox2track import _voxel2streamline
  import dipy.data
  import dipy.core.optimize
label_desc: Use image node_id 1 to create a new LifeSignalMaker object  with example: obj = LifeSignalMaker(gtab, evals, sphere)