This is an Open Ephys GUI plugin that streams incoming continuous data with very low latency. It is optimized for use with Falcon, Linux-based real-time analysis software maintained by the Kloosterman Lab at NERF. However, because it uses a general-purpose data packaging format (based on ZeroMQ and Flatbuffers), it can be used to create advanced visualization and monitoring add-ons in almost any programming language.
This plugin can be added via the Open Ephys GUI's built-in Plugin Installer. Press ctrl-P or ⌘P to open the Plugin Installer, browse to the "Falcon I/O", and click the "Install" button. The Falcon Output should now be available to use.
- ZMQ lib - shared lib for windows, linux, and mac already included for the plugin
- Flatbuffer lib - build at built time (via cmake FetchContent)
- ZMQ communication as Subscriber (no source id)
- copy the schema fbs to decode the Flatbuffer packet
For more details, look in the client
folder in the repository
Two points can be optimized here to reduce the streaming latency (known as "fast and small").
This benchmark has been done by measuring, for different frequencies set in Open Ephys GUI, the time to encode the package and sent it.
In terms of size, the Flatbuffer packaging is always adding exactly 64 bits to the raw data.
This plugin has been originally developed to stream Neuropixels data with low latency from Open-Ephys to Falcon. Falcon is a software used for low-latency real-time processing such as ripple detection and decoding.
To run the latency tests, a sinusoidal signal was generated in the saline liquid. All 384 channels + the digital signal were streamed by Open Ephys. In falcon, a simple threshold applied on one of the channel was used to generate events transferred by an Arduino as a square signal in the digital input of the Neuropixels.
The round-trip latency was measured by comparing the Neuropixels digital input (rising edge of the square wave signal) recorded in Falcon with the timestamps of events generated by the Falcon threshold crossing node.
- Median delay: 9.241 ms
- Standard deviation: 1.302 ms