hypersynchronization.identify_state#

hypersynchronization.identify_state(thetas, atol=0.001)[source]#

Identify the synchronization state.

Parameters:
thetasarray-like, shape (n_phases,)

Phases of the oscillators.

atolfloat, optional

The absolute tolerance used for comparison with synchronization parameters. Default is 1e-3.

Returns:
statestr

A string representing the identified synchronization state: - “q-twisted” for q-twisted synchronization, where q is the winding number. - “splay” for splay synchronization. - “sync” for near-synchronised states with R1 ≈ 1. - “2-cluster” for 2-cluster synchronization. - “3-cluster” for 3-cluster synchronization. - “other” for other or unsynchronized states.

See also

identify_q_twisted

Detect a q-twisted state and compute its winding number.

identify_k_clusters

Detect a k-cluster state and return cluster sizes.

order_parameter

Compute the Daido order parameter.

Notes

A perfectly synchronised state (all phases equal) is returned as “0-twisted”, not “sync”. The “sync” label is reserved for noisy near-synchronised states where the order parameter R1 ≈ 1 but the phase differences are not exactly uniform.

A splay state where phases increase monotonically with node index is indistinguishable from a 1-twisted state and will be returned as “1-twisted”. The “splay” label is only returned when phases are evenly distributed on the circle but not ordered by node index.

Examples

>>> import numpy as np
>>> import hypersynchronization as hs
>>> hs.identify_state(np.zeros(10))
'0-twisted'
>>> theta = hs.generate_q_twisted_state(10, q=1, noise=0)
>>> hs.identify_state(theta)
'1-twisted'
>>> theta = np.array([0.0] * 5 + [np.pi] * 5)
>>> hs.identify_state(theta)
'2-cluster'