code: def compute_proj_epochs(
      epochs,
      n_grad=2,
      n_mag=2,
      n_eeg=2,
      n_jobs=None,
      desc_prefix=None,
      meg="separate",
      verbose=None,
  ):
      """Compute SSP (signal-space projection) vectors on epoched data.
  
      %(compute_ssp)s
  
      Parameters
      ----------
      epochs : instance of Epochs
          The epochs containing the artifact.
      %(n_proj_vectors)s
      %(n_jobs)s
          Number of jobs to use to compute covariance.
      desc_prefix : str | None
          The description prefix to use. If None, one will be created based on
          the event_id, tmin, and tmax.
      meg : str
          Can be ``'separate'`` (default) or ``'combined'`` to compute projectors
          for magnetometers and gradiometers separately or jointly.
          If ``'combined'``, ``n_mag == n_grad`` is required and the number of
          projectors computed for MEG will be ``n_mag``.
  
          .. versionadded:: 0.18
      %(verbose)s
  
      Returns
      -------
      projs: list of Projection
          List of projection vectors.
  
      See Also
      --------
      compute_proj_raw, compute_proj_evoked
      """
      # compute data covariance
      data = _compute_cov_epochs(epochs, n_jobs)
      event_id = epochs.event_id
      if event_id is None or len(list(event_id.keys())) == 0:
          event_id = "0"
      elif len(event_id.keys()) == 1:
          event_id = str(list(event_id.values())[0])
      else:
          event_id = "Multiple-events"
      if desc_prefix is None:
          desc_prefix = "%s-%-.3f-%-.3f" % (
              event_id,
              epochs.tmin,
              epochs.tmax,
          )
      return _compute_proj(
          data, epochs.info, n_grad, n_mag, n_eeg, desc_prefix, meg=meg
      )
  
imports: import numpy
  from ._fiff.constants import FIFF
  from ._fiff.open import fiff_open
  from ._fiff.pick import _picks_to_idx, pick_types, pick_types_forward
  from ._fiff.proj import Projection, _has_eeg_average_ref_proj, _read_proj, _write_proj, make_eeg_average_ref_proj, make_projector
  from ._fiff.write import start_and_end_file
  from .cov import _check_n_samples
  from .epochs import Epochs
  from .event import make_fixed_length_events
  from .fixes import _safe_svd
  from .forward import _subject_from_forward, convert_forward_solution, is_fixed_orient
  from .parallel import parallel_func
  from .source_estimate import _make_stc
  from .utils import _check_fname, _check_option, _validate_type, check_fname, logger, verbose
label_desc: Use image node_id 4 for calling a global function with example usage: compute_proj_epochs(epochs, n_grad, n_mag, n_eeg, n_jobs, desc_prefix, meg, verbose) and returns: _compute_proj