I am performing source reconstruction using an LCMV beamformer on MEG data that is highly rank deficient (~75). The source space is volumetric. Following the recommendations of @britta-wstnr and in 10.1016/j.neuroimage.2021.118789, I have configured my filter as follows:
filters = make_lcmv(
epochs.info,
forward_model,
data_covariance,
reg=0, # No regularization
noise_cov=noise_covariance, # From empty-room recordings
rank=rank, # The smallest rank between noise and data covariance
reduce_rank=True,
pick_ori="max-power",
weight_norm="unit-noise-gain"
)
As I understand, MNE automatically applies a truncated pseudo-inverse when there is rank deficiency. I opted for this approach instead of regularization, given the severe rank deficiency. However, I noticed that when I set reg=0
, the resulting solution contains complex numbers (small imaginary components), suggesting numerical instability in the matrix inversion.
What is the best way to handle this situation?
- Is it possible to combine regularization (maybe small, like 1%) with a truncated pseudo-inverse?
- Would adding a small amount of regularization (e.g., 1–5%) be a better solution than taking the real part of the result (e.g., using
np.real()
)?
Thank you for your insights!