NeuRodent 🐁
A Python package for standardizing rodent EEG analysis and figure generation. Various EEG formats are loadable and features are extracted in parallel. Also includes a Snakemake workflow for automated analysis.
Presented at USRSE'25!
What it does
NeuRodent loads EEG/LFP recordings and computes features across recording channels and time. Features include signal amplitude, power in standard brainwave frequency bands, power spectrum slope, coherence/correlation between pairs of channels, and voltage spikes that occur when many neurons are activated at once. Results are saved as tables and can be visualized for single animal or multiple animal recordings, enabling comparison across experimental groups.
Why NeuRodent
Most laboratories have developed quantitative methods independently, and several free and commercial software packages exist for rodent EEG analysis. However, a significant lack of interoperability remains between these tools in handling variability in data type, experimental design, and statistical analysis. This fragmentation forces researchers to expend excessive time and productivity on technical troubleshooting rather than scientific discovery. NeuRodent addresses this by providing a modular, scalable, and interoperable Python-based framework for neuroscience researchers working with large-scale rodent cohorts, so that analyses can be compared and shared across laboratories.
Design
NeuRodent is organized as two components: a core Python analysis library, and a Snakemake pipeline that orchestrates the library over large datasets and is installed with the neurodent[pipeline] extra. Per-session or per-animal analyses can use the core library alone from scripts or notebooks, while multi-animal and multi-session processing can use the pipeline for cluster-level orchestration on SLURM. Within the library, computation is structured around a hierarchy of organizer classes that mirror the stages of a rodent EEG experiment:
LongRecordingOrganizer: one recording session, many channelsAnimalOrganizer: one animal, many recording sessionsWindowAnalysisResult,FrequencyDomainSpikeAnalysisResult,ZeitgeberAnalysisResult: analysis results of one animalAnimalPlotter: plots from one animalExperimentPlotter,ZeitgeberPlotter: plots from many animals
Rather than implementing its own file readers, NeuRodent delegates data loading to SpikeInterface and MNE-Python, and a custom reader function can be supplied for novel formats.
Who it is for
Rodent EEG researchers who need reproducible and standardized signal analyses across their studies, whether that is a handful of pilot recordings on a laptop or a cohort recorded over months on a cluster.
Installation
NeuRodent can be installed via pip or conda:
pip install neurodent
or
conda install -c conda-forge neurodent
For pipeline support, development setup, and other installation options, check out the full installation guide.
Usage
Visit the full documentation for more how-tos and examples: https://josephdong1000.github.io/neurodent
Overview
NeuRodent loads multi-format EEG data (LongRecordingOrganizer → AnimalOrganizer) and computes features over windows (WindowAnalysisResult) and population spiking (FrequencyDomainSpikeAnalysisResult). Results feed into AnimalPlotter and ExperimentPlotter for multi-animal comparison by genotype, session, or circadian cycle.
from neurodent import AnimalOrganizer, AnimalAnalyzer, ExperimentPlotter
features = ["rms", "psdband", "cohere"]
# AnimalOrganizer discovers recordings from a placeholder pattern
ao = AnimalOrganizer(
pattern="data/{animal}/*.edf",
animal_id="A10",
lro_kwargs={"mode": "si", "extract_func": "read_edf"},
)
war = AnimalAnalyzer(ao).compute_windowed_analysis(features=features)
ep = ExperimentPlotter([war], features=features)
ep.plot_catplot("rms", groupby="genotype")
A companion Snakemake workflow automates the full pipeline with cluster support.
Snakemake Workflow
The pipeline follows the Snakemake Workflow Catalog standardized layout, with workflow/Snakefile as the single entry point.
# Deploy via snakedeploy
pip install snakedeploy
snakedeploy deploy-workflow https://github.com/josephdong1000/neurodent . --tag <version>
# Run manually
snakemake --snakefile workflow/Snakefile --configfile config/config.yaml
Acknowledgements
This project benefited from insights and best practices described in Peter K. G. Williams’s One Good Tutorial.
Citation
If you find NeuRodent useful, please cite our work!
@software{dong2026neurodent,
author = {Dong, Joseph P. and Oh, Yongtaek and Marsh, Eric D.},
title = {NeuRodent},
year = {2025},
publisher = {Zenodo},
doi = {10.5281/zenodo.15780751},
url = {https://doi.org/10.5281/zenodo.15780751},
license = {MIT}
}
Machine-readable citation metadata is also available in CITATION.cff.
Community & Governance
- Contributing: CONTRIBUTING.md
- Support: SUPPORT.md
- Code of Conduct: CODE_OF_CONDUCT.md
Metadata
Release files for neurodent 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| neurodent-0.5.0.tar.gz | 3.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neurodent-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.3 MB
Release files / neurodent-0.5.0.tar.gz
| Download URL | neurodent-0.5.0.tar.gz |
|---|---|
| Size | 3.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac075007470ff86c76ad67751634b029348d2733c4d844da6c975ac600d7ef56
|
|
BLAKE2b-256 checksum How to use checksums |
065a4244e5593a693542ccc9ffd9a4b7ffad558f970bb30bf9e29a49018116cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.
Transparency logRelease files / neurodent-0.5.0-py3-none-any.whl
| Download URL | neurodent-0.5.0-py3-none-any.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc2d7e7248afc14e33c7009999611f4eeb53ad23d09a4148b82910f50cff0b9d
|
|
BLAKE2b-256 checksum How to use checksums |
9f07dbf2cc887526251b0a0e410fb66f278e847dd56d2d5239873c31fccc1116
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.
Transparency log