Skip to content

Releases: open-ephys/plugin-GUI

v0.6.7

01 Mar 20:13
Compare
Choose a tag to compare

Binary release March 1, 2024

Release Notes

Record Node

  • Fix Record Node base path logic. Previously, the Record Node base path did not actually change if it was updated during acquisition. Now, the path is updated, and the next experiment/recording counter is maintained, unless the “Create New Directory” button is selected in the Control Panel.
  • Fix Record Node disk space check. Previously, this check did not always consider the currently set path in the Record Node due to the issue mentioned above.
  • Fix Record Node path tooltip not updating when path loaded from saved configuration.
  • Fix Record Node Editor UI elements enabled during recording that shouldn't be (though this did not affect actual recordings).
  • Fix File Reader crash when loading events if a File Source does not support text events.

Plugin Installer

  • Platform-specific bug fixes:
    • On Windows, an issue that caused crashes or displayed garbage strings in the Processor List during plugin updates has been resolved.
    • On MacOS, fixed a bug where it would incorrectly show that the plugin has updated successfully even when it did not.

Editor Viewport

  • Improved Editor Selection Behavior. Multiple editor selections in the Editor Viewport now work correctly when using “Shift + Right/Left Arrow” keys.
  • The plugin version is now shown in the plugin editor’s right-click popup menu.

v0.6.6

16 Aug 23:54
Compare
Choose a tag to compare

Binary release August 16, 2023

Release Notes

Core application

  • The software now checks for more recent versions upon launch; if an update it available, the user has the option to download the latest version (and install it automatically if on Windows). This can also be done manually via Help > Check for updates.
  • Remove popup warning when loading configs saved by GUI version 0.6.0 and higher, since these should always be compatible with more recent versions
  • Remove popup warning when plugin updates are available, since this can easily be seen via the green arrow icons
  • Fix bug where main window is located off screen when a monitor has been removed since the last run

Record Node

  • Fix bug where recording is stopped when disk space becomes negative (due to float to int conversion)
  • Allow recorded channels to be selected/deselected via config messages (e.g., SELECT <stream_index> ALL)

LFP Viewer

  • Remove timebases lower than 50 ms, since these were causing lags in some configurations
  • Fix bug where channels become out of sync when switching away from very small timebases or changing the size of the display

Arduino Output

  • Fix bug where disabling the gate line doesn't actually turn it off

v0.6.5

22 May 21:45
Compare
Choose a tag to compare

Binary release May 22, 2023

Release Notes

Updates & Bug Fixes:

  • Add default configuration for acquisition boards with custom Open Ephys FPGA
  • When selecting the default Acquisition Board configuration, prompt the user to select which type of FPGA is present on their board in order to ensure the correct plugin is installed
  • Prevent the Arduino Output plugin from re-initializing when it's placed downstream from a Merger

v0.6.4

13 Mar 20:03
Compare
Choose a tag to compare

Binary release March 13, 2023

Release Notes

New features

  • Backwards scrolling in LFP Viewer. If a display is paused, you can now scroll backwards in time up to 3x the width of the visualizer, without changing the timebase. Simply click and drag the timescale to move forwards and backwards in time, or use the scroll wheel while the mouse is hovered over the timescale.
  • Alternative clock display: right-click on the clock to change the display mode to HH:MM:SS
  • Signal chain locking: under the "edit" menu, you can now lock the signal chain to prevent adding, moving, or deleting processors.
  • Display currently installed version for each plugin in the Plugin Installer
  • Enable sending config messages to individual plugins while acquisition is active. Plugins are now responsible for ignoring any messages that cannot be handled during acquisition.

