class_docstr: Mixin class for Raw, Evoked, Epochs.
  
  Notes
  -----
  This mixin adds a proj attribute as a property to data containers.
  It is True if at least one proj is present and all of them are active.
  The projs might not be applied yet if data are not preloaded. In
  this case it's the _projector attribute that does the job.
  If a private _data attribute is present then the projs applied
  to it are the ones marked as active.
  
  A proj parameter passed in constructor of raw or epochs calls
  apply_proj and hence after the .proj attribute is True.
  
  As soon as you've applied the projs it will stay active in the
  remaining pipeline.
  
  The suggested pipeline is proj=True in epochs (it's cheaper than for raw).
  
  When you use delayed SSP in Epochs, projs are applied when you call
  get_data() method. They are not applied to the evoked._data unless you call
  apply_proj(). The reason is that you want to reject with projs although
  it's not stored in proj mode.
code: def _reconstruct_proj(self, mode="accurate", origin="auto"):
      from ..forward import _map_meg_or_eeg_channels
  
      if len(self.info["projs"]) == 0:
          return self
      self.apply_proj()
      for kind in ("meg", "eeg"):
          kwargs = dict(meg=False)
          kwargs[kind] = True
          picks = pick_types(self.info, **kwargs)
          if len(picks) == 0:
              continue
          info_from = pick_info(self.info, picks)
          info_to = info_from.copy()
          with info_to._unlock():
              info_to["projs"] = []
              if kind == "eeg" and _has_eeg_average_ref_proj(info_from):
                  info_to["projs"] = [
                      make_eeg_average_ref_proj(info_to, verbose=False)
                  ]
          mapping = _map_meg_or_eeg_channels(
              info_from, info_to, mode=mode, origin=origin
          )
          self.data[..., picks, :] = np.matmul(
              mapping, self.data[..., picks, :]
          )
      return self
  
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 6 for calling the ProjMixin obj's underlying member method code with example usage: obj._reconstruct_proj(mode, origin) and returns: self, self