code: def test_recursive_rumba():
      # Test with recursive data-driven response
  
      sphere = default_sphere  # repulsion 724
  
      btable = np.loadtxt(get_fnames("dsi515btable"))
      bvals = btable[:, 0]
      bvecs = btable[:, 1:]
      gtab = gradient_table(bvals, bvecs)
      data, golden_directions = sticks_and_ball(
          gtab,
          d=0.0015,
          S0=100,
          angles=[(0, 0), (90, 0)],
          fractions=[50, 50],
          snr=None,
      )
  
      wm_response = AxSymShResponse(
          480,
          np.array(
              [
                  570.35065982,
                  -262.81741086,
                  80.23104069,
                  -16.93940972,
                  2.57628738,
              ]
          ),
      )
      model = RumbaSDModel(gtab, wm_response, n_iter=20, sphere=sphere)
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
          model_fit = model.fit(data)
  
      # Test peaks
      odf = model_fit.odf(sphere)
      directions, _, _ = peak_directions(odf, sphere, 0.35, 25)
      assert_equal(len(directions), 2)
      assert_almost_equal(
          angular_similarity(directions, golden_directions), 2, 1
      )
  
imports: import warnings
  import numpy
  from numpy.testing import assert_equal, assert_almost_equal, assert_array_equal, assert_allclose, assert_raises
  from numpy.testing import assert_
  from dipy.reconst.rumba import RumbaSDModel, generate_kernel
  from dipy.reconst.csdeconv import AxSymShResponse
  from dipy.data import get_fnames, dsi_voxels, default_sphere, get_sphere
  from dipy.core.gradients import gradient_table, unique_bvals_tolerance
  from dipy.core.geometry import cart2sphere
  from dipy.core.sphere_stats import angular_similarity
  from dipy.reconst.tests.test_dsi import sticks_and_ball_dummies
  from dipy.sims.voxel import sticks_and_ball, multi_tensor, single_tensor
  from dipy.direction.peaks import peak_directions
  from dipy.reconst.shm import descoteaux07_legacy_msg
label_desc: Use image node_id 3 for calling a global function with example usage: test_recursive_rumba() without return types