Skip to content

neuromorphs/tonic

Repository files navigation

tonic PyPI codecov Documentation Status contributors Binder DOI Discord

This project is looking for a new maintainer. Reach out to Gregor if you're interested!

Tonic is a tool to facilitate the download, manipulation and loading of event-based/spike-based data. It's like PyTorch Vision but for neuromorphic data!

Documentation

You can find the full documentation on Tonic on this site.

Install

For users

pip install tonic

or (thanks to @Tobias-Fischer)

conda install -c conda-forge tonic

For the latest pre-release on the develop branch that passed the tests:

pip install tonic --pre

For developers

We recommend using uv for development:

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone the repository
git clone https://github.com/neuromorphs/tonic.git
cd tonic

# Install dependencies and tonic in editable mode
uv sync --extra dev

# Run tests
uv run pytest test/

This package has been tested on:

Platform Python Versions Status
Linux 3.10, 3.11, 3.12
macOS (ARM64) 3.10, 3.11, 3.12
Windows 3.10, 3.11, 3.12

Quickstart

If you're looking for a minimal example to run, this is it!

import tonic
import tonic.transforms as transforms

sensor_size = tonic.datasets.NMNIST.sensor_size
transform = transforms.Compose(
    [
        transforms.Denoise(filter_time=10000),
        transforms.ToFrame(sensor_size=sensor_size, time_window=3000),
    ]
)

testset = tonic.datasets.NMNIST(save_to="./data", train=False, transform=transform)

from torch.utils.data import DataLoader

testloader = DataLoader(
    testset,
    batch_size=10,
    collate_fn=tonic.collation.PadTensors(batch_first=True),
)

frames, targets = next(iter(testloader))

Discussion and questions

Have a question about how something works? Ideas for improvement? Feature request? Please get in touch on the #tonic Discord channel or alternatively here on GitHub via the Discussions page!

Contributing

Please check out the contributions page for details.

Sponsoring

The development of this library is supported by

SynSense

Citation

If you find this package helpful, please consider citing it:

@software{lenz_gregor_2021_5079802,
  author       = {Lenz, Gregor and
                  Chaney, Kenneth and
                  Shrestha, Sumit Bam and
                  Oubari, Omar and
                  Picaud, Serge and
                  Zarrella, Guido},
  title        = {Tonic: event-based datasets and transformations.},
  month        = jul,
  year         = 2021,
  note         = {{Documentation available under https://tonic.readthedocs.io}},
  publisher    = {Zenodo},
  version      = {0.4.0},
  doi          = {10.5281/zenodo.5079802},
  url          = {https://doi.org/10.5281/zenodo.5079802}
}