Metadata-Version: 2.4
Name: neurodent
Version: 0.3.0
Summary: Rodent EEG analysis tools
Author-email: Joseph Dong <dongjp@chop.edu>, Yongtaek Oh <ohy2@chop.edu>, Eric Marsh <marshe@chop.edu>
License-Expression: MIT
Project-URL: Homepage, https://github.com/josephdong1000/neurodent
Project-URL: Documentation, https://josephdong1000.github.io/neurodent/
Project-URL: Repository, https://github.com/josephdong1000/neurodent
Project-URL: Issue Tracker, https://github.com/josephdong1000/neurodent/issues
Keywords: EEG,rodent,neuroscience,data analysis,pipeline,PythonEEG,PyEEG
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: matplotlib
Requires-Dist: mne
Requires-Dist: mne-connectivity
Requires-Dist: pandas
Requires-Dist: spikeinterface
Requires-Dist: probeinterface
Requires-Dist: scipy
Requires-Dist: dask[distributed]
Requires-Dist: dask-jobqueue
Requires-Dist: seaborn
Requires-Dist: pyarrow
Requires-Dist: statannotations
Requires-Dist: statsmodels
Requires-Dist: openpyxl
Requires-Dist: appnope
Requires-Dist: zarr>=2.18.3
Requires-Dist: scikit-learn>=1.7.2
Provides-Extra: pipeline
Requires-Dist: snakemake>=7.32.4; extra == "pipeline"
Requires-Dist: pulp==2.7.0; python_full_version < "3.11" and extra == "pipeline"
Provides-Extra: readers
Requires-Dist: edfio>=0.4.12; extra == "readers"
Requires-Dist: pyedflib>=0.1.42; extra == "readers"
Requires-Dist: pynwb>=3.1.3; extra == "readers"
Provides-Extra: all
Requires-Dist: neurodent[pipeline,readers]; extra == "all"
Provides-Extra: dev
Requires-Dist: neurodent[pipeline,readers]; extra == "dev"
Requires-Dist: snakeviz; extra == "dev"
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.0.0; extra == "dev"
Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
Requires-Dist: pytest-html>=3.1.0; extra == "dev"
Requires-Dist: pytest-json-report>=1.5.0; extra == "dev"
Requires-Dist: factory-boy>=3.2.0; extra == "dev"
Requires-Dist: faker>=18.0.0; extra == "dev"
Requires-Dist: sphinx>=7.0.0; extra == "dev"
Requires-Dist: ipykernel>=6.0.0; extra == "dev"
Requires-Dist: pandoc>=2.0.0; extra == "dev"
Requires-Dist: sphinx-autobuild>=2024.10.3; extra == "dev"
Requires-Dist: tomli>=2.3.0; extra == "dev"
Requires-Dist: pydata-sphinx-theme>=0.16.1; extra == "dev"
Requires-Dist: sphinx-multiversion>=0.2.4; extra == "dev"
Requires-Dist: sphinx-design>=0.6.1; extra == "dev"
Requires-Dist: myst-nb>=1.3.0; extra == "dev"
Requires-Dist: jupytext>=1.18.1; extra == "dev"
Requires-Dist: jupyterlab>=4.4.10; extra == "dev"
Requires-Dist: pre-commit>=4.5.1; extra == "dev"
Requires-Dist: nbstripout>=0.8.2; extra == "dev"
Dynamic: license-file

# NeuRodent 🐁

[![CI](https://github.com/josephdong1000/neurodent/actions/workflows/test-build-docs.yml/badge.svg)](https://github.com/josephdong1000/neurodent/actions/workflows/test-build-docs.yml)
<!-- [![Coverage](https://codecov.io/gh/josephdong1000/neurodent/branch/main/graph/badge.svg)](https://codecov.io/gh/josephdong1000/neurodent) -->
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/pypi/pyversions/neurodent)](https://pypi.org/project/neurodent/)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15780751.svg)](https://doi.org/10.5281/zenodo.15780751)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/josephdong1000/neurodent/HEAD)
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/josephdong1000/neurodent/)


> Presented at [USRSE'25](https://doi.org/10.5281/zenodo.17274681)!

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.

## Installation

NeuRodent can be installed via `pip`:

```bash
pip install neurodent
```

For pipeline support, development setup, and other installation options, check out the [full installation guide](https://josephdong1000.github.io/neurodent/main/installation/index.html).

## Usage

> **Visit the full documentation** for more how-tos and examples:
> https://josephdong1000.github.io/neurodent

- [Quickstart](https://josephdong1000.github.io/neurodent/main/quickstart/index.html)
- [Tutorials](https://josephdong1000.github.io/neurodent/main/tutorials/index.html)  
- [API documentation](https://josephdong1000.github.io/neurodent/main/api/index.html)

## Overview

NeuRodent loads multi-format EEG data (`LongRecordingAnalyzer` → `AnimalOrganizer`) and computes features over windows (`WindowAnalysisResult`) and population spiking (`FrequencyDomainSpikeAnalysisResult`). Results feed into `AnimalOrganizer` and `ExperimentPlotter` for multi-animal comparison by genotype, session, or circadian cycle.

```python
lro = LongRecordingOrganizer(data_path)
ao = AnimalOrganizer(lro)
war = ao.compute_windowed_analysis(features=["rms", "psdband", "cohere"])
ep = ExperimentPlotter([war])
ep.plot_feature("rms", groupby="genotype")
```

A companion [Snakemake workflow](https://josephdong1000.github.io/neurodent/main/tutorials/index.html) automates the full pipeline with cluster support.

## Snakemake Workflow

The pipeline follows the [Snakemake Workflow Catalog](https://snakemake.github.io/snakemake-workflow-catalog/) standardized layout, with `workflow/Snakefile` as the single entry point.

```bash
# 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](https://onegoodtutorial.org/).

## Citation

If you find NeuRodent useful, please cite our work!

```bibtex
@misc{https://doi.org/10.5281/zenodo.17051374,
  doi = {10.5281/ZENODO.17051374},
  url = {https://zenodo.org/doi/10.5281/zenodo.17051374},
  author = {Dong,  Joseph and Yongtaek Oh,   and Marsh,  Eric},
  title = {josephdong1000/PyEEG: 0.1.1},
  publisher = {Zenodo},
  year = {2025},
  copyright = {MIT License}
}
```
