mne-tools / mne-tools/mne-python

Noisy point-spread functions

Open
#11,058 0 comments 0 reactions 1 assignee View on GitHub

@olafhauk is already working on this.

Since Aug 19, 2022.

ENH
Dominant language
Python
Stars
3.5k
Forks
1.6k
Avg merge
1d 6h
Merged PRs (30d)
100

Description

Describe the new feature or enhancement

Currently mne.minimum_norm.point_spread_function() computes PSFs without added noise, i.e. based on the closed-form expression of the resolution matrix. This produces idealised results that may overestimate spatial resolution for medium-to-high noise levels. Samuelsson et al., Neuroimage 2021, suggested to use "empirical resolution matrices", i.e. to use the original PSFs plus an estimate of the noise projected into source space. This could still be implemented in mne-python.

Describe your proposed implementation

The option to use the empirical resolution matrix to compute PSFs could be added to mne.minimum_norm.point_spread_function(). It would need an additional argument to provide a noise covariance matrix and an SNR.

Describe possible alternatives

It could be a new function "mne.minimum_norm.point_spread_function_empirical()". This would make sense if the function was to be extended to nonlinear source estimation methods.

Additional comments

I would start accounting for noise based on a noise covariance matrix. Later a feature to use epochs or resting state data could be added. This would probably only be relevant for nonlinear source estimation methods.
Implementing an equivalent for "noisy CTFs" is trickier and will require some thinking.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.