code: def _proj_whiten_data(M, proj, filters):
      if filters.get("is_ssp", True):
          # check whether data and filter projs match
          _check_proj_match(proj, filters)
          if filters["whitener"] is None:
              M = np.dot(filters["proj"], M)
  
      if filters["whitener"] is not None:
          M = np.dot(filters["whitener"], M)
      return M
  
imports: from copy import deepcopy
  import numpy
  from .._fiff.proj import Projection, make_projector
  from ..cov import Covariance, make_ad_hoc_cov
  from ..forward.forward import _restrict_forward_to_src_sel, is_fixed_orient
  from ..minimum_norm.inverse import _get_vertno, _prepare_forward
  from ..source_space._source_space import label_src_vertno_sel
  from ..time_frequency.csd import CrossSpectralDensity
  from ..utils import _check_option, _check_src_normal, _import_h5io_funcs, _pl, _reg_pinv, _sym_mat_pow, check_fname, logger, verbose, warn
label_desc: Use image node_id 9 for calling a global function with example usage: _proj_whiten_data(M, proj, filters) and returns: M