The aim of the plugin architecture is to ease the process of creating and sharing different tools between researchers. We thus encourage plugin developers to share their work with the community. We plan to create an easy to use tool to publish and find plugins but in the meanwhile, any developer can edit this page to add links to their source repositories and binary plugin distributions, if so they wish. If you're a developer, please feel free to add your plugins below.

In case of links to binary plugins, we advise to add a description stating which version of the GUI were they built for, so in case the API changes users can know which binary releases work with with versions.

Frame Grabber


Description: A simple video4linux2-based video frame grabber plugin. It retrieves frames from any device supported by v4l2 and displays them using opencv. Moreover, frames can be saved to disk (in jpg format) together with open-ephys hardware time stamps making it easy to synchronize frames and recorded data later on. Depending on your camera this approach should be useful for most (behavioral) tracking experiments. In case the experiment requires very precise time stamps, e.g., high-speed whisker tracking, it might be a good idea to use a camera that can send TTL pulses for each frame.

Source code: https://github.com/arnefmeyer/FrameGrabberPlugin


Dynamic Threshold for Spike Detection


Description: This is a modification of the standard SpikeDetector plugin where instead of using a fixed amplitude threshold, we compute a dynamic threshold as described by Quiroga et al.. The plugin remains compatible with the standard SpikeViewer plugin.

Source code: https://github.com/camigord/DynamicSpikeDetectorPlugin


Virtual Reference

Description: Implements a virtual reference matrix that is a bit more flexible than open-ephys' channel mapper.

Source code: https://github.com/arnefmeyer/VirtualReferencePlugin


Python Integration


Description: enables the insertion of Processor code written in Cython (compiled Python code) in the signal chain. The plugin can be written in essentially pure Python (all required Cython peculiarities are taken care of in the wrapper code). Basic GUI elements are provided to provide editing possibilities for a few parameters in an Editor sub window. These may be directly controlled from the Python interface and do not require any Python coding. Some examples of plugin code are provided for e.g. Sharp wave/ripple detection and suppression. 

NOTE: Currently the code is ported to Linux and MacOS. If somebody wishes to port it to Windows, please contact me (email address in my Github page) and I will give you all the necessary information. 

Source code: https://github.com/fpbattaglia/PythonPlugin 


ZeroMQ interface


Description: This plugin (a Filter) broadcasts all recorded data and events via a ZeroMQ protocol. External applications can register to the stream and receive all data. Applications can also introduce events in the Open Ephys recording. The Plugin keeps track of which applications are register to the stream and which one are still connected (via a heartbeat) mechanism. This plugin is meant to provide a way to extend the Open-Ephys interface with GUI elements (e.g. advanced online analysis/visualization) while not interfering with the signal chain. Because the application runs in a separate process, the use of libraries not compatible with the JUCE framework is possible. A crash of the extension will not jeopardize recording (but will be signaled by the plugin). 

NOTE: Currently the code is ported to Linux and MacOS. If somebody wishes to port it to Windows, please contact me (email address in my Github page) and I will give you all the necessary information. 

Source code: https://github.com/fpbattaglia/ZMQInterface 

Real-Time Statistics


Description: This module calculates real-time statistics from spike object timestamps for each sorted neuron. The plugin displays statistics and a histogram once user set requirement of time and number of spikes is met. Can be set to broadcast TTL events in response to an instantaneous firing rate being outside of a standard deviation (can be scaled with a factor) from the mean. Detailed documentation of use can be found with the source code. 

Source code: https://github.com/Claybarn/RT-Stat


pelletDispenser

Description: This module allows for an interface with an Arduino connected via USB to control the pellet dispenser featured on this site. In response to a TTL event, the Arduino will be triggered to dispense a sugar pellet. Both the sketch uploaded to the Arduino and the module can be found on the github page.

Source code: https://github.com/Claybarn/pelletDispenserOutput

Crossing Detector

    

Description: This module fires a TTL event when a specified input data channel crosses a specified threshold level or channel. The criteria for detection and the output are highly customizable. It does not modify the data channels. Each instance only processes one data channel, but multiple instances can be chained together or placed in parallel. See the README on GitHub for more details!

Source code: https://github.com/tne-lab/crossing-detector


