ezmsg#
Welcome to the ezmsg documentation!
ezmsg is a highly performant messaging and multiprocessing framework designed for building modular, high-performance signal processing pipelines. It is built in pure Python with no dependencies, making it easy to install and use.
What is ezmsg?#
ezmsg(n) - “easy message”ezmsg is a high-performance execution engine and multiprocessing backend for executing a directed acyclic graph of stream-processing units via a publish-subscribe pattern facilitated by shared memory transfer with zero-copy messaging between composable nodes written in pure Python with no dependencies or stated application space.
ezmsg implements much of the LabGraph API (with a few notable differences), and owes a lot of its design to the LabGraph developers/project. Afterall, imitation is the sincerest form of flattery.
The ezmsg library eases the creation of modular systems whose elements can be switched out easily. Consider the use case of building a processing pipeline where you will be experimenting with adding and removing steps until you find an optimal workflow. ezmsg allows you to easily separate each step into a discrete entity and piece together a workflow from those entities. Check out the helpful tutorial series to see how this works.
Quick start#
For a detailed description of the installation process and getting started with ezmsg, please refer to the Getting Started guide.
But in short, if you have Python 3.10+ installed, you can install ezmsg via pip:
pip install ezmsg
Then in your Python script or Jupyter notebook, you can import ezmsg like so:
import ezmsg.core as ez
If you would like to develop with ezmsg or contribute to the project, you can follow the steps outlined in the Developer Guide.
If you would like to build the documentation locally, please refer to the instructions found in Building ezmsg Documentation.
A substantial list of extensions exist for ezmsg. One can install extensions as follows:
pip install ezmsg[extension_name]
See Extensions for more information.
Documentation Overview#
This documentation is designed to help you get started with ezmsg, understand its architecture, and learn how to use it effectively in your projects.
Give it a try with our specially created tutorial series and see how it can simplify your signal processing needs.
If you don’t want to download and install anything just yet, you can check out this Google Colab page for an example ezmsg notebook to experiment with. It’s a little dated, but it should give you a good idea of how to use ezmsg in a Jupyter notebook environment.
These are a few high-level topics to help you learn more about ezmsg and the ezmsg ecosystem.
|
Tutorials and examples to help you get started |
Installation and Configuration Installation instructions for ezmsg |
|
About ezmsg, its components and design philosophy |
New features, changes, deprecation notes, and bug fixes |
|
API links and glossary |
How to use ezmsg in various scenarios and applications |
|
Info for those wanting to contribute and help develop ezmsg |
Glossary of terms used in this documentation |
Why use ezmsg?#
Why use ezmsg over a comparable tool? ezmsg is extremely fast and uses Python’s multiprocessing.shared_memory module to facilitate efficient message passing without C++ or any compilation/build tooling. It is easy to install and contains less boilerplate than similar frameworks. It also provides a framework for building processing pipelines while keeping best practices in mind.
Table of Contents#
Below is a breakdown of all the documentation available on this site.
Other Information#
Financial Support#
ezmsg is supported by Johns Hopkins University (JHU), the JHU Applied Physics Laboratory (APL), and by the Wyss Center for Bio and Neuro Engineering.
In Media#
Publications#
A collection of academic papers, journals, and other publications that have cited or utilized ezmsg in research and development. These publications provide insights into the practical applications and impact of ezmsg in various fields.