Skip to content

Commit e218256

Browse files
committed
Make namespace packages more prominent.
1 parent 861a31e commit e218256

3 files changed

Lines changed: 152 additions & 63 deletions

File tree

docs/source/conf.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,18 @@
4040
"sphinx": ("https://www.sphinx-doc.org/en/master/", None),
4141
"numpy": ("https://numpy.org/doc/stable/", None),
4242
"ezmsg": ("https://www.ezmsg.org/ezmsg/", None),
43-
"ezmsg.sigproc": ("https://www.ezmsg.org/ezmsg-sigproc/", None),
44-
"ezmsg.learn": ("https://www.ezmsg.org/ezmsg-learn/", None),
43+
"ezmsg.baseproc": ("https://www.ezmsg.org/ezmsg-baseproc/", None),
4544
"ezmsg.blackrock": ("https://www.ezmsg.org/ezmsg-blackrock/", None),
4645
"ezmsg.event": ("https://www.ezmsg.org/ezmsg-event/", None),
46+
"ezmsg.learn": ("https://www.ezmsg.org/ezmsg-learn/", None),
4747
"ezmsg.lsl": ("https://www.ezmsg.org/ezmsg-lsl/", None),
48+
"ezmsg.neo": ("https://www.ezmsg.org/ezmsg-neo/", None),
49+
"ezmsg.panel": ("https://www.ezmsg.org/ezmsg-panel/", None),
50+
"ezmsg.redis": ("https://www.ezmsg.org/ezmsg-redis/", None),
51+
"ezmsg.sigproc": ("https://www.ezmsg.org/ezmsg-sigproc/", None),
52+
"ezmsg.simbiophys": ("https://www.ezmsg.org/ezmsg-simbiophys/", None),
4853
"ezmsg.tools": ("https://www.ezmsg.org/ezmsg-tools/", None),
54+
"ezmsg.websocket": ("https://www.ezmsg.org/ezmsg-websocket/", None),
4955
"ezmsg.xdf": ("https://www.ezmsg.org/ezmsg-xdf/", None),
5056
"ezmsg.zmq": ("https://www.ezmsg.org/ezmsg-zmq/", None),
5157
}
@@ -59,6 +65,24 @@
5965

6066
html_static_path = ["_static"]
6167

