code: def test_forward_sdeconv_mat():
      _, n = sph_harm_ind_list(4)
      mat = forward_sdeconv_mat(np.array([0, 2, 4]), n)
      expected = np.diag([0, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4])
      npt.assert_array_equal(mat, expected)
  
      sh_order = 8
      expected_size = (sh_order + 1) * (sh_order + 2) / 2
      r_rh = np.arange(0, sh_order + 1, 2)
      m, n = sph_harm_ind_list(sh_order)
      mat = forward_sdeconv_mat(r_rh, n)
      npt.assert_equal(mat.shape, (expected_size, expected_size))
      npt.assert_array_equal(mat.diagonal(), n)
  
      # Odd spherical harmonic degrees should raise a ValueError
      n[2] = 3
      npt.assert_raises(ValueError, forward_sdeconv_mat, r_rh, n)
  
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 12 for calling a global function with example usage: test_forward_sdeconv_mat() without return types