[Mne_analysis] Computer forward solution using epoch.info rather than raw.info {Disarmed}

Eric Larson larson.eric.d at gmail.com
Tue Jul 21 14:04:44 EDT 2020
Search archives:

This message contained a link to a web site whose IP address has recently been associated with malicious activity.  Due to that activity, the site is not accessible from within the Partners Healthcare network.  The link has been modified in the message below.  If you feel this is an error, please contact the IS Service Desk and open a ticket with the network security - phs assignment group.

                                  IS Service Desk
BWH  617-732-5927    BWFH  617-983-7454    BWH-RICS  617-525-0848
DFCI  617-632-3399    LCC  857-307-4150       MCL  781-416-8940
MGH  617-726-5085    NHP  617-643-2020       NSMC  978-354-2014
NWH  617-243-6001    PCPO  781-433-3757    PHH  617-726-0790
PHS  857-282-4357     SRN  617-952-5555      CDHC  413-582-5005

        External Email - Use Caution        

> I’m currently running source recon MEG data using individual MRIs. I found
> that when running make_inverse_operator(raw.info, fwd, noise_cov) I was
> getting an error saying ‘no channels match the selection’. I checked in
> raw.info and no channels were marked as bad, so I tried again using
> epoch.info (also no bad channels) instead of raw.info and got the same
> error.

raw.ch_names, fwd['ch_names'], and/or noise_cov['names'] must not match.
This suggests that something is going wrong in your pipeline as these
should all be consistent.

> I have diagnosed this further up the pipeline – I was making the forward
> solution with:
> make_forward_solution(raw.info, trans, src, bem, meg=True, eeg=False)
> Thinking that this would pick only the MEG channels.

Indeed it should. You can check with fwd['sol']['row_names'].

However, my noise covariance is calculated from epochs, not the raw data,
> and I think that creating a forward solution using raw.info and the
> covariance using epoch.info resulted in a clash of channels, even though
> both of them have 270 MEG channels.

It shouldn't. Creating epochs should not change the channel names. I would
try making your script as short as possible to reproduce these steps and
see if they fail. Something like:\

raw = mne.io.read_raw_something(...)
events = mne.make_fixed_length_events(raw)
epochs = mne.Epochs(raw, events)
assert raw.ch_names == epochs.ch_names
cov = mne.compute_covariance(epochs)
assert cov['names'] == epochs.ch_names
fwd = make_forward_solution(raw.info, ...)
inv = make_inverse_operator(epochs.info, fwd, noise_cov)

If the filled-out version of this fails on your data, there is probably
some bug in MNE with these functions. If it works, then you can gradually
add lines to it (or remove lines from your other script(s)) to figure out
what step breaks things. It could be some bug in MNE or some bug in your

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20200721/2556423e/attachment.html 

More information about the Mne_analysis mailing list