Add-on Development¶
You can extend Ephyr with custom Transformation, Viewable, and/or Runnable add-ons.
Generate a template from the GUI¶
- Open Ephyr.
- Choose Add-ons → Create.
- Fill in project metadata (
name,description, authors) and capability flags (viewable,transformation,runnable). - Click Generate template.
Ephyr writes a scaffold under the current working directory:
add_on_development/
├── README.md
├── pyproject.toml
└── ephyr_add_ons/
└── <project_name>/
├── __init__.py
└── entry_point.py
Implement your logic in entry_point.py (a subclass of BaseAddOn). Metadata and the
ephyr.add_ons entry point are declared in pyproject.toml.
How development add-ons are loaded¶
On startup (and when the runtime add-on list is refreshed), Ephyr:
- Loads installed packages via the
ephyr.add_onsentry-point group. - Loads development modules from
./add_on_developmentif that folder exists:- top-level
*.pyfiles appear asdev_<stem> - packages under
ephyr_add_ons/<name>/(includingentry_point.pyand nested modules) appear asdev_*entries
- top-level
Development add-ons show up in the Add-ons side panel under the development group. You can enable View / Transform and press Run the same way as for installed packages. No separate install step is required while iterating locally.
Learn from existing add-ons¶
Study published packages in the official repository (also checked out as the devtools/ephyr-add-ons submodule):
https://github.com/Molecular-Neural-Interfaces/ephyr-add-ons
Reference implementations include:
- Spike utils — detection, viewer, navigation, aligned waveforms, raster
- Labeling utils — events detection
- Signal utils — preprocessing comparison, PSD, spectrogram
- LFP utils — current-source density (CSD) visualization
Use those packages together with the generated template as a starting point for your own tools.
Related tools¶
Add-ons → Generate script creates a Python script that loads a Ephyr folder and session through
EphyrSessionManager. That path is aimed at post-annotation analysis rather than GUI add-ons; see
Analysis.