code: def test_r2_term_odf_sharp():
      SNR = None
      S0 = 1
      angle = 45  # 45 degrees is a very tight angle to disentangle
  
      _, fbvals, fbvecs = get_fnames(
          "small_64D"
      )  # get_fnames('small_64D')
  
      bvals, bvecs = read_bvals_bvecs(fbvals, fbvecs)
  
      sphere = default_sphere
      gtab = gradient_table(bvals, bvecs)
      mevals = np.array(
          ([0.0015, 0.0003, 0.0003], [0.0015, 0.0003, 0.0003])
      )
  
      angles = [(0, 0), (angle, 0)]
  
      S, _ = multi_tensor(
          gtab, mevals, S0, angles=angles, fractions=[50, 50], snr=SNR
      )
  
      odf_gt = multi_tensor_odf(
          sphere.vertices, mevals, angles, [50, 50]
      )
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
          odfs_sh = sf_to_sh(
              odf_gt, sphere, sh_order=8, basis_type=None
          )
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
          fodf_sh = odf_sh_to_sharp(
              odfs_sh,
              sphere,
              basis=None,
              ratio=3 / 15.0,
              sh_order=8,
              lambda_=1.0,
              tau=0.1,
              r2_term=True,
          )
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
          fodf = sh_to_sf(fodf_sh, sphere, sh_order=8, basis_type=None)
  
      directions_gt, _, _ = peak_directions(odf_gt, sphere)
      directions, _, _ = peak_directions(fodf, sphere)
  
      ang_sim = angular_similarity(directions_gt, directions)
      assert_equal(ang_sim > 1.9, True)
      assert_equal(directions.shape[0], 2)
  
      # This should pass as well
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
          sdt_model = ConstrainedSDTModel(
              gtab, ratio=3 / 15.0, sh_order=8
          )
      sdt_fit = sdt_model.fit(S)
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
          fodf = sdt_fit.odf(sphere)
  
      directions_gt, _, _ = peak_directions(odf_gt, sphere)
      directions, _, _ = peak_directions(fodf, sphere)
      ang_sim = angular_similarity(directions_gt, directions)
      assert_equal(ang_sim > 1.9, True)
      assert_equal(directions.shape[0], 2)
  
imports: import warnings
  import numpy
  import numpy.testing
  from numpy.testing import assert_, assert_equal, assert_almost_equal, assert_array_almost_equal, assert_array_equal
  from dipy.testing import assert_greater, assert_greater_equal
  from dipy.data import get_sphere, get_fnames, default_sphere, small_sphere
  from dipy.sims.voxel import multi_tensor, single_tensor, multi_tensor_odf, all_tensor_evecs, single_tensor_odf
  from dipy.core.gradients import gradient_table
  from dipy.core.sphere import Sphere, HemiSphere
  from dipy.core.sphere_stats import angular_similarity
  from dipy.reconst.csdeconv import ConstrainedSphericalDeconvModel, ConstrainedSDTModel, forward_sdeconv_mat, odf_deconv, odf_sh_to_sharp, mask_for_response_ssst, response_from_mask_ssst, response_from_mask, auto_response_ssst, auto_response, recursive_response
  from dipy.direction.peaks import peak_directions
  from dipy.reconst.dti import TensorModel, fractional_anisotropy
  from dipy.reconst.shm import descoteaux07_legacy_msg, QballModel, sf_to_sh, sh_to_sf, real_sh_descoteaux, sph_harm_ind_list
  from dipy.reconst.shm import lazy_index
  from dipy.utils.deprecator import ExpiredDeprecationError
  from dipy.io.gradients import read_bvals_bvecs
  from dipy.testing.decorators import set_random_number_generator
label_desc: Use image node_id 13 for calling a global function with example usage: test_r2_term_odf_sharp() without return types