IntrinsicTimescales.jl: A Julia package to estimate intrinsic (neural) timescales (INTs) from time-series data

IntrinsicTimescales.jl: A Julia package to estimate intrinsic (neural) timescales (INTs) from time-series data - Published in JOSS (2025)

https://github.com/duodenum96/intrinsictimescales.jl

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
    Links to: nature.com
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

bayesian-inference intrinsic-neural-timescales neuroscience neuroscience-methods parameter-estimation

Keywords from Contributors

eeg interpretability climate-model ode explainable-ai mri robustness counterfactual-explanations tensor-networks cvode
Last synced: about 2 months ago · JSON representation

Repository

A Julia package to estimate Intrinsic (Neural) Timescales (INTs) from time-series data

Basic Info
Statistics
  • Stars: 2
  • Watchers: 2
  • Forks: 1
  • Open Issues: 11
  • Releases: 16
Topics
bayesian-inference intrinsic-neural-timescales neuroscience neuroscience-methods parameter-estimation
Created about 1 year ago · Last pushed 2 months ago
Metadata Files
Readme License

README.md

Documentation Documentation

IntrinsicTimescales.jl

IntrinsicTimescales.jl is a software package for estimating Intrinsic Neural Timescales (INTs) from time-series data. It uses model-free methods (ACW-50, ACW-0, fitting an exponential decay function etc.) and simulation-based methods (adaptive approximate Bayesian computation: aABC, automatic differentiation variational inference: ADVI) to estimate INTs.

The documentation is available here.

Installation

This package is written in Julia. If you do not have Julia installed, you can install it from here. Once you have Julia installed, you can install IntrinsicTimescales.jl by running the following command in the Julia REPL:

julia using Pkg Pkg.add("IntrinsicTimescales") Soon, there will also be a Python wrapper called INTpy, which will allow you to use IntrinsicTimescales.jl from Python.

Quickstart

IntrinsicTimescales.jl uses two ways to estimate INTs: model-free methods and simulation-based inference. Model-free methods include ACW-50, ACW-0, ACW-e, area under the curve (AUC), decay rate of an exponential fit to ACF and knee freqency of a lorentzian fit to PSD. Simulation-based methods are based on Zeraati et al. (2022) paper and do parameter estimation by assuming the data came from an Ornstein-Uhlenbeck process. For estimation, in addition to the adaptive approximate Bayesian computation (aABC) method used in Zeraati et al. (2022), we also present automatic differentiation variational inference (ADVI). Additionally, we adapt the aABC method with adaptive choice of epsilon. See documentation for details.

For model-free methods, simply use the acw function.

```julia using IntrinsicTimescales

data = randn(10, 5000) # Data in the form of (trials x time) fs = 100.0 # Sampling frequency

acwresults = acw(data, fs; acwtypes = [:acw0, :acw50, :acweuler, :auc, :tau, :knee], dims=ndims(data))

or even simpler:

acwresults = acw(data, fs) ```

where fs is sampling frequency, optional parameters acwtypes is a vector of symbols (indicated with :) telling which methods to use and dims is indicating the dimension of time in your array (by default, the last dimension). The resulting acwresults gives the results in the same order of acwtypes.

For simulation based methods, pick one of the one_timescale_model, one_timescale_with_missing_model, one_timescale_and_osc_model and one_timescale_and_osc_with_missing_model functions. These models correspond to different generative models depending on whether there is an oscillation or not. For each generative model, there are with or without missing variants which use different ways to calculate ACF and PSD. Once you pick the model, the syntax is

```julia

Simulate some data

using Random timescale = 0.3 # true timescales variance = 1.0 # variance of data duration = 10.0 # duration of data ntrials = 2 # How many trials fs = 500.0 # Sampling rate rng = Xoshiro(123); deqseed = 123 # For reproducibility data = generateouprocess(timescale, variance, 1/fs, duration, ntrials, rng=rng, deqseed=deqseed) # Data in the form of (trials x time) time = (1/fs):(1/fs):duration # Vector of time points model = onetimescalemodel(data, time, :abc) result = intfit(model) ```