68+
html_theme_options = {
69+
"header_links_before_dropdown": 5,
70+
"navbar_start": ["navbar-logo"],
71+
"navbar_end": ["theme-switcher", "navbar-icon-links"],
72+
"icon_links": [
73+
{
74+
"name": "GitHub",
75+
"url": "https://github.com/ezmsg-org/ezmsg",
76+
"icon": "fa-brands fa-github",
77+
},
78+
{
79+
"name": "PyPI",
80+
"url": "https://pypi.org/project/ezmsg/",
81+
"icon": "fa-solid fa-box",
82+
},
83+
],
84+
}
85+
6286
# Redirects for pages that are unavailable or moved
6387
rediraffe_redirects = {
6488
"about.rst": "explanations/content-explanations.rst",

docs/source/extensions/content-extensions.rst

Lines changed: 93 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,103 @@
1-
List of Extensions
2-
#######################
1+
Extensions
2+
##########
33

4-
`ezmsg` extensions can be installed individually or all at once. To install all the extension packages in one go, you can use the following command:
5-
6-
.. code-block:: bash
7-
8-
pip install "ezmsg[all_ext]"
4+
ezmsg uses `Python namespace packages <https://packaging.python.org/en/latest/guides/packaging-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.
95

10-
11-
This will install all the available public extension packages for `ezmsg` that are listed in `pyproject.toml`.
12-
If you prefer to install a subset of extension packages, you can use the following command:
6+
For example, installing ``ezmsg-sigproc`` makes the ``ezmsg.sigproc`` module available:
137

148
.. code-block:: bash
159
16-
pip install "ezmsg[zmq,sigproc,...]"
17-
18-
Please note that the `ezmsg` package itself can still be installed without any additional extensions using `pip install ezmsg`.
19-
20-
Extensions can be managed manually as well. Here are some of the extensions we manage or are aware of:
21-
22-
- `ezmsg-sigproc <https://github.com/ezmsg-org/ezmsg-sigproc>`_ -- Timeseries signal processing modules
23-
- `ezmsg-learn <https://github.com/ezmsg-org/ezmsg-learn>`_ -- Machine learning modules for streaming signal processing
24-
- `ezmsg-lsl <https://github.com/ezmsg-org/ezmsg-lsl>`_ -- Source unit for LSL Inlet and sink unit for LSL Outlet
25-
- `ezmsg-websocket <https://github.com/ezmsg-org/ezmsg-websocket>`_ -- Websocket server and client nodes for `ezmsg` graphs
26-
- `ezmsg-zmq <https://github.com/ezmsg-org/ezmsg-zmq>`_ -- ZeroMQ pub and sub nodes for `ezmsg` graphs
27-
- `ezmsg-panel <https://github.com/griffinmilsap/ezmsg-panel>`_ -- Plotting tools for `ezmsg` that use `panel <https://github.com/holoviz/panel>`_
28-
- `ezmsg-blackrock <https://github.com/griffinmilsap/ezmsg-blackrock>`_ -- Interface for Blackrock Cerebus ecosystem (incl. Neuroport) using `pycbsdk`
29-
- `ezmsg-unicorn <https://github.com/griffinmilsap/ezmsg-unicorn>`_ -- g.tec Unicorn Hybrid Black integration for `ezmsg`
30-
- `ezmsg-gadget <https://github.com/griffinmilsap/ezmsg-gadget>`_ -- USB-gadget with HID control integration for Raspberry Pi (Zero/W/2W, 4, CM4)
31-
- `ezmsg-openbci <https://github.com/griffinmilsap/ezmsg-openbci>`_ -- OpenBCI Cyton serial interface for `ezmsg`
32-
- `ezmsg-ssvep <https://github.com/griffinmilsap/ezmsg-ssvep>`_ -- Tools for running SSVEP experiments with `ezmsg`
33-
- `ezmsg-vispy <https://github.com/pperanich/ezmsg-vispy>`_ -- `ezmsg` visualization toolkit using PyQt6 and vispy.
34-
35-
|ezmsg_logo_small| Extension API References
36-
***********************************************
37-
38-
For detailed API documentation, visit the individual package documentation sites:
39-
40-
Core Extensions
41-
===============
42-
43-
* `ezmsg-sigproc <https://www.ezmsg.org/ezmsg-sigproc/>`_ - Timeseries signal processing modules
44-
* `ezmsg-learn <https://www.ezmsg.org/ezmsg-learn/>`_ - Machine learning modules for streaming signal processing
45-
46-
Data Acquisition & Streaming
47-
=============================
48-
49-
* `ezmsg-blackrock <https://www.ezmsg.org/ezmsg-blackrock/>`_ - Interface for Blackrock Cerebus ecosystem (incl. Neuroport)
50-
* `ezmsg-lsl <https://www.ezmsg.org/ezmsg-lsl/>`_ - Lab Streaming Layer integration
51-
52-
Data Formats & Events
53-
======================
54-
55-
* `ezmsg-event <https://www.ezmsg.org/ezmsg-event/>`_ - Signal events like neural spikes and heartbeats
56-
* `ezmsg-xdf <https://www.ezmsg.org/ezmsg-xdf/>`_ - XDF (Extensible Data Format) file support
57-
58-
Communication & Visualization
59-
==============================
60-
61-
* `ezmsg-zmq <https://www.ezmsg.org/ezmsg-zmq/>`_ - ZeroMQ pub/sub units for distributed messaging
62-
* `ezmsg-tools <https://www.ezmsg.org/ezmsg-tools/>`_ - Tools to visualize running graphs and data
10+
pip install ezmsg-sigproc
11+
12+
.. code-block:: python
13+
14+
from ezmsg.sigproc.butterworthfilter import ButterworthFilter
15+
16+
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.
17+
18+
|ezmsg_logo_small| Official Extensions
19+
**************************************
20+
21+
These namespace packages are maintained by the ezmsg organization:
22+
23+
.. list-table::
24+
:header-rows: 1
25+
:widths: 20 50 15 15
26+
27+
* - Package
28+
- Description
29+
- Docs
30+
- Source
31+
* - `ezmsg-baseproc <https://pypi.org/project/ezmsg-baseproc/>`_
32+
- Base processor classes and protocols for building message-processing components
33+
- `docs <https://www.ezmsg.org/ezmsg-baseproc/>`_
34+
- `github <https://github.com/ezmsg-org/ezmsg-baseproc>`_
35+
* - `ezmsg-blackrock <https://pypi.org/project/ezmsg-blackrock/>`_
36+
- Interface for Blackrock Cerebus ecosystem (incl. Neuroport) using pycbsdk
37+
- `docs <https://www.ezmsg.org/ezmsg-blackrock/>`_
38+
- `github <https://github.com/ezmsg-org/ezmsg-blackrock>`_
39+
* - `ezmsg-event <https://pypi.org/project/ezmsg-event/>`_
40+
- Discrete signal events like neural spikes, heartbeats, and triggers
41+
- `docs <https://www.ezmsg.org/ezmsg-event/>`_
42+
- `github <https://github.com/ezmsg-org/ezmsg-event>`_
43+
* - `ezmsg-learn <https://pypi.org/project/ezmsg-learn/>`_
44+
- Machine learning modules for streaming signal processing
45+
- `docs <https://www.ezmsg.org/ezmsg-learn/>`_
46+
- `github <https://github.com/ezmsg-org/ezmsg-learn>`_
47+
* - `ezmsg-lsl <https://pypi.org/project/ezmsg-lsl/>`_
48+
- Lab Streaming Layer (LSL) inlet and outlet units
49+
- `docs <https://www.ezmsg.org/ezmsg-lsl/>`_
50+
- `github <https://github.com/ezmsg-org/ezmsg-lsl>`_
51+
* - `ezmsg-neo <https://pypi.org/project/ezmsg-neo/>`_
52+
- Load and stream data from Neo-supported file formats (Blackrock, BrainVision, etc.)
53+
- `docs <https://www.ezmsg.org/ezmsg-neo/>`_
54+
- `github <https://github.com/ezmsg-org/ezmsg-neo>`_
55+
* - `ezmsg-panel <https://pypi.org/project/ezmsg-panel/>`_
56+
- Real-time plotting and dashboards using Panel/HoloViz
57+
- `docs <https://www.ezmsg.org/ezmsg-panel/>`_
58+
- `github <https://github.com/ezmsg-org/ezmsg-panel>`_
59+
* - `ezmsg-redis <https://pypi.org/project/ezmsg-redis/>`_
60+
- Redis pub/sub units for distributed messaging
61+
- `docs <https://www.ezmsg.org/ezmsg-redis/>`_
62+
- `github <https://github.com/ezmsg-org/ezmsg-redis>`_
63+
* - `ezmsg-sigproc <https://pypi.org/project/ezmsg-sigproc/>`_
64+
- Timeseries signal processing: filtering, spectral analysis, resampling, and more
65+
- `docs <https://www.ezmsg.org/ezmsg-sigproc/>`_
66+
- `github <https://github.com/ezmsg-org/ezmsg-sigproc>`_
67+
* - `ezmsg-simbiophys <https://pypi.org/project/ezmsg-simbiophys/>`_
68+
- Simulated biophysical signals: oscillators, noise generators, synthetic EEG
69+
- `docs <https://www.ezmsg.org/ezmsg-simbiophys/>`_
70+
- `github <https://github.com/ezmsg-org/ezmsg-simbiophys>`_
71+
* - `ezmsg-tools <https://pypi.org/project/ezmsg-tools/>`_
72+
- Visualization and debugging tools for running ezmsg graphs
73+
- `docs <https://www.ezmsg.org/ezmsg-tools/>`_
74+
- `github <https://github.com/ezmsg-org/ezmsg-tools>`_
75+
* - `ezmsg-websocket <https://pypi.org/project/ezmsg-websocket/>`_
76+
- WebSocket server and client units for web integration
77+
- `docs <https://www.ezmsg.org/ezmsg-websocket/>`_
78+
- `github <https://github.com/ezmsg-org/ezmsg-websocket>`_
79+
* - `ezmsg-xdf <https://pypi.org/project/ezmsg-xdf/>`_
80+
- XDF (Extensible Data Format) file reading and writing
81+
- `docs <https://www.ezmsg.org/ezmsg-xdf/>`_
82+
- `github <https://github.com/ezmsg-org/ezmsg-xdf>`_
83+
* - `ezmsg-zmq <https://pypi.org/project/ezmsg-zmq/>`_
84+
- ZeroMQ pub/sub units for distributed messaging
85+
- `docs <https://www.ezmsg.org/ezmsg-zmq/>`_
86+
- `github <https://github.com/ezmsg-org/ezmsg-zmq>`_
87+
88+
|ezmsg_logo_small| Community Extensions
89+
***************************************
90+
91+
These extensions are maintained by community members:
92+
93+
- `ezmsg-unicorn <https://github.com/griffinmilsap/ezmsg-unicorn>`_ -- g.tec Unicorn Hybrid Black integration
94+
- `ezmsg-gadget <https://github.com/griffinmilsap/ezmsg-gadget>`_ -- USB-gadget with HID control for Raspberry Pi (Zero/W/2W, 4, CM4)
95+
- `ezmsg-openbci <https://github.com/griffinmilsap/ezmsg-openbci>`_ -- OpenBCI Cyton serial interface
96+
- `ezmsg-ssvep <https://github.com/griffinmilsap/ezmsg-ssvep>`_ -- Tools for running SSVEP experiments
97+
- `ezmsg-vispy <https://github.com/pperanich/ezmsg-vispy>`_ -- Visualization toolkit using PyQt6 and VisPy
6398

6499
.. note::
65-
Additional extensions are being documented and their API references will be added here as they become available.
100+
Want to create your own extension? Use the `ezmsg-template <https://github.com/ezmsg-org/ezmsg-template>`_ repository as a starting point.
66101

67102
.. |ezmsg_logo_small| image:: ../_static/_images/ezmsg_logo.png
68103
:width: 40

docs/source/index.rst

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,36 @@ These are a few high-level topics to help you learn more about ezmsg and the ezm
108108
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.
109109

110110

111+
|ezmsg_logo_small| Extensions
112+
***************************************
113+
114+
ezmsg has a rich ecosystem of extensions for signal processing, machine learning, data acquisition, and more.
115+
116+
.. grid:: 2
117+
:gutter: 3
118+
119+
.. grid-item-card:: Signal Processing
120+
:link: https://www.ezmsg.org/ezmsg-sigproc/
121+
122+
**ezmsg-sigproc** - Filtering, spectral analysis, resampling, and more for timeseries data.
123+
124+
.. grid-item-card:: Machine Learning
125+
:link: https://www.ezmsg.org/ezmsg-learn/
126+
127+
**ezmsg-learn** - Online/streaming ML with dimensionality reduction, linear models, and neural networks.
128+
129+
.. grid-item-card:: Lab Streaming Layer
130+
:link: https://www.ezmsg.org/ezmsg-lsl/
131+
132+
**ezmsg-lsl** - Connect to LSL streams for real-time data acquisition and synchronization.
133+
134+
.. grid-item-card:: Signal Events
135+
:link: https://www.ezmsg.org/ezmsg-event/
136+
137+
**ezmsg-event** - Handle discrete events like neural spikes, heartbeats, and triggers.
138+
139+
See :doc:`Extensions <extensions/content-extensions>` for the complete list including hardware integrations (Blackrock, OpenBCI, g.tec), visualization tools, and communication protocols.
140+
111141
|ezmsg_logo_small| Table of Contents
112142
***************************************
113143

@@ -118,11 +148,11 @@ Below is a breakdown of all the documentation available on this site.
118148
:titlesonly:
119149

120150
Tutorial <tutorials/content-tutorials>
121-
What is ezmsg? <explanations/content-explanations>
122151
How To <how-tos/content-howtos>
152+
Extensions <extensions/content-extensions>
123153
Reference <reference/content-reference>
154+
What is ezmsg? <explanations/content-explanations>
124155
Developer <developer/content-developer>
125-
Extensions <extensions/content-extensions>
126156
Release Notes <release>
127157

128158

@@ -132,7 +162,7 @@ Below is a breakdown of all the documentation available on this site.
132162
Financial Support
133163
==========================
134164

135-
`ezmsg` is supported by Johns Hopkins University (JHU), the JHU Applied Physics Laboratory (APL), and by the Wyss Center for Bio and Neuro Engineering.
165+
`ezmsg` is supported by Johns Hopkins University (JHU), the JHU Applied Physics Laboratory (APL), the Wyss Center for Bio and Neuro Engineering, and Blackrock Neurotech.
136166

137167
In Media
138168
=========

0 commit comments

Comments
 (0)