{"id":33116872,"url":"https://github.com/aestream/aestream","last_synced_at":"2025-11-19T20:01:38.311Z","repository":{"id":40409034,"uuid":"280219781","full_name":"aestream/aestream","owner":"aestream","description":"Efficient streaming of sparse event data supporting files, network I/O, GPU peripherals (via Torch/Jax/Numpy) and neuromorphic protocols","archived":false,"fork":false,"pushed_at":"2025-08-05T09:37:31.000Z","size":31671,"stargazers_count":81,"open_issues_count":29,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-09-02T18:27:33.010Z","etag":null,"topics":["coroutines","event-camera","gpu-acceleration","neuromorphic","pytorch"],"latest_commit_sha":null,"homepage":"https://aestream.github.io/aestream","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aestream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-16T17:45:52.000Z","updated_at":"2025-08-27T19:17:59.000Z","dependencies_parsed_at":"2024-03-14T10:29:54.796Z","dependency_job_id":"4a63bf76-fda6-42a8-abaa-f60bd124d11d","html_url":"https://github.com/aestream/aestream","commit_stats":null,"previous_names":["norse/aestream"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/aestream/aestream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aestream%2Faestream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aestream%2Faestream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aestream%2Faestream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aestream%2Faestream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aestream","download_url":"https://codeload.github.com/aestream/aestream/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aestream%2Faestream/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285319005,"owners_count":27151474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-19T02:00:05.673Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coroutines","event-camera","gpu-acceleration","neuromorphic","pytorch"],"created_at":"2025-11-15T03:00:23.893Z","updated_at":"2025-11-19T20:01:38.306Z","avatar_url":"https://github.com/aestream.png","language":"C++","funding_links":[],"categories":["Datasets and Dataset Tools"],"sub_categories":[],"readme":"\n\u003ca href=\"https://github.com/aestream/aestream\"\u003e\u003cimg src=\"https://github.com/aestream/aestream/raw/main/logo.png\" /\u003e\u003c/a\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/aestream/aestream/actions\"\u003e\n        \u003cimg src=\"https://github.com/aestream/aestream/workflows/Build%20and%20test/badge.svg\" alt=\"Test status\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/aestream/\" alt=\"PyPi\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/dm/aestream\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/aestream/aestream/pulse\" alt=\"Activity\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/last-commit/aestream/aestream\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://discord.gg/7fGN359\"\u003e\n        \u003cimg src=\"https://img.shields.io/discord/723215296399147089\"\n            alt=\"chat on Discord\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://doi.org/10.1145/3584954.3584997\"\u003e\u003cimg src=\"https://zenodo.org/badge/DOI/10.1145/3584954.3584997.svg\" alt=\"DOI\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://open-neuromorphic.org/neuromorphic-computing/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Collaboration_Network-Open_Neuromorphic-blue\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nAEStream sends event-based data from A to B.\nAEStream is both a command-line tool an a C++/Python library with built-in GPU-acceleration for use with [PyTorch](https://pytorch.org/), and [Jax](https://jax.readthedocs.io/en/latest/).\nWe support reading and writing from files, [event cameras](https://en.wikipedia.org/wiki/Event_camera), network protocols, and visualization tools.\n\n\u003cimg src=\"https://github.com/aestream/aestream/raw/main/docs/aestream_flow.png\" /\u003e\n\nRead more about the inner workings of the library in [the AEStream publication](https://jegp.github.io/aestream-paper/).\n\n## Installation\n\n\u003e Read more in our [installation guide](https://aestream.github.io/aestream/install.html)\n\nThe fastest way to install AEStream is by using pip: `pip install aestream`.\n\n| **Source** | **Installation** | **Description** |\n| -------------------- | --- | --- |\n| [pip](https://pypi.org/) | \u003ccode\u003epip install aestream\u003c/code\u003e \u003cbr/\u003e \u003ccode\u003epip install aestream --no-binary aestream\u003c/code\u003e | Standard installation \u003cbr/\u003e Support for \u003ca href=\"https://aestream.github.io/aestream/install.html#Event-camera-support\"\u003eevent-cameras\u003c/a\u003e and CUDA kernels\u003c/a\u003e ([more info](https://aestream.github.io/aestream/install.html#installing-with-cuda-support)) |\n| [nix](https://nixos.org/) | \u003ccode\u003enix run github:aestream/aestream\u003c/code\u003e \u003cbr/\u003e \u003ccode\u003enix develop github:aestream/aestream\u003c/code\u003e | Command-line interface \u003cbr/\u003e Python environment |\n| [docker](https://docker.com/) | See \u003ca href=\"https://aestream.github.io/aestream/install.html\"\u003eInstallation documentation\u003c/a\u003e |\n\nContributions to support AEStream on additional platforms are always welcome.\n\n## Usage (Python): Load event files\n\n\u003e Read more in our [Python usage guide](https://aestream.github.io/aestream/python_usage.html)\n\nAEStream can process `.csv`, `.dat`, `.evt3`, and `.aedat4` files like so.\nYou can either directly load the file into memory\n\n```python\nFileInput(\"file.aedat4\", (640, 480)).load()\n```\n\nor stream the file in real-time to PyTorch, Jax, or Numpy\n\n```python\nwith FileInput(\"file.aedat4\", (640, 480)) as stream:\n    while True:\n        frame = stream.read(\"torch\") # Or \"jax\" or \"numpy\"\n        ...\n```\n\n## Usage (Python): stream data from camera or network\nStreaming data is particularly useful in real-time scenarios.\nWe currently support [Inivation](https://inivation.com/), [Prophesee](https://github.com/prophesee-ai/openeb/), and [SynSense](https://www.synsense.ai/) devices over USB, as well as the [SPIF](https://github.com/SpiNNakerManchester/spif) protocol over UDP.\nNote: requires local installation of drivers and/or SDKs (see [installation guide](https://aestream.github.io/aestream/install.html)).\n\n```python\n# Stream events from a DVS camera over USB\nwith USBInput((640, 480)) as stream:\n    while True:\n        frame = stream.read() # A (640, 480) Numpy tensor\n        ...\n```\n\n```python\n# Stream events from UDP port 3333 (default)\nwith UDPInput((640, 480), port=3333) as stream:\n    while True:\n        frame = stream.read(\"torch\") # A (640, 480) Pytorch tensor\n        ...\n```\n\nMore examples can be found in [our example folder](https://github.com/aestream/aestream/tree/master/example).\nPlease note the examples may require additional dependencies (such as [Norse](https://github.com/norse/norse) for spiking networks or [PySDL](https://github.com/py-sdl/py-sdl2) for rendering). To install all the requirements, simply stand in the `aestream` root directory and run `pip install -r example/requirements.txt`\n\n### Example: real-time edge detection with spiking neural networks\n\n![](https://media.githubusercontent.com/media/aestream/aestream/main/example/usb_edgedetection.gif)\n\nWe stream events from a camera connected via USB and process them on a GPU in real-time using the [spiking neural network library, Norse](https://github.com/norse/norse) using fewer than 50 lines of Python.\nThe left panel in the video shows the raw signal, while the middle and right panels show horizontal and vertical edge detection respectively.\nThe full example can be found in [`example/usb_edgedetection.py`](https://github.com/aestream/aestream/blob/main/example/usb_edgedetection.py)\n\n## Usage (CLI)\n\u003e Read more in our [CLI usage documentation page](https://aestream.github.io/aestream/install.html)\n\nInstalling AEStream also gives access to the command-line interface (CLI) `aestream`.\nTo use `aestraem`, simply provide an `input` source and an optional `output` sink (defaulting to STDOUT):\n\n```bash\naestream input \u003cinput source\u003e [output \u003coutput sink\u003e]\n```\n## Supported Inputs and Outputs\n\n| Input | Description | Example usage |\n| --------- | :----------- | ----- |\n| DAVIS, DVXPlorer | [Inivation](https://inivation.com/) DVS Camera over USB | `input inivation` |\n| EVK Cameras      | [Prophesee](https://www.prophesee.ai/) DVS camera over USB  | `input prophesee` |\n| File             | Reads `.aedat`, `.aedat4`, `.csv`, `.dat`, or `.raw` files | `input file x.aedat4` |\n| [SynSense Speck](https://www.synsense.ai/products/speck-2/) | Stream events via ZMQ | `input speck` |\n| UDP network | Receives stream of events via the [SPIF protocol](https://github.com/SpiNNakerManchester/spif/tree/master/spiffer) | `input udp`\n\n| Output | Description | Example usage |\n| --------- | ----------- | ----- |\n| STDOUT    | Standard output (default output) | `output stdout`\n| Ethernet over UDP | Outputs to a given IP and port using the [SPIF protocol](https://github.com/SpiNNakerManchester/spif)  | `output udp 10.0.0.1 1234` |\n| File: `.aedat4`  | Output to [`.aedat4` format](https://gitlab.com/inivation/inivation-docs/blob/master/Software%20user%20guides/AEDAT_file_formats.md#aedat-40) | `output file my_file.aedat4` |\n| File: `.csv`       | Output to comma-separated-value (CSV) file format | `output file my_file.csv` |\n| Viewer | View live event stream | `output view`\n\n## CLI examples\n\n| Example | Syntax |\n| ------------- | ------------------------------|\n| View live stream of Inivation camera (requires Inivation drivers) | `aestream input inivation output view` |\n| Stream Prophesee camera over the network to 10.0.0.1 (requires Metavision SDK) | `aestream input output udp 10.0.0.1` |\n| Convert `.dat` file to `.aedat4` | `aestream input example/sample.dat output file converted.aedat4` |\n\n## Acknowledgments\n\nAEStream is developed by (in alphabetical order):\n\n* Cameron Barker (@GitHub [cameron-git](https://github.com/cameron-git/))\n* [Juan Pablo Romero Bermudez](https://www.kth.se/profile/jprb) (@GitHub [jpromerob](https://github.com/jpromerob/))\n* Alexander Hadjivanov (@Github [cantordust](https://github.com/cantordust))\n* Emil Jansson (@GitHub [emijan-kth](https://github.com/emijan-kth))\n* [Jens E. Pedersen](https://www.kth.se/profile/jeped) (@GitHub [jegp](https://github.com/jegp/))\n* [Christian Pehle](https://www.kip.uni-heidelberg.de/people/10110) (@GitHub [cpehle](https://github.com/cpehle/))\n\nThe work has received funding from the EC Horizon 2020 Framework Programme under Grant Agreements 785907 and 945539 (HBP) and by the Deutsche Forschungsgemeinschaft (DFG, German Research Fundation) under Germany's Excellence Strategy EXC 2181/1 - 390900948 (the Heidelberg STRUCTURES Excellence Cluster).\n\nThanks to [Philipp Mondorf](https://github.com/PMMon) for interfacing with Metavision SDK and preliminary network code.\n\n\u003ca href=\"https://github.com/aestream/aestream/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=aestream/aestream\" /\u003e\n\u003c/a\u003e\n\n\n## Citation\n\nPlease cite `aestream` if you use it in your work:\n\n```bibtex\n@inproceedings{10.1145/3584954.3584997,\n    author = {Pedersen, Jens Egholm and Conradt, Jorg},\n    title = {AEStream: Accelerated event-based processing with coroutines},\n    year = {2023},\n    isbn = {9781450399470},\n    publisher = {Association for Computing Machinery},\n    address = {New York, NY, USA},\n    url = {https://doi.org/10.1145/3584954.3584997},\n    doi = {10.1145/3584954.3584997},\n    booktitle = {Proceedings of the 2023 Annual Neuro-Inspired Computational Elements Conference},\n    pages = {86–91},\n    numpages = {6},\n    keywords = {coroutines, event-based vision, graphical processing unit, neuromorphic computing},\n    location = {San Antonio, TX, USA, },\n    series = {NICE '23}\n}\n\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faestream%2Faestream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faestream%2Faestream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faestream%2Faestream/lists"}