Bug fixes

  • Fix data viewport tabs re-loading in the wrong order, or loading a blank tab
  • Fix crash when Audio Monitor has a channel selected, but receives no input channels
  • Channel selection parameter editors now retain the correct channel count after the input streams are updated
  • Prevent saving invalid XML files (affected signal chains that used early versions of the Rhythm ONI Plugin)
  • Re-enable the refreshState() method for visualizers (called whenever a visualizer's tab becomes visible again)
  • All Spike Viewer settings are correctly re-loaded on re-launch or after deleting an upstream source
  • Fix undo operation when a processor is moved out of the signal chain

v0.6.3

12 Nov 00:54
Compare
Choose a tag to compare

Binary release November 11, 2022

Release Notes

Bug Fixes & Updates:

HTTP Server:

  • Remotely add processors via /api/processors/add
  • Remotely delete processors via /api/processors/delete
  • Query available processors via /api/processors/list

Record Node

  • Calculate the average data rate, and use this to estimate the time left in the recording (displayed when hovering over the buffer monitor)
  • Automatically stop recording when less than 5 minutes of space is available

Channel Map

  • Ensure settings persist when input is deleted or sample rate is changed

File Reader

  • Add backwards compatibility with Binary format recordings from GUI v0.5.x
  • Improve performance of file scrubber for browsing data files >30 s long

LFP Viewer

  • Prevent crash when deleting input while channels are sorted by depth

v0.6.2

21 Sep 19:22
Compare
Choose a tag to compare

Binary release September 21, 2022

Release Notes

Bug Fixes & Updates:

  • Fix UP/DOWN keypress inside Editor Viewport causing crash when last selected editor is null
  • Fix crash in plugins with ComboBox parameter editor when a plugin preceding it is deleted
  • Bring visualizer window to front when editor is selected
  • Update Windows installer to streamline Microsoft Visual C++ Redistributable installation process

v0.6.1

19 Aug 05:08
Compare
Choose a tag to compare

Binary release August 18, 2022

Release Notes

Bug Fixes:

  • Use viewport to display Spike Detector table (fixes #519)
  • Make sure correct Record Node is checked when requesting its synchronization status
  • Use original stream name when creating streams in File Reader

v0.6.0

22 Jul 22:24
Compare
Choose a tag to compare

Binary release July 22, 2022

Release Notes

Overview

Version 0.6.0 includes a large number of updates intended to improve the experience of both users and developers of the Open Ephys GUI. Many of the changes were prompted by the need to provide more robust support for data sources that send multiple asynchronous streams (such as Neuropixels). Perhaps the most important update is the introduction of the DataStream class, which represents a group of channels that are guaranteed to generate the same number of samples on each processing block. Every continuous channel, event channel, and spike channel must be associated with one and only one DataStream object, in order to ensure that its timestamps can be assigned accurately. Users will notice that the old "Channel Selector" on the right-hand side of each plugin editor has been replaced with a "Stream Selector," which allows you to view information about the various streams that are passing through a plugin. Plugin parameters are now typically applied on a per-stream basis, and any channel-specific parameters are configured via a popup window that's much easier to navigate than the previous Channel Selector UI.

060_release_notes-01

These updates would not have been possible without introducing breaking changes to the Open Ephys Plugin API (now at version 8). Any existing plugins will need to be refactored and recompiled in order to be loaded by the host application. We worked hard to make the API simpler and more consistent, and many convenience functions were added to simplify plugin development. Most importantly, we overhauled the Parameter class, in order to make it possible to generate user interfaces for new plugins with only a few lines of code. For example, see the FilterEditor.cpp file before and after implementing these changes. The Parameter class also keeps track of settings across data streams, and automatically handles saving and loading.

Almost every source code file has been cleaned up, with docstrings added to most header files and unused functions removed. We also streamlined the user interface, removing unnecessary buttons and menu items. We reduced the default plugins down to the essentials, and moved other plugins to their own repositories. This will allow users to upgrade these plugins independently from the main GUI, making it easier to roll out new features in the future.

Core GUI enhancements

Data streams as first-class citizens: Previously, sources that emitted data as multiple, asynchronous streams (such as Neuropixels) were represented as "subprocessors" with zero-based indexing. However, the channels associated with a given subprocessor were not readily visible to the user. Now, the subprocessor concept has been replaced by "Data Streams" that represent a block of continuous channels that are guaranteed to generate the same number of samples on each processing callback. When using data sources that only generate one stream (such as the File Reader), the behavior of the GUI will be largely unchanged. But when multiple streams are present (such as the AP band and LFP band of Neuropixels probes), independent settings can be applied to each stream. For example, it's now straightforward to have unique Bandpass Filter settings for different streams, or even to have the Bandpass Filter plugin bypass a given stream entirely to conserve CPU. Grouping channels by streams also prevents the user from, e.g., creating electrode groups for spike detection that span multiple streams, which would generate invalid spikes. Information about individual streams is now visible in the redesigned "Graph" tab, as well as the Stream Selector interface for each plugin (viewed by clicking the vertical lines on the right of the plugin editor). The visible settings for a given plugin will reflect the stream that's currently active in the Stream Selector. In addition, the Stream Selector displays the amount of time it takes for data to pass through a plugin (helpful for determining which plugins are introducing unwanted processing latency), as well as the state of the first 10 TTL lines for a given stream.

Overhauled Parameter class: The GUI previously had a class to represent different types of plugin parameters, but this was not being used by most plugins. We have now revived this class, and made it a central part of all of the built-in plugins. The Parameter class now serves three main functions: auto-generating user interfaces, keeping track of parameter values across data streams, and automatically saving and loading settings for each plugin. There are 7 types of Parameters (boolean, categorical, string, float, integer, selected channels, and mask channels) and 5 types of Parameter Editors (text box, check box, combo box, slider, selected channels, and mask channels). Parameters can be applied to plugins (global scope), data streams (stream scope), or individual channels (event channel scope, continuous channel scope, and spike channel scope). Parameters must be declared in the plugin's GenericProcessor constructor, and any ParameterEditors must be declared in the plugin's GenericEditor constructor. Parameter names must avoid spaces in order to allow saving/loading via XML. See the FilterNode for an example of how to use the Parameter class in practice.

Broadcast messages: Plugins can now communicate with one another via broadcast messages. A broadcast message sent while acquisition is active will be distributed to all other plugins in the signal chain via the MessageCenter. This allows messages to be passed "backwards" through the signal chain, for example to trigger the digital outputs of the Open Ephys acquisition board. To send a broadcast message, simply call GenericProcessor::broadcastMessage() while acquisition is active. To respond to broadcast messages, plugins should implement the GenericProcessor::handleBroadcastMessage() method. Broadcast messages are currently used by the Acquisition Board plugin (formerly Rhythm FPGA) to trigger digital outputs and the Audio Monitor plugin to select channels to listen to. Additional functionality based on broadcast messages will be added in the future.

Built-in HTTP server: The GUI no longer requires the Network Events plugin to be controlled remotely; instead, it now launches an HTTP server based on a class originally implemented by Paul Botros from the Carmena Lab at Berkeley. The HTTP server makes it possible to start/stop acquisition, configure plugins parameters, transmit broadcast messages through the signal chain, and even close the GUI remotely. When the GUI is open, browsing to http://localhost:37497/api/processors will display the current signal chain in JSON format. Changes to the GUI's status are done via HTTP "PUT" requests, and can be accomplished with a single line of code using Python's requests library.

Streamlined settings files: The XML files used for saving and loading signal chains are much more compact and easier to interpret. However, we still do not recommend attempting to manually edit settings files, as this can invalidate them.

Redesigned "Info" tab: The GUI's info tab now displays links to the documentation, citation information, a list of contributors, and the GPL 3.0 license.

info_tab

Audio Monitor: The "Audio" interface has been removed from individual plugins. Instead, Audio Monitors can be dropped into the signal chain as a separate plugin. Users can select up to 4 continuous channels to listen to, or select an incoming Spike Channel to monitor. The Audio Monitor includes a built-in high-pass filter so it can output decent-sounding signals at almost any point in the signal chain.

audio_monitor

Default configurations: When the GUI is launched for the first time, the user is prompted to select one of 3 default configurations: Acquisition Board, File Reader, or Neuropixels (Windows only). If a plugin required for one of these configurations is not available, it will be installed automatically (this only works in "Release" mode). On subsequent runs, the default configuration interface can be accessed via the File menu.

Default_configs

Recording: Added the ability to customize the name of recording directory via the control panel (i.e., you don't need to use the auto-generated date string if you don't want to).

Recording directory customization

Logging: Replaced all calls to std::cout with LOGA, LOGB, LOGC, etc. syntax. This makes it easier to track different kinds of messages and have more refined control over what gets printed to the console. All logging output is printed to a text file, which is copied and timestamped in the case of a crash.

Updated JUCE backend: The GUI now uses a more recent version of the JUCE library (v6).

Updates to Individual Plugins

File Reader: The File Re...

Read more

v0.5.5.4

02 May 21:54
Compare
Choose a tag to compare

Binary release May 2, 2022

Release Notes

Bug Fixes:

  • Fix dropped events on Linux for high TTL event rates by increasing event and spike buffer sizes in Record Node (fixes #506)
  • Fix processor graph connection sequence causing crashes (#504)
  • Fix hidden channel info when using 64-channel headstages with the Rhythm FPGA module.

v0.5.5.3

05 Nov 00:42
Compare
Choose a tag to compare

Binary release November 4, 2021

Release Notes

Bug Fixes:

  • Fix SpikeViewer unable to draw spikes when using tetrodes (closes #483)
  • Fix inconsistent file prefix when using openephys recording format (closes #477)