Imaginary coherence: why the output has only positive values?

Dear BS crew,

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.

Am I missing some crucial points here?

Thanks a lot in advance.

Best regards,
Luca

Hi Luca,

See the header of the function bst_cohn.m for a formula for the option “Imaginary coherence” in Brainstorm:


This value is positive.

Francois

Hi Luca,

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.

Hope that helps.

Emily Coffey

Hi Luca,

Your post is showing as ‘withdrawn by author’, did you sort it out?

Emily

Hi Emily,

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.

Thanks again!

Best,
Luca

1 Like

Dear BS crew,

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.

Many thanks in advance!

Best,
Marie-Constance

@peterd @Sylvain @leahy @eflorin @pantazis @hossein27en ?

Hi All,

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).

@Sebastian1982
The implementation of the coherence computation changed since these messages were posted.

Thanks