Comparing LCMV Beamformer Outputs Across Multiple MEG Sessions

Hi everyone,

Iā€™m working with MEG data from 4 recording sessions of the same participant. Due to slight variations in participant positioning between sessions, Iā€™m performing LCMV beamforming separately for each session. Hereā€™s my specific setup:

For each session, I compute:

  • Session-specific forward model
  • Individual data covariance matrix
  • Individual noise covariance matrix
  • Session-specific spatial filters

Iā€™m using this code to compute the spatial filters:

filters = mne.beamformer.make_lcmv(
    info=blocks_erf.info, forward=fwd, data_cov=data_cov, reg=0.05, noise_cov=noise_cov,
    pick_ori="max-power", weight_norm="unit-noise-gain", rank=None
)

My concern: Iā€™m using pick_ori="max-power", which allows source orientations to vary freely. This results in different orientations for the same source across sessions.
When I later concatenate the source estimates from all sessions, will the beamforming outputs still be comparable despite the different orientations? Or should I instead try to maintain consistent orientations across sessions? And if so, which method should I use (e.g. pick_ori="normal", to get sources tangential to the surface, thus consistent across sessions)?

Thanks in advance!
Philipp

MNE version: 1.7
operating system: Ubuntu 22.04

I would suggest to realign all sessions to the same head position and then use a single beamformer model.

Alex

1 Like

I really appreciate your recommendation!
I assume I could do the realignment with a maxwell_filter, right? Since Iā€™m working with data from a CTF system, Iā€™ve noticed some potential complications in other threads. Would you still recommend the following solution: How to realign the CTF MEG runs to a common head position using maxwell_filter? - #12 by agramfort

it seems my hack suggested in How to realign the CTF MEG runs to a common head position using maxwell_filter? - #12 by agramfort worksā€¦
nobody has made it part of the public API yet.

otherwise maxwell_filter is I think the only public function to do this.

Alex