Extensions
##########
ezmsg uses `Python namespace packages `_ to provide a modular ecosystem of extensions. Namespace packages allow multiple independently distributed packages to share a common namespace (``ezmsg.*``), so you can install only what you need while keeping imports consistent.
For example, installing ``ezmsg-sigproc`` makes the ``ezmsg.sigproc`` module available:
.. code-block:: bash
pip install ezmsg-sigproc
.. code-block:: python
from ezmsg.sigproc.butterworthfilter import ButterworthFilter
Each extension is a separate package with its own dependencies, versioning, and release cycle. This keeps the core ``ezmsg`` package lightweight while allowing the ecosystem to grow.
|ezmsg_logo_small| Official Extensions
**************************************
These namespace packages are maintained by the ezmsg organization:
.. list-table::
:header-rows: 1
:widths: 20 50 15 15
* - Package
- Description
- Docs
- Source
* - `ezmsg-baseproc `_
- Base processor classes and protocols for building message-processing components
- `docs `__
- `github `__
* - `ezmsg-blackrock `_
- Interface for Blackrock Cerebus ecosystem (incl. Neuroport) using pycbsdk
- `docs `__
- `github `__
* - `ezmsg-dashboard `_
- Web dashboard for inspecting and operating running ezmsg systems
- `docs `__
- `github `__
* - `ezmsg-event `_
- Discrete signal events like neural spikes, heartbeats, and triggers
- `docs `__
- `github `__
* - `ezmsg-kinematics `_
- Units and utilities for streaming kinematics
- `docs `__
- `github `__
* - `ezmsg-learn `_
- Machine learning modules for streaming signal processing
- `docs `__
- `github `__
* - `ezmsg-lsl `_
- Lab Streaming Layer (LSL) inlet and outlet units
- `docs `__
- `github `__
* - `ezmsg-neo `_
- Load and stream data from Neo-supported file formats (Blackrock, BrainVision, etc.)
- `docs `__
- `github `__
* - `ezmsg-nwb `_
- NWB (Neurodata Without Borders) file reading and writing
- `docs `__
- `github `__
* - `ezmsg-panel `_
- Real-time plotting and dashboards using Panel/HoloViz
- `docs `__
- `github `__
* - `ezmsg-qt `_
- Qt integration: publish/subscribe to ezmsg topics from Qt widgets
- `docs `__
- `github `__
* - `ezmsg-redis `_
- Redis pub/sub units for distributed messaging
- `docs `__
- `github `__
* - `ezmsg-sigproc `_
- Timeseries signal processing: filtering, spectral analysis, resampling, and more
- `docs `__
- `github `__
* - `ezmsg-simbiophys `_
- Simulated biophysical signals: oscillators, noise generators, synthetic EEG
- `docs `__
- `github `__
* - `ezmsg-tools `_
- Visualization and debugging tools for running ezmsg graphs
- `docs `__
- `github `__
* - `ezmsg-websocket `_
- WebSocket server and client units for web integration
- `docs `__
- `github `__
* - `ezmsg-xdf `_
- XDF (Extensible Data Format) file reading and writing
- `docs `__
- `github `__
* - `ezmsg-zmq `_
- ZeroMQ pub/sub units for distributed messaging
- `docs `__
- `github `__
|ezmsg_logo_small| Community Extensions
***************************************
These extensions are maintained by community members:
- `ezmsg-unicorn `_ -- g.tec Unicorn Hybrid Black integration
- `ezmsg-gadget `_ -- USB-gadget with HID control for Raspberry Pi (Zero/W/2W, 4, CM4)
- `ezmsg-openbci `_ -- OpenBCI Cyton serial interface
- `ezmsg-ssvep `_ -- Tools for running SSVEP experiments
- `ezmsg-vispy `_ -- Visualization toolkit using PyQt6 and VisPy
.. note::
Want to create your own extension? Use the `ezmsg-template `_ repository as a starting point.
.. |ezmsg_logo_small| image:: ../_static/_images/ezmsg_logo.png
:width: 40
:alt: ezmsg logo