[Mne_analysis] Global field power
Christoph Huber-Huber
christoph at huber-huber.at
Thu Jul 23 04:52:23 EDT 2020
External Email - Use Caution
Hi list,
I recently came across that mne python uses 3 different formulas for calculating global field power (GFP). I’m wondering why.
They are:
- The spatial standard deviation
line 1492 of /mne/viz/utils.py
gfp = evoked.data.std(axis=0)
This is the original version as e.g. in Lehmann & Skrandies (1980) dx.doi.org/10.1016/0013-4694(80)90419-8 <http://dx.doi.org/10.1016/0013-4694(80)90419-8>
Note that the fieldtrip folks write about global field power “The naming implies a squared measure but this is not the case.” (see help text of the FT_GLOBALMEANFIELD function of the fieldtrip toolbox).
- Root mean square
line 2988 of /mne/viz/utils.py
combine_dict['gfp'] = lambda data: np.sqrt((data ** 2).mean(axis=1))
There is no subtraction of the mean across channels as would be the case for standard deviation.
- Again, root mean square
line 466 of /mne/viz/evoked.py
this_gfp = np.sqrt((D * D).mean(axis=0))
- Sum of squares
line 131 of /examples/time_frequency/plot_time_frequency_global_field_power.py
gfp = np.sum(average.data ** 2, axis=0)
Here, we’re dealing with power values of a time-frequency decomposition, so that’s perhaps the reason for the missing mean and sqrt?
The mne python glossary at /doc/glossary.rst describes GFP as “the standard deviation of the sensor values at each time point”, consistent with Lehmann & Skrandies. That seems to be correct only for the first formula mentioned here.
Any suggestions for the reasons of when to use which version and educated guesses of whether these differences matter in practice are highly welcome.
Thank you very much,
Christoph
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20200723/3bf59d8a/attachment.html
More information about the Mne_analysis
mailing list