Synchrony index between time series based on Agmon's paper
Project description
agmonsynchrony
Compute the jitter-based synchrony index between time series described in Agmon's paper [1].
Syntax
SI, pval, Nc = synchrony_index(timeseries, tau, Nc_max_exact=1000)
Arguments
- timeseries (list or tuple of arrays): a list of two or more time series. Each time series is a sorted array of time instants.
- tau (float or array): maximum delay between events of different time series for the identification of coincidences. The width of the jitter window used for computing the expected number of coincidences is set to 2*tau. If tau is an array, all values are used consecutively
- window (str): if window is 'bilateral' (default), the original Agmon's method is applied; if window is 'unilateral', only coindidences occurring after (when tau > 0) or before (when tau < 0) the events of the reference time series are considered.
- Nc_max_exact (int): number of coincidences above which a normal approximation (Z score) is used for computing the p-values (default: 1000, which is generally appropriate)
Outputs
- SI (array with 2 or 3 dimensions): matrix of synchrony indices. Values normally range between 0 (no synchrony), and 1 (perfect synchrony) but can also be negative (antisynchrony) down to -1. The synchrony index SI[i, j] is computed between time series i (the reference) and j (the target). If 'tau' is an array, SI[i, j, k] is the synchrony index for the k-th value of 'tau'.
- pval (array with the same shape as 'SI'): matrix of corresponding p-values for the significance of the synchrony
- Nc (int array with the same shape as 'SI'): matrix of the number of observed coincidences
Example
Let's consider two time series with 4 and 2 samples respectively. We are looking for coincidences within a maximum delay of 0.1:
from agmonsynchrony import synchrony_index
ts1 = [1, 2, 3, 4]
ts2 = [2.03, 3.95]
SI, pval, Nc = synchrony_index([ts1, ts2], tau=0.1)
The number of observed coincidences is:
>> print(Nc)
[[4 2]
[2 2]]
The matrix of synchrony indices is:
>> print(SI)
[[1. 1.]
[0.5 1.]]
The diagonal is 1 because time series are synchronized with themselves. The lower left value is 0.5 because when the time series 'ts2' is taken as a reference, only half of the samples of the time series 'ts1' are within 'tau' of a sample of 'ts2'. Therefore, the matrix is not symmetric.
Installation
The package can be installed using the command pip install agmonsynchrony
(on Windows, a compiler such as Microsoft Visual C++ is required).
If the code is downloaded from github, local installation on Linux is done by running make local
and including the directory 'agmonsynchrony' in the PYTHONPATH environment variable.
Tested using Anaconda 2023.09 (python 3.11) on Linux and Windows.
Acknowledgements
This work was supported by the Natural Sciences and Engineering Research Council of Canada (NSERC grant RGPIN-2020-05252).
References
-
A. Agmon. A novel, jitter-based method for detecting and measuring spike synchrony and quantifying temporal firing precision. Neural Syst. Circuits 2012, vol. 2, article 5.
-
J.-P. Longpré, S. Salavatian, E. Beaumont, J. A. Armour, J. L. Ardell, V. Jacquemet. Measure of synchrony in the activity of intrinsic cardiac neurons. Physiol Meas. 2014, vol. 35, no. 4, pp. 549–566.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file agmonsynchrony-0.1.0.tar.gz
.
File metadata
- Download URL: agmonsynchrony-0.1.0.tar.gz
- Upload date:
- Size: 163.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ac8ce7ca852775fba5fdb3ba0923853f7ab2125e178738a44c33053c44d53f1 |
|
MD5 | 6b5a5120ad86800329fb3d6540edd552 |
|
BLAKE2b-256 | 96b47300ae5dcefe9cbdf593343bc066457ca58c7c80732be650fb04c5d445d7 |