specify noise covariance rank in MNE-Python?

Hi,

The mne_inverse_operator command has an option to specify the rank of
the covariance matrix. This is useful when e.g. maxfilter has been
applied to the data and the rank has been reduced. It seems like this
option is currently missing from MNE-Python; we are computing an inverse
operator using a covariance matrix estimated from data with maxfilter
applied but the detected rank is 200 (only gradiometers) instead of 64.

Is there a reason for not having this option in MNE-Python or would it
make sense to add it?

Best,

Martin

Hi Martin to me this makes absolutely sense. This is also related to PR #1671 on MNE-Python. Likewise, we could have a rank parameter for spatial whitening.

+1 for taking into account the rank (due to sss | proj | ica)

hi,

yes the manual setting of the rank has not be exposed to users in
MNE-Python. This should be fixed to address the use case martin
reported.

@mluessi do you give it a shot?

Alex

Hi all,

I want to be sure I understand this discussion, as it seems highly relevant:

- on reduced-rank data {SSS, ICA, ...}, mne.cov.regularize has been the only way to deal with the loss of dimension
- now Engemann and Gramfort (in press) propose alternatives and implement an automatic "optimal" cov-regularizer in WIP 1671

What advantage, before or now, is there then of exposing the rank parameter? Would there be an advantage of regularizing in a rank-aware fashion (which mne.cov.regularize is not, as far as I can tell)?

@mluessi When you say "the detected rank is 200", what calculation is this based on? mne.cov.rank?

/Chris

Hi Chris,

2014-12-15 13:42 GMT+01:00 Christopher Bailey <cjb at cfin.au.dk>:

Hi all,

I want to be sure I understand this discussion, as it seems highly
relevant:

- on reduced-rank data {SSS, ICA, ...}, mne.cov.regularize has been the
only way to deal with the loss of dimension

Only to some extent. the current mne.cov.regulrize code takes into account
SSP vectors and applies the diagonal scalar regularization on the low rank
(after applying SSPS). The MNE inverse code seems rank aware to some
extent, more precisely it will discard covariance eigenvalues that are
smaller than required by a certain constant. The idea would be to
parametrize this behaviour by the exact rank instead.

- now Engemann and Gramfort (in press) propose alternatives and implement

an automatic "optimal" cov-regularizer in WIP 1671

Yes. Some of the methods that are implemented there yield estimates of the
rank of the noise namely PPCA and Factor Analysis. These methods regularize
by computing the covariance in the low rank component space and bridging
the gap by adding a noise model.
However, for now this only seems to properly work if the data is not
already SSSed or SSPed or ICAed, probably due to numerical problems. These
options will therefore be deactivated if projs are active. We still have
not fully decided about how to deal with projs for the remaining
alternative methods, i.e. shrunk covariance and Ledoit-Wolf. We will
probably implement a behavior that mimics the one of mne.cov.regularize.

For the whitening examples it would be preferable to divide by the true
rank instead of the number of channels when computing the whitened GFP.
This should be added as an option to mne.cov.whiten_evoked to allow for
most appropriate diagnostic plots.

What advantage, before or now, is there then of exposing the rank
parameter? Would there be an advantage of regularizing in a rank-aware
fashion (which mne.cov.regularize is not, as far as I can tell)?

As I see it, this mostly matters for the whitening step that is part of
many inverse solution techniques such as MNE and beamformers. Scaling
issues might be the result. But since this was already handled by the
existing whitening code I would not be too worried. I bet the existing
constant will most probably lead to handling the SSS rank correctly.

@mluessi When you say "the detected rank is 200", what calculation is
this based on? mne.cov.rank?

The most intuitive approach is plotting the cov and inspecting its eigen
spectra:

http://martinos.org/mne/stable/auto_examples/plot_estimate_covariance_matrix_baseline.html#exa
mple-plot-estimate-covariance-matrix-baseline-py

Note the kink for magnetometers that have 3 SSPs in the sample data set.

We also have a method to the Raw object that's called .estimate_rank

HTH,
Denis

/Chris
   --
Christopher Bailey, MSc
MEG Engineer, MINDLab Core Experimental Facility
Center of Functionally Integrative Neuroscience (CFIN)
Aarhus University, Denmark

tel. cell: +45-2674-9927
tel. office: +45-7846-9942

hi,

yes the manual setting of the rank has not be exposed to users in
MNE-Python. This should be fixed to address the use case martin
reported.

@mluessi do you give it a shot?

Alex

Hi Martin to me this makes absolutely sense. This is also related to PR
#1671 on MNE-Python. Likewise, we could have a rank parameter for spatial
whitening.

+1 for taking into account the rank (due to sss | proj | ica)

Hi,

The mne_inverse_operator command has an option to specify the rank of
the covariance matrix. This is useful when e.g. maxfilter has been
applied to the data and the rank has been reduced. It seems like this
option is currently missing from MNE-Python; we are computing an inverse
operator using a covariance matrix estimated from data with maxfilter
applied but the detected rank is 200 (only gradiometers) instead of 64.

Is there a reason for not having this option in MNE-Python or would it
make sense to add it?

Best,

Martin

_______________________________________________
Mne_analysis mailing list
Mne_analysis at nmr.mgh.harvard.edu
Mne_analysis Info Page

The information in this e-mail is intended only for the person to whom it
is
addressed. If you believe this e-mail was sent to you in error and the
e-mail
contains patient information, please contact the Partners Compliance
HelpLine at
MyComplianceReport.com: Compliance and Ethics Reporting . If the e-mail was sent to you in
error
but does not contain patient information, please contact the sender and
properly
dispose of the e-mail.

_______________________________________________
Mne_analysis mailing list
Mne_analysis at nmr.mgh.harvard.edu
Mne_analysis Info Page

_______________________________________________
Mne_analysis mailing list
Mne_analysis at nmr.mgh.harvard.edu
Mne_analysis Info Page

_______________________________________________
Mne_analysis mailing list
Mne_analysis at nmr.mgh.harvard.edu
Mne_analysis Info Page

The information in this e-mail is intended only for the person to whom it
is
addressed. If you believe this e-mail was sent to you in error and the
e-mail
contains patient information, please contact the Partners Compliance
HelpLine at
MyComplianceReport.com: Compliance and Ethics Reporting . If the e-mail was sent to you in
error
but does not contain patient information, please contact the sender and
properly
dispose of the e-mail.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20141215/960bc86c/attachment.html