RV 2.0 is out! The code for RV was re-written entirely from scratch in order to massively improve performance as well as code readability.
Here are the most notable changes and new features on the frontend:
- We integrated the plotly-resampler library in order to dynamically resample the EEG traces based on the level of Zoom. The amount of points plotted per trace is initialized to the amount of pixels in width that is allocated to RV (i.e., the max amount of points that can be plotted at one given time). This number can be changed through the GUI, if desired (removing the number results in no resampling). As an example, 1000 points plotted per trace viewed in 10-second segments results in a sampling rate of 100 Hz. However, if the user zooms in on 1 second, 1000 plotted points results in a sampling rate of 1000 Hz. The upper bound of the dynamic sampling rate is equal to the actual sampling rate of the loaded EEG data.
- The GUI was reworked to contain more descriptive buttons (also replacing the "modebar" of previous versions) as well as to summarize all settings in the initial pop-up window. This also results in faster access to the scalp-topography graph depicting channel positions (if available). Furthermore, the file selection was changed to dropdown menus containing all files (with permitted file extensions) within pre-determined directories. These directories can be customized when running the run_RV.py script.
- The segment-slider and arrow buttons are now positioned below the EEG graph (originally positioned on top) and are integrated into a small graph providing a global overview over all annotations.
- After selecting a segment of data over which to compute a power spectrum, the user can now also choose to generate an animated topomap plot (depicting the amplitude topography) over the selected time interval.
Notable changes in the backend:
- Since most of the code was re-written from scratch, most things are implemented a bit differently now. Most notably, using the ServersideOutputTransform from the dash-extensions library, we were able to remove all global variables (which are instead stored in a server-side cache now). This means that an implementation of RV running on a web-server can now be facilitated.
- The code is much better documented and much more readable.
With this version, I (Robin Weiler) will be leaving the NOC group in which I developed RV for the past 3 years. I hope RV will provide value for many people to come. I will pass on the maintenance of RV to my colleagues and also invite the community to build on RV with their own features. Thank you to everyone who was a part of this journey!
Full Changelog: v1.3.5...v2.0.0