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.7.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.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (60.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

evutils-0.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (60.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

evutils-0.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (60.8 kB view details)

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

evutils-0.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (60.8 kB view details)

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

evutils-0.3.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (60.8 kB view details)

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

evutils-0.3.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (60.8 kB view details)

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

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

Hashes for evutils-0.3.7.tar.gz
Algorithm Hash digest
SHA256 1c6df133ecba6e02b132906bf0516bc12735c5663b285468da58c7d713ed7ad9
MD5 32a55a14d1f720fc672e2bf60033d0dd
BLAKE2b-256 0d3acbde4fb0fc0f1e203e79f5d37168c2f6bb97961aa5f3240cd11474a928f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for evutils-0.3.7.tar.gz:

Publisher: release.yaml on mandulaj/evutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for evutils-0.3.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f9d5144b7b380d76f550ba9f7dddca8bed146958d3cc2afe5e038f108ec8d246
MD5 2e4e0a12f560f9ea014167e2f1e7c9c6
BLAKE2b-256 e9a86dcfcaf15b3995bddb2581971f5e9bd341b7f5b8de2c816aa58be4114b17

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for evutils-0.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 0fbab65732ca2295eb9088d84b6e6eacb5ec7fedb0bcfa7a5f195c0f1b7ab8b3
MD5 0e0afe5a2e12872da40599589de73df9
BLAKE2b-256 ae3611a84d91d9833650f3dc29b6a11d9e76c18c47332c0ff97efefa171500be

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for evutils-0.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 ec5f2a1983478e18b09bc35b632bf655f86af92f0eb32fa5bdf26324f5166b8e
MD5 e6e336a044ac7894da9bf492da08f65c
BLAKE2b-256 07384c9dc0ea72de3fa4d749449a410cb3f38ee81cd763b91cfbd43e6c572ce9

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for evutils-0.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 6708ca90cda2d2759c8863494e002775a6b7e3fe6a017a3cbf19e21ddf14e4d4
MD5 4a0be7cd47d31d05cee4e5db8a66e9ca
BLAKE2b-256 594c1cbfd2dfc37e7d401fe48d8ede3108514d19629151f1cb72b9af49f27179

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for evutils-0.3.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b8e9991d31f8177bfe8383c1387229fd369312e67c6d6bc153e8376065168928
MD5 2291a044aa94242cd86635f80c9730ad
BLAKE2b-256 afc1cb0945e271642c7cd0f01e2c2c60fb240f7cdb546716f099cf10adf24181

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

File hashes

Hashes for evutils-0.3.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f5b6ad782106c38f2faa7153f1ae695e7feff7ad5e2dc7aebe2b4912f4adf3c2
MD5 85e9e76a244e2046f8aa1246d6676adb
BLAKE2b-256 3e32890558f338c6792218dba2367d3f63725cdcb2af69c5b47492c49fbd3a43

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

This release

0.3.7 This release

7 files

0.3.6

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