code: def test_convert_sh_to_legacy():
      hemisphere = hemi_icosahedron.subdivide(2)
      mevals = np.array(
          [[0.0015, 0.0003, 0.0003], [0.0015, 0.0003, 0.0003]]
      )
      angles = [(0, 0), (60, 0)]
      odf = multi_tensor_odf(
          hemisphere.vertices, mevals, angles, [50, 50]
      )
  
      sh_coeffs = sf_to_sh(odf, hemisphere, 8, legacy=False)
      converted_coeffs = convert_sh_to_legacy(sh_coeffs, "descoteaux07")
  
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=descoteaux07_legacy_msg,
              category=PendingDeprecationWarning,
          )
  
          expected_coeffs = sf_to_sh(odf, hemisphere, 8, legacy=True)
  
      assert_array_almost_equal(converted_coeffs, expected_coeffs, 2)
  
      sh_coeffs = sf_to_sh(
          odf, hemisphere, 8, basis_type="tournier07", legacy=False
      )
      converted_coeffs = convert_sh_to_legacy(sh_coeffs, "tournier07")
  
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=tournier07_legacy_msg,
              category=PendingDeprecationWarning,
          )
  
          expected_coeffs = sf_to_sh(
              odf, hemisphere, 8, basis_type="tournier07", legacy=True
          )
  
      assert_array_almost_equal(converted_coeffs, expected_coeffs, 2)
  
      # 2D case
      odfs = np.array([odf, odf])
      sh_coeffs = sf_to_sh(
          odfs,
          hemisphere,
          8,
          basis_type="tournier07",
          full_basis=True,
          legacy=False,
      )
      converted_coeffs = convert_sh_to_legacy(
          sh_coeffs, "tournier07", full_basis=True
      )
      with warnings.catch_warnings():
          warnings.filterwarnings(
              "ignore",
              message=tournier07_legacy_msg,
              category=PendingDeprecationWarning,
          )
  
          expected_coeffs = sf_to_sh(
              odfs,
              hemisphere,
              8,
              basis_type="tournier07",
              legacy=True,
              full_basis=True,
          )
  
      assert_array_almost_equal(converted_coeffs, expected_coeffs, 2)
      assert_raises(
          ValueError, convert_sh_to_legacy, sh_coeffs, "", True
      )
  
imports: import warnings
  import numpy
  import numpy.linalg
  import numpy.testing
  from dipy.testing import assert_true
  from numpy.testing import assert_array_equal, assert_array_almost_equal, assert_equal, assert_raises
  from scipy.special import sph_harm
  from dipy.core.sphere import hemi_icosahedron, Sphere
  from dipy.core.gradients import gradient_table
  from dipy.core.interpolation import NearestNeighborInterpolator
  from dipy.sims.voxel import single_tensor
  from dipy.direction.peaks import peak_directions
  from dipy.reconst.shm import sf_to_sh, sh_to_sf
  from dipy.sims.voxel import multi_tensor_odf
  from dipy.data import mrtrix_spherical_functions
  from dipy.reconst import odf
  from dipy.reconst.shm import real_sh_descoteaux_from_index, real_sym_sh_basis, real_sym_sh_mrtrix, real_sh_descoteaux, real_sh_tournier, sph_harm_ind_list, order_from_ncoef, OpdtModel, normalize_data, hat, lcr_matrix, smooth_pinv, bootstrap_data_array, bootstrap_data_voxel, ResidualBootstrapWrapper, CsaOdfModel, QballModel, SphHarmFit, spherical_harmonics, anisotropic_power, calculate_max_order, sh_to_sf_matrix, gen_dirac, convert_sh_to_full_basis, convert_sh_from_legacy, convert_sh_to_legacy, convert_sh_descoteaux_tournier, descoteaux07_legacy_msg, tournier07_legacy_msg
label_desc: Use image node_id 24 for calling a global function with example usage: test_convert_sh_to_legacy() without return types