Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename phase statistic #23

Open
tensionhead opened this issue Jul 25, 2023 · 3 comments
Open

Rename phase statistic #23

tensionhead opened this issue Jul 25, 2023 · 3 comments
Labels
enhancement New feature or request

Comments

@tensionhead
Copy link
Owner

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.

@tensionhead tensionhead added the enhancement New feature or request label Jul 25, 2023
@klnikhil
Copy link

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?

@tensionhead
Copy link
Owner Author

tensionhead commented Aug 2, 2023

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

@klnikhil
Copy link

Thank you for the clear explanation :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants