code: def test_input_parameters():
      gtab_4d = generate_gtab4D()
  
      # uneven radial order
      assert_raises(
          ValueError, qtdmri.QtdmriModel, gtab_4d, radial_order=3
      )
  
      # negative radial order
      assert_raises(
          ValueError, qtdmri.QtdmriModel, gtab_4d, radial_order=-1
      )
  
      # negative time order
      assert_raises(
          ValueError, qtdmri.QtdmriModel, gtab_4d, time_order=-1
      )
  
      # non-bool laplacian_regularization
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          laplacian_regularization="test",
      )
  
      # 'non-"GCV" string for laplacian_weighting
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          laplacian_regularization=True,
          laplacian_weighting="test",
      )
  
      # negative laplacian_weighting
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          laplacian_regularization=True,
          laplacian_weighting=-1.0,
      )
  
      # non-bool for l1_weighting
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          l1_regularization="test",
      )
  
      # non-"CV" string for laplacian_weighting
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          l1_regularization=True,
          l1_weighting="test",
      )
  
      # negative l1_weighting is caught
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          l1_regularization=True,
          l1_weighting=-1.0,
      )
  
      # non-bool cartesian is caught
      assert_raises(
          ValueError, qtdmri.QtdmriModel, gtab_4d, cartesian="test"
      )
  
      # non-bool anisotropic_scaling is caught
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          anisotropic_scaling="test",
      )
  
      # non-bool constrain_q0 is caught
      assert_raises(
          ValueError, qtdmri.QtdmriModel, gtab_4d, constrain_q0="test"
      )
  
      # negative bval_threshold is caught
      assert_raises(
          ValueError, qtdmri.QtdmriModel, gtab_4d, bval_threshold=-1
      )
  
      # negative eigenvalue_threshold is caught
      assert_raises(
          ValueError,
          qtdmri.QtdmriModel,
          gtab_4d,
          eigenvalue_threshold=-1,
      )
  
      error = ValueError if qtdmri.have_cvxpy else ImportError
  
      # unavailable cvxpy solver is caught
      assert_raises(
          error,
          qtdmri.QtdmriModel,
          gtab_4d,
          laplacian_regularization=True,
          cvxpy_solver="test",
      )
  
      # non-normalized non-cartesian l1-regularization is caught
      assert_raises(
          error,
          qtdmri.QtdmriModel,
          gtab_4d,
          l1_regularization=True,
          cartesian=False,
          normalization=False,
      )
  
imports: import warnings
  import numpy
  import scipy.integrate
  from numpy.testing import assert_, assert_almost_equal, assert_array_almost_equal, assert_equal, assert_raises
  import pytest
  from dipy.core.gradients import gradient_table_from_qvals_bvecs
  from dipy.data import get_gtab_taiwan_dsi, get_sphere
  from dipy.reconst import qtdmri, mapmri
  from dipy.reconst.shm import descoteaux07_legacy_msg
  from dipy.sims.voxel import multi_tensor, add_noise
  from dipy.testing.decorators import set_random_number_generator
label_desc: Use image node_id 3 for calling a global function with example usage: test_input_parameters() without return types