class_docstr: Bilinear spatial filter.
  
  Bilinear spatial filter for SPD matrices allows to define a custom spatial
  filter for bilinear projection of the data:
  
  .. math::
      \mathbf{Cf}_i = \mathbf{V} \mathbf{C}_i \mathbf{V}^T
  
  If log parameter is set to true, will return the log of the diagonal:
  
  .. math::
      \mathbf{cf}_i = \log [ \mathrm{diag} (\mathbf{Cf}_i) ]
  
  Parameters
  ----------
  filters : ndarray, shape (n_filters, n_channels)
      The filters for bilinear transform.
  log : bool, default=False
      If true, return the log variance, otherwise return the spatially
      filtered covariance matrices.
  
  Attributes
  ----------
  filters_ : ndarray, shape (n_filters, n_channels)
      If fit, the filter components used to decompose the data for each event
      type, concatenated.
docstr: Init.
docstr_tok: ["Init","."]
code: def __init__(self, filters, log=False):
      """Init."""
      self.filters_ = filters
      self.filters = filters
      self.log = log
  
imports: import warnings
  import numpy
  from scipy.linalg import eigh, inv
  from sklearn.base import BaseEstimator, TransformerMixin
  from .utils.covariance import _check_cov_est_function, normalize, get_nondiag_weight
  from .utils.mean import mean_covariance
  from .utils.ajd import ajd_pham
  from .None import estimation
  from .preprocessing import Whitening
label_desc: Use image node_id 1 to create a new BilinearFilter object from inherited base classes: BaseEstimator, TransformerMixin with example: obj = BilinearFilter(filters, log)