Skip to main content

NeuRodent 🐁

CI Coverage License: MIT Python 3.10+ DOI Binder Open In Colab

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 channels
  • AnimalOrganizer: one animal, many recording sessions
  • WindowAnalysisResult, FrequencyDomainSpikeAnalysisResult, ZeitgeberAnalysisResult: analysis results of one animal
  • AnimalPlotter: plots from one animal
  • ExperimentPlotter, 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

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)

Source distribution for neurodent 0.5.0
File Size Uploaded
neurodent-0.5.0.tar.gz 3.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for neurodent 0.5.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page