This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.3.18 instead.
Reason given by maintainers: Broken Alpha
EV-Utils
Overview
EV-Utils (evutils) is a performant collection of utilities for working with event-based vision data. Built with minimal dependencies, it relies on compiled C backed for speed while offering a clean, modular Python interface.
Inspirations & Related Work
This project draws inspiration from several excellent libraries in the event-based vision ecosystem and attempts to fill in their shortcomings:
Installation
We recommend installing evutils using uv.
From PyPi
uv add evutils[all]
From Git
git clone --recurse-submodules https://github.com/mandulaj/evutils.git
cd evutils
uv pip install -e ".[dev]"
Note: You can also install specific optional dependency groups like uv add evutils[torch,hdf5].
Architecture
The library is divided into several discrete modules. Many can be used independently without installing the full suite of dependencies:
└── augment - Event augmentations
└── dataset - Wrappers for various dataset loaders
└── events - Core event handling logic
└── io - Event reading and writing interfaces
├── reader
└── writer
└── random - Random event generation and noise injection
└── torch - PyTorch integration (requires evutils[torch])
└── types - Standard types for representing Events in NumPy arrays
└── vis - Visualization methods
├── histogram
└── reconstructor
Quick API overview
io: Reading and Writing Events
The io module provides methods for reading and writing events into various event formats. It provides a simple .read() and .write() interface as well as more advanced interfaces using iterators and slicing.
from evutils.io import EventReader
ev_file = EventReader("raw_file.raw", delta_t=10e3)
events = ev_file.read()
utils
Various utility functions
random
Generating random events and adding noise to event recordings
types
This provides several standard types for representing Events in numpy arrays
vis
The vis moduels provides several methods for visualizing the events (for example as histograms), but also provides a streamlined interface for more complex visualization techneques, such as using the E2Vid reconstructor.
from evutils.vis.reconstructor import RPG_Reconstructor
reconstructor = RPG_Reconstructor(1280, 720)
img = reconstructor.gen_frame(events)
Running tests
Tests are managed via pytest. If you installed the package with the [dev] or [test] flag, you can run them via:
uv run pytest -s
Benchmarks
Read/write throughput benchmarks (using pytest-benchmark) live in benchmarks/ and are kept out of the normal test run. Run them explicitly:
uv run pytest benchmarks/ # evutils only
uv run pytest benchmarks/ --benchmark-group-by=param:fmt # compare libraries per format
The benchmarks download a real Prophesee recording on first use. Optional cross-library comparisons run automatically once the libraries are installed (uv pip install -e ".[compare]"); OpenEB/Metavision is compared via the Docker image in benchmarks/docker/. See benchmarks/README.md for details.
Decode/encode throughput on a 12th Gen Intel Core i7-1280P (millions of events per second, higher is better):
Read (full-file decode)
| Format | evutils | expelliarmus | evlib |
|---|---|---|---|
| EVT2 | 91 | 105 | 5 |
| EVT2.1 | 72 | – | – |
| EVT3 | 53 | 41 | 5 |
Write (evutils; expelliarmus/evlib are read-only for these formats)
| Format | evutils |
|---|---|
| EVT2 | 146 |
| EVT2.1 | 110 |
| EVT3 | 74 |
(– = format not supported by that library.)
Acknowledgements
Thanks to all the contributors for supporting this project:
- Elia Franc
- Jakub Mandula
Cite
@PhDThesis{2024mandula_evutils,
author = {Jakub Mandula},
title = {EV-Utils: collection of utilities for working with event-based vision data},
school = {Dept. of Information Technology and Electrical Engineering, ETH Zurich},
year = 2024
}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evutils-0.3.7.tar.gz.
File metadata
- Download URL: evutils-0.3.7.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c6df133ecba6e02b132906bf0516bc12735c5663b285468da58c7d713ed7ad9
|
|
| MD5 |
32a55a14d1f720fc672e2bf60033d0dd
|
|
| BLAKE2b-256 |
0d3acbde4fb0fc0f1e203e79f5d37168c2f6bb97961aa5f3240cd11474a928f3
|
Provenance
The following attestation bundles were made for evutils-0.3.7.tar.gz:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7.tar.gz -
Subject digest:
1c6df133ecba6e02b132906bf0516bc12735c5663b285468da58c7d713ed7ad9 - Sigstore transparency entry: 2081662819
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evutils-0.3.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: evutils-0.3.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 60.8 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9d5144b7b380d76f550ba9f7dddca8bed146958d3cc2afe5e038f108ec8d246
|
|
| MD5 |
2e4e0a12f560f9ea014167e2f1e7c9c6
|
|
| BLAKE2b-256 |
e9a86dcfcaf15b3995bddb2581971f5e9bd341b7f5b8de2c816aa58be4114b17
|
Provenance
The following attestation bundles were made for evutils-0.3.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
f9d5144b7b380d76f550ba9f7dddca8bed146958d3cc2afe5e038f108ec8d246 - Sigstore transparency entry: 2081664680
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evutils-0.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: evutils-0.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 60.8 kB
- Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fbab65732ca2295eb9088d84b6e6eacb5ec7fedb0bcfa7a5f195c0f1b7ab8b3
|
|
| MD5 |
0e0afe5a2e12872da40599589de73df9
|
|
| BLAKE2b-256 |
ae3611a84d91d9833650f3dc29b6a11d9e76c18c47332c0ff97efefa171500be
|
Provenance
The following attestation bundles were made for evutils-0.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
0fbab65732ca2295eb9088d84b6e6eacb5ec7fedb0bcfa7a5f195c0f1b7ab8b3 - Sigstore transparency entry: 2081664139
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evutils-0.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: evutils-0.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 60.8 kB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec5f2a1983478e18b09bc35b632bf655f86af92f0eb32fa5bdf26324f5166b8e
|
|
| MD5 |
e6e336a044ac7894da9bf492da08f65c
|
|
| BLAKE2b-256 |
07384c9dc0ea72de3fa4d749449a410cb3f38ee81cd763b91cfbd43e6c572ce9
|
Provenance
The following attestation bundles were made for evutils-0.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
ec5f2a1983478e18b09bc35b632bf655f86af92f0eb32fa5bdf26324f5166b8e - Sigstore transparency entry: 2081664457
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evutils-0.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: evutils-0.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 60.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6708ca90cda2d2759c8863494e002775a6b7e3fe6a017a3cbf19e21ddf14e4d4
|
|
| MD5 |
4a0be7cd47d31d05cee4e5db8a66e9ca
|
|
| BLAKE2b-256 |
594c1cbfd2dfc37e7d401fe48d8ede3108514d19629151f1cb72b9af49f27179
|
Provenance
The following attestation bundles were made for evutils-0.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
6708ca90cda2d2759c8863494e002775a6b7e3fe6a017a3cbf19e21ddf14e4d4 - Sigstore transparency entry: 2081663765
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evutils-0.3.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: evutils-0.3.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 60.8 kB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8e9991d31f8177bfe8383c1387229fd369312e67c6d6bc153e8376065168928
|
|
| MD5 |
2291a044aa94242cd86635f80c9730ad
|
|
| BLAKE2b-256 |
afc1cb0945e271642c7cd0f01e2c2c60fb240f7cdb546716f099cf10adf24181
|
Provenance
The following attestation bundles were made for evutils-0.3.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
b8e9991d31f8177bfe8383c1387229fd369312e67c6d6bc153e8376065168928 - Sigstore transparency entry: 2081663103
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evutils-0.3.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: evutils-0.3.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 60.8 kB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5b6ad782106c38f2faa7153f1ae695e7feff7ad5e2dc7aebe2b4912f4adf3c2
|
|
| MD5 |
85e9e76a244e2046f8aa1246d6676adb
|
|
| BLAKE2b-256 |
3e32890558f338c6792218dba2367d3f63725cdcb2af69c5b47492c49fbd3a43
|
Provenance
The following attestation bundles were made for evutils-0.3.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
release.yaml on mandulaj/evutils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evutils-0.3.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
f5b6ad782106c38f2faa7153f1ae695e7feff7ad5e2dc7aebe2b4912f4adf3c2 - Sigstore transparency entry: 2081663455
- Sigstore integration time:
-
Permalink:
mandulaj/evutils@e0bef8084ab700162537278fda6ceff36ae29844 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/mandulaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@e0bef8084ab700162537278fda6ceff36ae29844 -
Trigger Event:
release
-
Statement type: