pyBOAT
pyBOAT copied to clipboard
Rename phase statistic
Currently the Kuramoto order parameter is termed "Phase coherence". This is mostly misleading, use maybe better "phase locking" to distinguish from the "coherence" (normalized CSDs) measure.
Hi, can you please elaborate on this? How is phase locking/Kuramoto order parameter different from coherence/normalized CSDs? If I am interested in looking at extent of synchrony of a network, which one is a better measure and why?
Hi @klnikhil, well I am not sure if a github issue is the best place to discuss this.. but I will try to summarize briefly.
Suppose that at a specific time point where you want to measure synchrony we can express the state of an individual oscillator by $$z_j = r_j e^{i\phi_j}$$ where $r_j$ is the amplitude and $\phi_j$ is the phase of the jth oscillator in your ensemble. Note that such a representation via complex numbers is the natural result of a Fourier or Wavelet analysis of time series.
Kuramoto Order Parameter
Defined by:
$$ R = \left | \sum_j^N e^{i \phi_j} \right |$$
this is an unweighted vectorial (or directional) phase average over the whole(!) ensemble. If the phases are spread out (uniformly distributed between $[0, 2\pi]$) $R$ will be zero. If the phases all coincide $R=1$. This is what pyBOAT calculates for every time point for the "ensemble dynamics" and is also called "phase locking index".
Coherence/CSD
Defined by:
$$ CSD_{ij} = \left< r_i r_j e^{i (\phi_i - \phi_j)} \right >_T$$
To get the standard coherence you have to normalize this expression with the average powers. The main point here is that it is weighted (the amplitudes are taken into account), and you are always looking at phase differences between a pair of oscillators/signals. If these phase differences are stable in between different realizations (or in between smaller time snippets ala Welch's method), you get high coherence.
For an ensemble of $N$ oscillators you can get $N(N-1) / 2$ different coherencies, making it not well suited to define a general "synchrony". If you can compartimentalize your network, you could caluclate the coherence between a few compartments. But the typical use case comprises just two different oscillatory sources (moon vs. tidal phase or two different brain regions).
Hope that helps a bit, these are complex topics.. you are welcome to join the pyBOAT chat for furhter discussion: https://app.gitter.im/#/room/#pyBOATbase_community:gitter.im
Thank you for the clear explanation :)