I’m analysing NxN connectivity among a bunch of ROIs with both the magnitude and imaginary (iCoh) part of coherence. I’ve computed coherence form the standard menu and then I’ve used a bit of scripting (>bst_memory(‘GetConnectMatrix’), myfile) to extract the matrices.
It is strange to observe that when I choose to compute iCoh, my output matrices do not show any negative values as one should expect, but only positive values (this both when I look at them through the BS GUI and when I extract the matrix with bst_memory). Thus, I’m not able to make inferences about the directionality of the effects.
If you’re looking for the iCoh as calculated by Nolte et al. 2004 (and all the papers that refer to that one), I believe the calculation is slightly different to that which is implemented in Brainstorm. To get directional values between -1 and +1 as per Nolte, you can change the code a bit, note that when you update brainstorm I think it will be overwritten.
To modify, edit bst_cohn (save yourself a backup copy with a different name)
Change Line 244: from Gxy = imag(Gxy).^2 ./ (1-real(Gxy).^2);
To:
Gxy = imag(Gxy);
Run your iCoh as usual (plot output on a red to blue, or whatever).
I believe that’s what’s described in the math in Nolte 2004 and also in Bastos & Schoffelen 2016. Note that B & S point out that the directionality interpretation is only valid under ideal unidirectional conditions (see B & S p. 5), so it might be better to look at directionality with another connectivity method, but I’m using iCoh as a first look in order to compare with some published work.
thanks a lot for your reply on this and sorry for my delayed answer, I’m only now back on these connectivity analyses.
You got exactly the point I was trying to make. I’ve implemented your suggestion and now I have directional values as desired. The only thing to pay attention to is that the modification to the formula has to be done twice (for both the symmetric and the asymmetric version), both on line 244 and on line 332.
I would have a question related to Luca’s message: why dividing the imaginary part of coherence, as defined in (Nolte, 2004), by another value? Is it a kind of normalization?
I read the papers cited in the Matlab code (bst_cohn.m) but I didn’t find any explanation unfortunately.
I'm curious about if this way of implementing Imaginary Coherence, which is different from Nolte et al., can be referenced to previous work in the literature. Also, how could one interpret a negative coherence value, if you don't square your Im(Gxy).