docstr: Constructs GM volume fraction for each voxel.
  
  Returns
  -------
  f_gm : ndarray ([x, y, z])
      GM volume fraction.
docstr_tok: ["Constructs","GM","volume","fraction","for","each","voxel",".","Returns","--","--","--","-","f_gm",":","ndarray","(","[","x",",","y",",","z","]",")","GM","volume","fraction","."]
code: def f_gm(self):
      """
      Constructs GM volume fraction for each voxel.
  
      Returns
      -------
      f_gm : ndarray ([x, y, z])
          GM volume fraction.
      """
  
      f_gm = self.model_params[..., -2]
      return f_gm
  
imports: import logging
  import warnings
  import numpy
  from dipy.core.geometry import vec2vec_rotmat
  from dipy.core.gradients import gradient_table, unique_bvals_tolerance, get_bval_indices
  from dipy.core.onetime import auto_attr
  from dipy.core.sphere import Sphere
  from dipy.data import get_sphere
  from dipy.reconst.shm import lazy_index, normalize_data
  from dipy.reconst.odf import OdfModel, OdfFit
  from dipy.reconst.csdeconv import AxSymShResponse
  from dipy.segment.mask import bounding_box, crop
  from dipy.sims.voxel import single_tensor, all_tensor_evecs
label_desc: Use image node_id 3 for calling the RumbaFit obj's underlying member method code with example usage: obj.f_gm() and returns: f_gm