or

julia model = one_timescale_model(data, time, :advi) result = int_fit(model)

These functions are highly customizable, see the documentation for details.

Getting Help and Making Contributions

Questions and contributions are welcome. Use the issues section of our github page to report bugs, make feature requests, ask questions or tackle the issues by making pull requests.

Want to learn more?

Kindly read the fine manual.

Roadmap

The current roadmap of the package is here. Feel free to make suggestions / contributions.

License

This project is licensed under the MIT License - see the LICENSE file for details. Note that certain dependencies (such as FFTW) may not have MIT licenses.

Owner

  • Login: duodenum96
  • Kind: user

JOSS Publication

IntrinsicTimescales.jl: A Julia package to estimate intrinsic (neural) timescales (INTs) from time-series data
Published
October 28, 2025
Volume 10, Issue 114, Page 8261
Authors
Yasir Çatal ORCID
Mind, Brain Imaging and Neuroethics Research Unit, University of Ottawa, Ontario, ON, Canada., University of Ottawa Institute of Mental Health Research, Ottawa, ON, Canada.
Georg Northoff ORCID
Mind, Brain Imaging and Neuroethics Research Unit, University of Ottawa, Ontario, ON, Canada., University of Ottawa Institute of Mental Health Research, Ottawa, ON, Canada.
Editor
Britta Westner ORCID
Tags
neuroscience neuroscience methods intrinsic timescales bayesian estimation

GitHub Events

Total
  • Create event: 25
  • Commit comment event: 22
  • Release event: 12
  • Issues event: 18
  • Watch event: 2
  • Delete event: 1
  • Issue comment event: 25
  • Push event: 252
  • Pull request event: 36
  • Fork event: 1
Last Year
  • Create event: 25
  • Commit comment event: 22
  • Release event: 12
  • Issues event: 18
  • Watch event: 2
  • Delete event: 1
  • Issue comment event: 25
  • Push event: 252
  • Pull request event: 36
  • Fork event: 1

Committers

Last synced: 3 months ago

All Time
  • Total Commits: 443
  • Total Committers: 5
  • Avg Commits per committer: 88.6
  • Development Distribution Score (DDS): 0.029
Past Year
  • Commits: 443
  • Committers: 5
  • Avg Commits per committer: 88.6
  • Development Distribution Score (DDS): 0.029
Top Committers
Name Email Commits
duodenum96 c****r@g****m 430
CompatHelper Julia c****y@j****g 10
Britta Westner b****r@g****m 1
Yasir Çatal 7****6@u****m 1
dependabot[bot] 4****]@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 3 months ago

All Time
  • Total issues: 10
  • Total pull requests: 26
  • Average time to close issues: 20 days
  • Average time to close pull requests: 5 days
  • Total issue authors: 4
  • Total pull request authors: 4
  • Average comments per issue: 2.8
  • Average comments per pull request: 0.04
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 18
Past Year
  • Issues: 10
  • Pull requests: 26
  • Average time to close issues: 20 days
  • Average time to close pull requests: 5 days
  • Issue authors: 4
  • Pull request authors: 4
  • Average comments per issue: 2.8
  • Average comments per pull request: 0.04
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 18
Top Authors
Issue Authors
  • behinger (6)
  • harisorgn (2)
  • AdamWysokinski (1)
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (17)
  • duodenum96 (7)
  • britta-wstnr (1)
  • dependabot[bot] (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 15
juliahub.com: IntrinsicTimescales

A Julia package to estimate Intrinsic (Neural) Timescales (INTs) from time-series data

  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Dependent repos count: 8.4%
Average: 22.3%
Dependent packages count: 36.3%
Last synced: 2 months ago