Skip to main content
Yanked

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

evutils_logo EV-Utils

PyPI Version Test

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

evutils-0.3.6.tar.gz (2.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

evutils-0.3.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

evutils-0.3.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (61.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

evutils-0.3.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

evutils-0.3.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (61.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

evutils-0.3.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

evutils-0.3.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (61.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

evutils-0.3.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

evutils-0.3.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (61.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

File details

Details for the file evutils-0.3.6.tar.gz.

File metadata

  • Download URL: evutils-0.3.6.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for evutils-0.3.6.tar.gz
Algorithm Hash digest
SHA256 e7a564673f383456acba6efd5c4235e717b5c4b666064dfa29a5e617de7d135e
MD5 f11aa9f6dae0d3de1c16bdf137f1dd7e
BLAKE2b-256 a8b95016bdd61c78546c6b5b8fd67669b4b58b6a0d870021c864e20191b7f5d8

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f026fc649712f6aee8bb1b8dd39d5849af5e37b6a49e114f216fb36621e460d3
MD5 1a087ea58837efbda51cfcc1450a8402
BLAKE2b-256 166e31953363c70c1417c3bd11afe1ffc5f5095580678443d5e5a67d2e2c2f48

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0baf33462b70e6282dbbbe4af594d5a791f52e57e1a1dec8a832600103c9bcd2
MD5 83dc359184a66605e19318b22363dcbc
BLAKE2b-256 b7ea4b2c61184b535b1643bf19b92c9d28764440d414d27c053abfd7d9c3d8f7

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 606ad209727994e644b6ac88a73976fc24831dc54c500678b065c09c318ab04e
MD5 e184c11ca095ccaf6e756fc79c8879cb
BLAKE2b-256 160c0062748e97b08c7162d864d60b5ae870a920aa798d6dc8eba90a92b3b388

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 32e452fd8f6dcae0dab0e01c1b97cd0d165b058a7ae6160eafcad47a36cd32f1
MD5 5e3da98e5bf7d6f6a117d562c49c8a89
BLAKE2b-256 6f08d3976d4f7e5662ed4a91e25c067710a41ed69c93d355ac2eac5640bbc27c

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 67de44a73ed175a67c75a6a487cbae3bb07792744087fc3ba1b86139f08ad38d
MD5 a3912a40d960eda088eef955436cd0f5
BLAKE2b-256 b18e511a3357e28dd81fd57940763d94f2a5a07ac5134c4bfc0f4528a4aae3cd

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 22306fe61c0b8357be2000b6be9725d62e76f67ec30ff78988a6f065da5c18f5
MD5 fb9046968b5e42feebefe4fa15b47606
BLAKE2b-256 59dcbeb31fd58a05911e02678619959d8c22b8304dfbabe32065571c3431dc36

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b69ee19fb0679dc5da91cc7cb523ea71215d9dec90ae3c61936bc5daae44404
MD5 d0b08f4681606becec83bd53c8503835
BLAKE2b-256 739ddaed645b605b0f16db336aaea069a34673c8fa37d99ec7aedbadb4eca567

See more details on using hashes here.

File details

Details for the file evutils-0.3.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for evutils-0.3.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 130b5a59011fbb931ade69b6f0897dc7207bd607fe1bf4d63208dedd15a32ade
MD5 06d5fa110e73d26a7ec89c789ca3ed63
BLAKE2b-256 db76fe090c130a667b299a6f1e5fe8c5b4f7d4acf4a16d31cc7bba9f546da015

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.18

26 files

0.3.17

26 files

0.3.16

26 files

0.3.15

26 files

0.3.14

26 files

0.3.13

26 files

0.3.12

26 files

0.3.11

26 files

0.3.10

26 files

0.3.7

7 files

This release

0.3.6 This release

9 files

0.3.1

9 files

0.3.0

9 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