code: def _setup_dots(mode, info, coils, ch_type):
      """Set up dot products."""
      int_rad = 0.06
      noise = make_ad_hoc_cov(
          info, dict(mag=20e-15, grad=5e-13, eeg=1e-6)
      )
      n_coeff, interp = (
          (50, "nearest") if mode == "fast" else (100, "linear")
      )
      lut, n_fact = _get_legen_table(
          ch_type, False, n_coeff, verbose=False
      )
      lut_fun = interp1d(
          np.linspace(-1, 1, lut.shape[0]), lut, interp, axis=0
      )
      return int_rad, noise, lut_fun, n_fact
  
imports: import inspect
  from copy import deepcopy
  import numpy
  from scipy.interpolate import interp1d
  from .._fiff.constants import FIFF
  from .._fiff.meas_info import _simplify_info
  from .._fiff.pick import pick_info, pick_types
  from .._fiff.proj import _has_eeg_average_ref_proj, make_projector
  from ..bem import _check_origin
  from ..cov import make_ad_hoc_cov
  from ..epochs import BaseEpochs, EpochsArray
  from ..evoked import Evoked, EvokedArray
  from ..fixes import _safe_svd
  from ..surface import get_head_surf, get_meg_helmet_surf
  from ..transforms import _find_trans, _get_trans, transform_surface_to
  from ..utils import _check_fname, _check_option, _pl, _reg_pinv, logger, verbose
  from ._lead_dots import _do_cross_dots, _do_self_dots, _do_surface_dots, _get_legen_table
  from ._make_forward import _create_eeg_els, _create_meg_coils, _read_coil_defs
label_desc: Use image node_id 1 for calling a global function with example usage: _setup_dots(mode, info, coils, ch_type) and returns: int_rad,  noise,  lut_fun,  n_fact