Tracking Plugin


Description: This set of plugins allows to acquire, visualize, and react to real-time tracking data. The Tracking Port (Source) receives extarnal tracking data as OSC messages. The Tracking Visualizer (Sink) shows the path trajetroies for the selected tracking sources. The Tracking Stimulator (Filter) generates TTL trains (uniform or gaussian) when the animal is within the selected regions. On the GitHub page, you can also find Bonsai scripts to extract the animal position and send it to the Open Ephys GUI. See the Wiki on GitHub for more details!

Source code: https://github.com/CINPLA/tracking-plugins


Logic Gate 

Description: The Logic Gate module (Filter) allows to combine two TTL events in logic operators (AND, OR, XOR, DELAY).

Source code: https://github.com/CINPLA/logic-gate-plugin


Sync 

Description: The Sync module (Source) allows to generate TTL events on the selected channel by clicking a button. It can be directly connected to the Pulse Pal Output to use the TTL events to synchronize external hardware.

Source code: https://github.com/CINPLA/sync-plugin


Continuous Statistics

        

Description: Computes the exponentially weighted mean or standard deviation of incoming continuous data. Rate of decay can be controlled through the "time constant" setting.

Source code: https://github.com/tne-lab/continuous-stats

Sample Math

Description: Performs samplewise arithmetic operations on selected continuous channels:

Source code: https://github.com/tne-lab/sample-math

Multi-band Integrator

Description: The multi-band integrator plugin generates a power signal for complex waveforms.  Users can combine up to three different frequency bands and set high and low frequency cutoffs, gains, and averaging duration.  The output signal can be combined with the crossing detector plugin to trigger events in response to neural motifs with well-defined spectral properties. 

Source code: https://github.com/mich11/multi-band-integrator

Phase Calculator

Description: Continuously estimates the phase, magnitude or imaginary component of selected channels within a specified frequency range. Can also visualize the precise phase of an input at received event times (with a delay), in order to get feedback on closed-loop performance.

Reference: Blackwood, E., Lo, M., Widge, A. S. (2018). Continuous phase estimation for phase-locked neural stimulation using an autoregressive model for signal prediction. 40th International Conference of the IEEE Engineering in Medicine and Biology Society, in press.

Source code: https://github.com/tne-lab/phase-calculator

RCB Trigger

Description: Monitor TTL Events from digital inputs or from other Filters.  Event Trigger messages are sent to your RCB-W24A-LVDS WiFi module using HTTP Post.  Trigger will be reflected in the DSPW GUI as a digital input.

Currently compiled w/ VS2013 and working ok on Windows 10.

Source code: Soon.



IoT Events

OE IoT Events Filter

Description: Monitor TTL Events from digital inputs or from other Filters.  Send selected Event Trigger to either dweet.io or thingspace.io server.  User can then visualize Event in a FreeBoard Dashboard.  Event messages are sent using HTTP Post.

Currently compiled w/VS2013 and working ok on Windows 10.

Source code: Soon.

ICA (Independent Component Analysis)

 

Description: Run ICA on a set of data channels, visualize the decomposition matrices and the components themselves, and reject components from the output. Uses the same Infomax ICA algorithm from the Salk Institute as EEGLAB.

Source code: https://github.com/tne-lab/ica-plugin

Mean Spike Rate

Description: Estimate an exponentially-weighted recent spike rate over time and channels.

Source code: https://github.com/tne-lab/mean-spike-rate

Coherence & Spectrogram Viewer 

Description: Coherence & Spectrogram Viewer, is a plugin which can be used to analyze real time data. As the name suggest it serves two function.

1)Estimates coherence between two group of channels.

2) Plots spectrogram, specifically showing the plot of power vs frequency (Power over time is averaged).

Source code: https://github.com/tne-lab/Coherence-Spectrogram-Viewer

Neuralynx Input

Description: Source plugin that can stream data in real-time from Neuralynx systems into Open Ephys.

Source Code: https://github.com/tne-lab/neuralynx-plugin


LSL Inlet

Description: Source plugin that can stream data in real-time from an LSL EEG and Marker stream into Open Ephys.

Source Code: https://github.com/tne-lab/LSL-inlet