code: def make_projector(projs, ch_names, bads=(), include_active=True):
      """Create an SSP operator from SSP projection vectors.
  
      Parameters
      ----------
      projs : list
          List of projection vectors.
      ch_names : list of str
          List of channels to include in the projection matrix.
      bads : list of str
          Some bad channels to exclude. If bad channels were marked
          in the raw file when projs were calculated using mne-python,
          they should not need to be included here as they will
          have been automatically omitted from the projectors.
      include_active : bool
          Also include projectors that are already active.
  
      Returns
      -------
      proj : array of shape [n_channels, n_channels]
          The projection operator to apply to the data.
      nproj : int
          How many items in the projector.
      U : array
          The orthogonal basis of the projection vectors.
      """
      return _make_projector(projs, ch_names, bads, include_active)
  
imports: import re
  from copy import deepcopy
  from itertools import count
  import numpy
  from ..defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT
  from ..fixes import _safe_svd
  from ..utils import _check_option, _validate_type, fill_doc, logger, object_diff, verbose, warn
  from .constants import FIFF
  from .pick import _ELECTRODE_CH_TYPES, _electrode_types, pick_info, pick_types
  from .tag import _rename_list, find_tag
  from .tree import dir_tree_find
  from .write import _safe_name_list, end_block, start_block, write_float, write_float_matrix, write_int, write_name_list_sanitized, write_string
label_desc: Use image node_id 5 for calling a global function with example usage: make_projector(projs, ch_names, bads, include_active) and returns: _make_projector