[Mne_analysis] Global field power

Christoph Huber-Huber christoph at huber-huber.at
Thu Jul 23 04:52:23 EDT 2020
Search archives:

        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,
-------------- 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