mne.beamformer.make_lcmv¶
-
mne.beamformer.make_lcmv(info, forward, data_cov, reg=0.05, noise_cov=None, label=None, pick_ori=None, rank='info', weight_norm='unit-noise-gain-invariant', reduce_rank=False, depth=None, inversion='matrix', verbose=None)[source]¶ Compute LCMV spatial filter.
- Parameters
- infoinstance of
Info The measurement info to specify the channels to include. Bad channels in info[‘bads’] are not used.
- forwardinstance of
Forward Forward operator.
- data_covinstance of
Covariance The data covariance.
- reg
float The regularization for the whitened data covariance.
- noise_covinstance of
Covariance The noise covariance. If provided, whitening will be done. Providing a noise covariance is mandatory if you mix sensor types, e.g. gradiometers with magnetometers or EEG with MEG.
- labelinstance of
Label Restricts the LCMV solution to a given label.
- pick_ori
None|str For forward solutions with fixed orientation, None (default) must be used and a scalar beamformer is computed. For free-orientation forward solutions, a vector beamformer is computed and:
NoneOrientations are pooled after computing a vector beamformer (Default).
'normal'Filters are computed for the orientation tangential to the cortical surface.
'max-power'Filters are computed for the orientation that maximizes power.
'vector'Keeps the currents for each direction separate
- rank
None|dict| ‘info’ | ‘full’ This controls the rank computation that can be read from the measurement info or estimated from the data. See
Notesofmne.compute_rank()for details.The default is “info”.- weight_norm
str|None Can be:
NoneThe unit-gain LCMV beamformer 1 will be computed.
'unit-noise-gain'The unit-noise gain minimum variance beamformer will be computed (Borgiotti-Kaplan beamformer) 1, which is not rotation invariant when
pick_ori='vector'. This should be combined withstc.project('pca')to follow the definition in 1.
'nai'The Neural Activity Index 2 will be computed, which simply scales all values from
'unit-noise-gain'by a fixed value.
'unit-noise-gain-invariante'Compute a rotation-invariant normalization using the matrix square root. This differs from
'unit-noise-gain'only whenpick_ori='vector', creating a solution that:Is rotation invariant (
'unit-noise-gain'is not);Satisfies the first requirement from 1 that
w @ w.conj().T == I, whereas'unit-noise-gain'has non-zero off-diagonals; butDoes not satisfy the second requirement that
w @ G.T = θI, which arguably does not make sense for a rotation-invariant solution.
Defaults to
'unit-noise-gain-invariant'.- reduce_rankbool
If True, the rank of the denominator of the beamformer formula (i.e., during pseudo-inversion) will be reduced by one for each spatial location. Setting
reduce_rank=Trueis typically necessary if you use a single sphere model with MEG data.Changed in version 0.20: Support for reducing rank in all modes (previously only supported
pick='max_power'with weight normalization).- depth
None|float|dict How to weight (or normalize) the forward using a depth prior. If float (default 0.8), it acts as the depth weighting exponent (
exp) to use, which must be between 0 and 1. None is equivalent to 0, meaning no depth weighting is performed. It can also be adictcontaining keyword arguments to pass tomne.forward.compute_depth_prior()(see docstring for details and defaults). This is effectively ignored whenmethod='eLORETA'.Changed in version 0.20: Depth bias ignored for
method='eLORETA'.New in version 0.18.
- inversion‘single’ | ‘matrix’
This determines how the beamformer deals with source spaces in “free” orientation. Such source spaces define three orthogonal dipoles at each source point. When
inversion='single', each dipole is considered as an individual source and the corresponding spatial filter is computed for each dipole separately. Wheninversion='matrix', all three dipoles at a source vertex are considered as a group and the spatial filters are computed jointly using a matrix inversion. Whileinversion='single'is more stable,inversion='matrix'is more precise. See section 5 of 3. Defaults to'matrix'.New in version 0.21.
- verbosebool,
str,int, orNone If not None, override default verbose level (see
mne.verbose()and Logging documentation for more). If used, it should be passed as a keyword-argument only.
- infoinstance of
- Returns
- filtersinstance of
Beamformer Dictionary containing filter weights from LCMV beamformer. Contains the following keys:
- ‘kind’str
The type of beamformer, in this case ‘LCMV’.
- ‘weights’array
The filter weights of the beamformer.
- ‘data_cov’instance of Covariance
The data covariance matrix used to compute the beamformer.
- ‘noise_cov’instance of Covariance | None
The noise covariance matrix used to compute the beamformer.
- ‘whitener’None | ndarray, shape (n_channels, n_channels)
Whitening matrix, provided if whitening was applied to the covariance matrix and leadfield during computation of the beamformer weights.
- ‘weight_norm’str | None
Type of weight normalization used to compute the filter weights.
- ‘pick-ori’None | ‘max-power’ | ‘normal’ | ‘vector’
The orientation in which the beamformer filters were computed.
- ‘ch_names’list of str
Channels used to compute the beamformer.
- ‘proj’array
Projections used to compute the beamformer.
- ‘is_ssp’bool
If True, projections were applied prior to filter computation.
- ‘vertices’list
Vertices for which the filter weights were computed.
- ‘is_free_ori’bool
If True, the filter was computed with free source orientation.
- ‘n_sources’int
Number of source location for which the filter weight were computed.
- ‘src_type’str
Type of source space.
- ‘source_nn’ndarray, shape (n_sources, 3)
For each source location, the surface normal.
- ‘proj’ndarray, shape (n_channels, n_channels)
Projections used to compute the beamformer.
- ‘subject’str
The subject ID.
- ‘rank’int
The rank of the data covariance matrix used to compute the beamformer weights.
- ‘max-power-ori’ndarray, shape (n_sources, 3) | None
When pick_ori=’max-power’, this fields contains the estimated direction of maximum power at each source location.
- ‘inversion’‘single’ | ‘matrix’
Whether the spatial filters were computed for each dipole separately or jointly for all dipoles at each vertex using a matrix inversion.
- filtersinstance of
Notes
The original reference is 2.
To obtain the Sekihara unit-noise-gain vector beamformer, you should use
weight_norm='unit-noise-gain', pick_ori='vector'followed byvec_stc.project('pca', src).Changed in version 0.21: The computations were extensively reworked, and the default for
weight_normwas set to'unit-noise-gain-invariant'.References
- 1(1,2,3,4)
Kensuke Sekihara and Srikantan S. Nagarajan. Adaptive Spatial Filters for Electromagnetic Brain Imaging. Series in Biomedical Engineering. Springer, Berlin; Heidelberg, 2008. ISBN 978-3-540-79369-4 978-3-540-79370-0. doi:10.1007/978-3-540-79370-0.
- 2(1,2)
Barry D. Van Veen, Wim van Drongelen, Moshe Yuchtman, and Akifumi Suzuki. Localization of brain electrical activity via linearly constrained minimum variance spatial filtering. IEEE Transactions on Biomedical Engineering, 44(9):867–880, 1997. doi:10.1109/10.623056.
- 3
Marijn van Vliet, Mia Liljeström, Susanna Aro, Riitta Salmelin, and Jan Kujala. Analysis of functional connectivity and oscillatory power using DICS: from raw MEG data to group-level statistics in Python. bioRxiv, 2018. doi:10.1101/245530.