{"id":34082639,"url":"https://github.com/iabs-neuro/driada","last_synced_at":"2026-04-05T01:32:57.164Z","repository":{"id":153139666,"uuid":"624821495","full_name":"iabs-neuro/driada","owner":"iabs-neuro","description":"Dimensionality Reduction for Integrated Activity Data Analysis","archived":false,"fork":false,"pushed_at":"2026-03-31T13:30:38.000Z","size":118006,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T15:28:00.290Z","etag":null,"topics":["computational-neuroscience","dimensionality-reduction","information-theory","network-analysis","neural-coding","neural-computation","neuroscience","time-series-analysis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iabs-neuro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.yaml","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-07T10:39:49.000Z","updated_at":"2026-03-31T13:30:46.000Z","dependencies_parsed_at":"2023-10-10T16:43:48.842Z","dependency_job_id":"a1b754e6-23c0-421e-86fc-4d25aab1566f","html_url":"https://github.com/iabs-neuro/driada","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/iabs-neuro/driada","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iabs-neuro%2Fdriada","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iabs-neuro%2Fdriada/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iabs-neuro%2Fdriada/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iabs-neuro%2Fdriada/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iabs-neuro","download_url":"https://codeload.github.com/iabs-neuro/driada/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iabs-neuro%2Fdriada/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31421869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"ssl_error","status_checked_at":"2026-04-05T00:25:05.923Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computational-neuroscience","dimensionality-reduction","information-theory","network-analysis","neural-coding","neural-computation","neuroscience","time-series-analysis"],"created_at":"2025-12-14T12:22:31.877Z","updated_at":"2026-04-05T01:32:57.112Z","avatar_url":"https://github.com/iabs-neuro.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DRIADA\n\n**D**imensionality **R**eduction for **I**ntegrated **A**ctivity **D**ata **A**nalysis — a Python framework for cross-scale analysis of neural population activity.\n\n[![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\n[![PyPI version](https://img.shields.io/pypi/v/driada.svg)](https://pypi.org/project/driada/)\n[![Downloads](https://img.shields.io/pypi/dm/driada.svg)](https://pypi.org/project/driada/)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Tests](https://github.com/iabs-neuro/driada/actions/workflows/tests.yml/badge.svg)](https://github.com/iabs-neuro/driada/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/iabs-neuro/driada/branch/main/graph/badge.svg)](https://codecov.io/gh/iabs-neuro/driada)\n[![Docs](https://readthedocs.org/projects/driada/badge/?version=latest)](https://driada.readthedocs.io/en/latest/)\n[![Platform](https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-lightgrey.svg)](https://github.com/iabs-neuro/driada/actions/workflows/tests.yml)\n\n## Integrating analysis scales\n\nNeuroscience describes brain activity through three complementary paradigms: **single-neuron selectivity** (what does each cell encode?), **population dynamics** (what is the collective geometry?), and **networks** (how are units connected?). These are not competing theories — they are complementary lenses on the same data. The same neuron can be viewed simultaneously as a feature detector, a dimension of a population manifold, and a node in a functional circuit.\n\nYet in practice, each paradigm has its own tools, its own data formats, its own packages. If you want to ask a question that crosses paradigm boundaries — *does selectivity predict network membership? does filtering by tuning improve manifold structure? how do individual neurons contribute to population coding? do temporal dynamics of single neurons reveal population-level organisation?* — you have to build a custom pipeline from incompatible parts.\n\nDRIADA provides a **shared data model** where all three paradigms operate on the same objects. Results from one domain flow directly into the others:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/architecture.png\" alt=\"DRIADA architecture\" width=\"600\"\u003e\n\u003c/p\u003e\n\nThree bidirectional bridges connect the paradigms:\n\n- **Neurons ↔ Populations.** Selective neurons filter the population matrix for dimensionality reduction; embedding coordinates feed back into neuron-level importance estimation, revealing which cells drive each manifold dimension.\n- **Neurons ↔ Networks.** Pairwise MI significance testing builds functional connectivity from neural activity; per-neuron recurrence graphs, visibility graphs, and ordinal partition networks yield functional networks grounded in temporal dynamics rather than correlations.\n- **Populations ↔ Networks.** Graph-based dimensionality reduction (Isomap, diffusion maps) returns proximity graphs that inherit the full network toolkit — spectral decomposition, community detection, entropy — without format conversion. RSA provides a complementary route from population representations to network structure.\n\nDRIADA's strength is integrating these scales — crossing them should be a function call, not a weekend of data wrangling.\n\n## 🔬 Key Capabilities\n\n- 🧠 **[INTENSE](https://driada.readthedocs.io/en/latest/api/intense.html)** — detect neuron-feature selectivity via mutual information with rigorous two-stage statistical testing, delay optimization, and mixed selectivity disentanglement\n- 📊 **[Dimensionality Reduction](https://driada.readthedocs.io/en/latest/api/dim_reduction.html)** — linear (PCA), graph-based (Isomap, diffusion maps, LLE), neighbor-embedding (UMAP, t-SNE), and neural network-based (autoencoders) with manifold quality metrics\n- 📐 **[Dimensionality Estimation](https://driada.readthedocs.io/en/latest/api/dimensionality.html)** — PCA-based, effective rank, k-NN, correlation, and geodesic dimension\n- 🔗 **[Integration](https://driada.readthedocs.io/en/latest/api/integration.html)** — map single-cell selectivity onto population manifolds and embedding components\n- 🌐 **[Network Analysis](https://driada.readthedocs.io/en/latest/api/network.html)** — general-purpose graph analysis (spectral, entropy, communities) for connectomes, functional networks, or dimensionality reduction proximity graphs\n- 🔄 **[Recurrence Analysis](https://driada.readthedocs.io/en/latest/api/recurrence.html)** — delay embedding, recurrence plots, RQA, visibility graphs, ordinal partition networks for nonlinear dynamics and population module recovery\n- 📏 **[RSA](https://driada.readthedocs.io/en/latest/api/rsa.html)** — representational dissimilarity matrices, cross-region and cross-session comparisons\n- 🧪 **[Synthetic Data](https://driada.readthedocs.io/en/latest/api/experiment.html)** — generate populations with known ground truth for validation\n- ⚡ **[Neuron](https://driada.readthedocs.io/en/latest/api/experiment.html)** — calcium kinetics optimization (rise/decay fitting), event detection, and signal quality metrics\n\n## 🚀 Tutorials\n\nInteractive notebooks — click a badge to open in Google Colab (no setup required):\n\n| | Notebook | Topics |\n|---|---|---|\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/00_driada_overview.ipynb) | **DRIADA overview** | `Experiment` objects, feature types, quick tour of INTENSE, dimensionality reduction, networks |\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/01_data_loading_and_neurons.ipynb) | **Neuron analysis** | Spike reconstruction, kinetics optimization, quality metrics, surrogates |\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/02_selectivity_detection_intense.ipynb) | **Selectivity detection (INTENSE)** | Mutual information, two-stage testing, optimal delays, mixed selectivity |\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/03_population_geometry_dr.ipynb) | **Population geometry \u0026 DR** | PCA, UMAP, Isomap, autoencoders, manifold quality metrics, dimensionality estimation |\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/04_network_analysis.ipynb) | **Network analysis** | Cell-cell significance, spectral analysis, communities, graph entropy |\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/05_advanced_capabilities.ipynb) | **Advanced capabilities** | Embedding selectivity, leave-one-out importance, RSA, RNN analysis |\n| [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/06_recurrence_analysis.ipynb) | **Recurrence analysis** | Delay embedding, recurrence plots, RQA, visibility \u0026 ordinal graphs, population module recovery |\n\nAll notebooks generate synthetic data internally — no external files needed. See the [examples reference](https://driada.readthedocs.io/en/latest/examples.html) for 25+ standalone scripts covering additional use cases.\n\n## Data\n\nDRIADA is designed for **calcium imaging** data but works with any neural activity represented as a `(n_units, n_frames)` array — RNN activations, firing rates, LFP channels, or anything else. Behavioral variables are 1D or multi-component arrays of the same length. Variable types (continuous, discrete, circular, multivariate) are auto-detected and preprocessed appropriately.\n\n**Input workflow:** load your arrays into a Python dict and call `load_exp_from_aligned_data`:\n\n```python\nfrom driada.experiment import load_exp_from_aligned_data\nfrom driada.intense import (compute_cell_feat_significance,\n    compute_cell_cell_significance, compute_embedding_selectivity)\nfrom driada.rsa import compute_experiment_rdm\nfrom driada.network import Network\nfrom driada.integration import get_functional_organization\nimport scipy.sparse as sp\n\ndata = {\n    'calcium': calcium_array,       # (n_neurons, n_frames) — or 'activations', 'rates', etc.\n    'speed': speed_array,           # (n_frames,) continuous variable\n    'position': position_array,     # (2, n_frames) multi-component variable\n    'head_direction': hd_array,     # auto-detected as circular\n    'trial_type': trial_type_array, # auto-detected as discrete\n}\n\nexp = load_exp_from_aligned_data('MyLab', {'name': 'session1'}, data,\n                                 static_features={'fps': 30.0})\n\nfeat_stats, feat_sig, *_ = compute_cell_feat_significance(exp)       # neuron-feature selectivity\ncell_sim, cell_sig, *_ = compute_cell_cell_significance(exp)         # functional connectivity\nnet = Network(adj=sp.csr_matrix(cell_sig), preprocessing='giant_cc') # network analysis\nembedding = exp.create_embedding('umap', n_components=2)             # dimensionality reduction\nrdm, labels = compute_experiment_rdm(exp, items='trial_type')        # representational similarity\nemb_res = compute_embedding_selectivity(exp, ['umap'])               # which neurons encode which components\norg = get_functional_organization(exp, 'umap',\n    intense_results=emb_res['umap']['intense_results'])              # selectivity-to-embedding bridge\n```\n\nYou can also load directly from `.npz` files via `load_experiment()`. See the [RNN analysis tutorial](https://colab.research.google.com/github/iabs-neuro/driada/blob/main/notebooks/05_advanced_capabilities.ipynb) for a non-calcium example.\n\n## Installation\n\n```bash\npip install driada\n\n# Optional extras\npip install driada[gpu]   # autoencoders, torch-based methods\npip install driada[mvu]   # MVU dimensionality reduction (cvxpy)\npip install driada[all]   # everything\n\n# From source\ngit clone https://github.com/iabs-neuro/driada.git\ncd driada\npip install -e \".[dev]\"\n```\n\nDRIADA pulls in ~30 dependencies (numpy, scipy, scikit-learn, numba, joblib, etc.). See [pyproject.toml](pyproject.toml) for the full list.\n\n## Documentation\n\n📖 **[driada.readthedocs.io](https://driada.readthedocs.io)** — API reference, installation guide, and quickstart\n📋 **[Changelog](CHANGELOG.md)** — release history and migration notes\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n```bash\ngit clone https://github.com/iabs-neuro/driada.git\ncd driada\npip install -e \".[dev]\"\npytest\n```\n\n## Citation\n\nIf you use DRIADA in your research, please cite:\n\n```bibtex\n@software{driada2026,\n  title = {DRIADA: Dimensionality Reduction for Integrated Activity Data Analysis},\n  author = {Pospelov, Nikita and contributors},\n  year = {2026},\n  url = {https://github.com/iabs-neuro/driada}\n}\n```\n\n## Publications\n\nDRIADA has been used in the following research:\n\n### Biological neural systems\n- **[Sotskov et al. (2022)](https://doi.org/10.3390/ijms23020638)** — Fast tuning dynamics of hippocampal place cells during free exploration\n- **[Pospelov et al. (2024)](https://doi.org/10.1109/DCNA63495.2024.10718588)** — Effective dimensionality of hippocampal population activity correlates with behavior\n- **[Bobyleva et al. (2025)](https://doi.org/10.1162/netn_a_00439)** — Multifractality of structural connectome eigenmodes\n\n### Artificial neural networks\n- **[Kononov et al. (2025)](https://arxiv.org/abs/2510.11162)** — Hybrid computational dynamics in RNNs through reinforcement learning\n\n### Methodological applications\n- **[Pospelov et al. (2021)](https://doi.org/10.1016/j.ynirp.2021.100035)** — Laplacian Eigenmaps for fMRI resting-state analysis\n\n**See [PUBLICATIONS.md](PUBLICATIONS.md) for the complete list with abstracts and details.**\n\n## Support\n\n- 📧 **Email**: pospelov.na14@physics.msu.ru\n- 🐛 **Issues**: [GitHub Issues](https://github.com/iabs-neuro/driada/issues)\n- 💬 **Discussions**: [GitHub Discussions](https://github.com/iabs-neuro/driada/discussions)\n\n## License\n\nThis project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiabs-neuro%2Fdriada","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiabs-neuro%2Fdriada","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiabs-neuro%2Fdriada/lists"}