class_docstr: Diffusion gradient information
  
  Parameters
  ----------
  gradients : array_like (N, 3)
      Diffusion gradients. The direction of each of these vectors corresponds
      to the b-vector, and the length corresponds to the b-value.
  b0_threshold : float
      Gradients with b-value less than or equal to `b0_threshold` are
      considered as b0s i.e. without diffusion weighting.
  
  Attributes
  ----------
  gradients : (N,3) ndarray
      diffusion gradients
  bvals : (N,) ndarray
      The b-value, or magnitude, of each gradient direction.
  qvals: (N,) ndarray
      The q-value for each gradient direction. Needs big and small
      delta.
  bvecs : (N,3) ndarray
      The direction, represented as a unit vector, of each gradient.
  b0s_mask : (N,) ndarray
      Boolean array indicating which gradients have no diffusion
      weighting, ie b-value is close to 0.
  b0_threshold : float
      Gradients with b-value less than or equal to `b0_threshold` are
      considered to not have diffusion weighting.
  btens : (N,3,3) ndarray
      The b-tensor of each gradient direction.
  
  See Also
  --------
  gradient_table
  
  Notes
  -----
  The GradientTable object is immutable. Do NOT assign attributes.
  If you have your gradient table in a bval & bvec format, we recommend
  using the factory function gradient_table
class_docstr_tok: ["Diffusion","gradient","information","Parameters","--","--","--","--","--","gradients",":","array_like","(","N",",","3",")","Diffusion","gradients",".","The","direction","of","each","of","these","vectors","corresponds","to","the","b-vector",",","and","the","length","corresponds","to","the","b-value",".","b0_threshold",":","float","Gradients","with","b-value","less","than","or","equal","to","`","b0_threshold","`","are","considered","as","b0s","i.e",".","without","diffusion","weighting",".","Attributes","--","--","--","--","--","gradients",":","(","N,3",")","ndarray","diffusion","gradients","bvals",":","(","N",",",")","ndarray","The","b-value",",","or","magnitude",",","of","each","gradient","direction",".","qvals",":","(","N",",",")","ndarray","The","q-value","for","each","gradient","direction",".","Needs","big","and","small","delta",".","bvecs",":","(","N,3",")","ndarray","The","direction",",","represented","as","a","unit","vector",",","of","each","gradient",".","b0s_mask",":","(","N",",",")","ndarray","Boolean","array","indicating","which","gradients","have","no","diffusion","weighting",",","ie","b-value","is","close","to","0.","b0_threshold",":","float","Gradients","with","b-value","less","than","or","equal","to","`","b0_threshold","`","are","considered","to","not","have","diffusion","weighting",".","btens",":","(","N,3,3",")","ndarray","The","b-tensor","of","each","gradient","direction",".","See","Also","--","--","--","--","gradient_table","Notes","--","--","-","The","GradientTable","object","is","immutable",".","Do","NOT","assign","attributes",".","If","you","have","your","gradient","table","in","a","bval","&","bvec","format",",","we","recommend","using","the","factory","function","gradient_table"]
code: def gradient_strength(self):
      tau = self.big_delta - self.small_delta / 3.0
      qvals = np.sqrt(self.bvals / tau) / (2 * np.pi)
      gradient_strength = (
          qvals
          * (2 * np.pi)
          / (self.small_delta * WATER_GYROMAGNETIC_RATIO)
      )
      return gradient_strength
  
imports: import logging
  from warnings import warn
  import numpy
  from scipy.linalg import inv, polar
  from dipy.io import gradients
  from dipy.core.onetime import auto_attr
  from dipy.core.geometry import vector_norm, vec2vec_rotmat
  from dipy.core.sphere import disperse_charges, HemiSphere
  from dipy.utils.deprecator import deprecate_with_version
label_desc: Use image node_id 5 for calling the GradientTable obj's underlying member method code with example usage: obj.gradient_strength() and returns: gradient_strength