[FieldTrip] Leadfield normalization: cfg.normalizeparam value
Michał Komorowski
michu.kom at gmail.com
Tue Mar 9 15:31:38 CET 2021
Dear Researchers,
*Question*:
What is "the proper" value of the cfg.normalizeparam for
ft_prepare_leadfield function (
https://www.fieldtriptoolbox.org/reference/ft_prepare_leadfield/) ?
OR in other words
Should the distribution of the leadfield norms across brain volume be
uniform?
*Question background:*
I have noticed that the default value is 0.5, however in the beamforming
routines from the Human Connectome Project the value is set to 1.0.
As Jörn Horshig pointed (
https://mailman.science.ru.nl/pipermail/fieldtrip/2013-July/006759.html),
there is no correct way of normalizing.
I have plotted leadfield norm for different setting:
[image: normalizeparam_0_0_SVD.png]
Fig.1. cfg.normalizeparam = 0.0 (leadfield norm *increase* radially
outwards from the center; 10^{-9} order of magnitude)
[image: normalizeparam_0_5_SVD.png]
Fig.2. cfg.normalizeparam = 0.5 (suggested default value; leadfield norms
are more or less *uniformly distributed*)
[image: normalizeparam_1_0_SVD.png]
Fig.3. cfg.normalizeparam = 1.0 (the value used in the HCP beamforming;
leadfield norm *decrease* radially outwards from the center; 10^{+8} order
of magnitude)
*Further details:*
I am preparing a scalar leadfield (dipole orientations optimized using an
SVD approach) for beamforming of the resting-state MEG data for further
spectral analyses on the reconstructed sources level.
As the data come from the Human Connectome Project database, I adapted
leadfield computation from their beamforming script (hcp_bfblpenv.m
from megconnectome-3.0
pipeline):
1. allChansMEG = ft_channelselection({'MEG'}, grad.label);
2. cfg = [];
3. cfg.grid = grid; % Grid for individual's brain in MEG
sensor space
4. cfg.vol = vol;
5. cfg.grad = grad;
6. cfg.reducerank = 2; % (default = 3 for EEG, 2 for MEG)
7. cfg.normalize = 'yes' ; % Normalise Leadfield: 'yes' for
beamformer
8. cfg.normalizeparam = 1; % depth normalization parameter
9. cfg.channel = allChansMEG;
10. lfg = ft_prepare_leadfield(cfg);
11. lfg.label = allChansMEG;
12. % optimization of the leadfield orientation (SVD approach)
13. ratio = 0.07;
14. lambda = ratio * trace(Cy)/size(Cy,1);
15. invCy = pinv(Cy + lambda * eye(size(Cy)));
16.
17. for iDip = 1:nDip
18. if ~isempty(lfg.leadfield{iDip})
19. lf = lfg.leadfield{iDip}(indB,:);
20. [u, s, v] = svd(real(pinv(lf' * invCy *lf)));
21. eta = u(:,1);
22. lf = lf * eta;
23. lfgSVD.leadfield{iDip} = lf;
24. else
25. lfgSVD.leadfield{iDip} = [];
26. end
27. end
Line 8. contains the cfg.normalizeparam setting for which I try to figure
out the correct value.
Leadfield norms were computed this way:
lfgNorm = cellfun(@(x) norm(x, 'fro'), lfgSVD.leadfield);
Thank you very much for your hints and suggestions.
Kind regards,
Michał Komorowski, MSc
Nicolaus Copernicus University in Toruń
Faculty of Physics, Astronomy and Informatics
Department of Informatics
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20210309/e058bf33/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: normalizeparam_1_0_SVD.png
Type: image/png
Size: 32849 bytes
Desc: not available
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20210309/e058bf33/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: normalizeparam_0_5_SVD.png
Type: image/png
Size: 38883 bytes
Desc: not available
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20210309/e058bf33/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: normalizeparam_0_0_SVD.png
Type: image/png
Size: 45542 bytes
Desc: not available
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20210309/e058bf33/attachment-0002.png>
More information about the fieldtrip
mailing list