From df84c1d22063aec63218b940ebe7a615a90291dc Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Mon, 23 Mar 2026 11:10:07 +0100 Subject: [PATCH 1/4] Prepare 0.13.0 release --- docs/source/index.rst | 1 + docs/source/release_notes.rst | 324 ++++++++++++++++++++++++++++++++++ pyproject.toml | 5 +- 3 files changed, 328 insertions(+), 2 deletions(-) create mode 100644 docs/source/release_notes.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index 8d745dd8..d5dd30fd 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -56,3 +56,4 @@ This is a web app internally using Panel, useful when the data is remote views developers credits + release_notes diff --git a/docs/source/release_notes.rst b/docs/source/release_notes.rst new file mode 100644 index 00000000..0756dfab --- /dev/null +++ b/docs/source/release_notes.rst @@ -0,0 +1,324 @@ +.. _release_notes: + +Release Notes +============= + +.. _release0.13.0: + +0.13.0 +------ + +*Release date: March 23rd, 2026* + +New views +~~~~~~~~~ + +* **EventView** (PR #218): new view showing aligned spike rasters and PSTHs around events; events can be passed to ``run_mainwindow`` as a plain dict or as a ``spikeinterface.BaseEvent`` object +* **AmplitudeScalingsView** (PR #230): new view showing amplitude scaling factors +* **MainChannelTemplate view** (PR #233): shows the main channel waveform template + +Curation +~~~~~~~~ + +* Renamed ``CurationModel`` to ``Curation`` to align with the updated SpikeInterface API (PR #252) +* Added ``curation_callback`` and ``set_external_curation`` for programmatic curation control (PR #241) +* Validate curation data and support curation format v1/v2 (PR #211) +* Remove default ``num_chan`` (sparsity) column from unit list; add a "clear" label shortcut (PR #244) +* Fixed ``include_deleted`` behavior and unit order in merge list (PR #245) +* Added "remove from merge list" to unit list right-click context menu (PR #232) + +Trace and scatter views +~~~~~~~~~~~~~~~~~~~~~~~ + +* **Valid periods regions in scatter plots** (PR #254): shaded valid-period regions on scatter views (e.g. amplitude, ISI); can be disabled in settings +* **Event navigation in Trace/TraceMap views** (PR #218): previous/next event buttons with event-type selector; event overlays on trace and trace map views +* Fixed binning and limits in ``basescatterview`` (PRs #235, #246) +* Fixed ``tracemapview`` for multi-shank probes (PR #248) +* Selectively update y-range only when unit or time changes (PR #248) + +UX improvements +~~~~~~~~~~~~~~~ + +* **Focus mode** (PR #227): toggle to focus the display on a single unit +* **Waveform display mode** is now a persistent setting (PR #238) +* ``user_main_settings`` parameter exposed so callers can pre-configure GUI settings programmatically (PR #243) +* Fixed relative spike rate plot (PR #212) +* Allow ``nan`` metric values in MetricsView (PR #217) +* Make ``template_metrics`` dependency optional (PR #247) + +Backend and architecture +~~~~~~~~~~~~~~~~~~~~~~~~ + +* **Plugin architecture** (PR #219): full plugin system with ``get_all_possible_views()``; plugin documentation page added +* ``skip_extensions`` parameter now passed through to the CLI entry point (PR #216) +* Allow remote S3 paths for loading (PR #214) +* ``external_data`` support in controller: pass arbitrary external data into the GUI (PR #231) +* Panel backend: multi-thread/multi-process server support (PR #240); fix color-by-visibility (PR #250) +* Removed pandas dependency +* Renamed ``crosscorrelogramview`` → ``correlogramview`` +* Added codespell CI workflow (PR #215) + + +.. _release0.12.0: + +0.12.0 +------ + +*Release date: November 13, 2025* + +New views +~~~~~~~~~ + +* **Unit splitting**: full splitting workflow in ``ScatterViews``, ``CurationView``, and ``CorrelogramsView``; lasso-select spikes, confirm or get notified on failure +* **Metrics view**: new view displaying quality/template metrics for selected units (Qt and Panel backends) +* **Binned spikes view**: new ``BinnedSpikesView`` showing spike rate over time + +Curation +~~~~~~~~ + +* **Curation format v2**: updated curation format with validation; raises error on invalid curation dict +* **Auto-merge presets**: added SpikeInterface automerge presets including ``similarity`` +* **Curation file CLI arg**: load a pre-existing curation file with ``--curation-file`` +* **Exit dialog**: warning shown if the user has unsaved curation when closing + +UX improvements +~~~~~~~~~~~~~~~ + +* **User settings**: save and restore default settings via a config folder +* **Waveform improvements**: option to plot sample waveforms; x/y scalebars; improved geometry mode with ``allow_long_zone``; separate auto-move and auto-zoom settings +* **Custom layout**: JSON layout support via ``--layout`` CLI argument; refactored greedy layout algorithm +* **Busy indicator**: context manager for busy indicator during long operations (traces, merges, compute) +* **Recording times**: ``main_setting`` option to use recording times + +Backend and architecture +~~~~~~~~~~~~~~~~~~~~~~~~ + +* **Only load required extensions**: skip analyzer extensions not needed by the displayed views +* **Performance (Panel/web)**: caching correlograms, pre-initializing probe view ranges, faster unit list refresh, skip unrequested views +* **ReadTheDocs**: added full documentation deployment + +Bug fixes +~~~~~~~~~ + +* ``nanmin``/``nanmax`` for spike location extrema; channel ordering in probe map; lasso selection and split shortcut; noise levels when analyzer has no noise; spike rate for short recordings; ``return_scaled`` → ``return_in_uV`` API change + + +.. _release0.11.0: + +0.11.0 +------ + +*Release date: June 25, 2025* + +Backend and architecture +~~~~~~~~~~~~~~~~~~~~~~~~ + +* **Dual-backend architecture**: major refactoring to support both a Qt desktop backend and a Panel/Bokeh web backend from the same codebase +* **Launcher**: GUI launcher for desktop (Qt) and web (Panel) modes; supports ``analyzer_folders`` dict; prints server address +* **Layout presets**: 8-zone layout system with configurable presets; GridStack for web layout + +UX improvements +~~~~~~~~~~~~~~~ + +* **Color modes**: configurable color mode in main settings +* **Waveform overlap**: show overlapping waveforms with ``Ctrl+O``; ``Alt+Scroll`` to widen narrow waveforms +* **Exclude deleted units from merge view**: option to hide already-deleted units in ``MergeView`` +* **Probe view**: better automatic ROI when multiple units are selected +* **``with_traces=False``**: option to not show traces in the main window + +Performance and bug fixes +~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Faster waveform loading; faster spike amplitude and correlograms; export curation to download JSON +* Manual unit label fix; ``time_info_updated`` signal to avoid recursive calls + + +.. _release0.10.0: + +0.10.0 +------ + +*Release date: February 12, 2025* + +* **Lasso selection in spike amplitude view**: visually select spikes with a lasso tool; enable/disable lasso button +* **``--recording`` CLI option**: pass a recording path from the command line +* **``--recording-base-folder`` option**: flexible recording path resolution +* **Unit list improvements**: column drag-and-drop reordering; fix string column sorting +* **``compute_merge_unit_groups``**: now uses the function directly from SpikeInterface +* **Improved unit tables**: better column display + + +.. _release0.9.1: + +0.9.1 +----- + +*Release date: October 9, 2024* + +* **ProbeGroup support**: handle multi-shank probes via ``ProbeGroup`` +* **Probe view**: second ROI with ``Ctrl``-click to add ROI for units +* **Similarity view**: ``Ctrl``-click for append mode +* **``--no-traces`` CLI option**: start the GUI without loading traces; small trace cache added +* **Python version**: updated support for Python 3.9+ and 3.11 +* **Bug fixes**: spike list and visible spikes; documentation updates + + +.. _release0.9.0: + +0.9.0 +----- + +*Release date: July 19, 2024* + +New views +~~~~~~~~~ + +* **TraceMapView**: new view showing a heatmap of traces on the probe +* **``WaveformHeatMapView`` made optional**: avoid accidentally triggering expensive recomputation + +Curation +~~~~~~~~ + +* **Curation GUI**: full curation interface with merge, delete, label operations, keyboard shortcuts (``d`` delete, ``Space`` toggle visibility, ``m`` merge), and curation export aligned with SpikeInterface curation format +* **Sortable unit and pair lists**: click column headers to sort; pair list shows merge candidates +* **Proposed merges**: compute and propose merge groups based on multiple methods/criteria + +Backend and architecture +~~~~~~~~~~~~~~~~~~~~~~~~ + +* **SortingAnalyzer support**: complete refactor to use the new ``SortingAnalyzer`` API from SpikeInterface (replaces ``WaveformExtractor``) +* **View dependency on extensions**: views only shown/enabled if the required analyzer extension is computed +* **``noise_levels`` optional**: noise display on spike amplitude view is optional if not computed + + +.. _release0.8.0: + +0.8.0 +----- + +*Release date: March 12, 2024* + +* API compatibility update: ``sample_ind`` → ``sample_index`` +* Minor fixes and README/documentation improvements + + +.. _release0.7.0: + +0.7.0 +----- + +*Release date: July 7, 2023* + +* Requires SpikeInterface >= 0.98 +* **Improved channel visibility on unit selection** +* **More intuitive channel ordering** when using ROI in probe view +* Removed auto channel visibility triggered by spike list selection +* API update: ``sample_ind`` → ``sample_index`` +* Documentation improvements + + +.. _release0.6.0: + +0.6.0 +----- + +*Release date: February 10, 2023* + +* **Sparsity from WaveformExtractor**: use sparsity defined in the waveform extractor when available +* Performance optimizations at startup + + +.. _release0.5.1: + +0.5.1 +----- + +*Release date: October 21, 2022* + +* Migrated packaging from ``setup.py`` to ``pyproject.toml`` +* Anticipate upcoming SpikeInterface API changes +* Small bug fixes + + +.. _release0.5.0: + +0.5.0 +----- + +*Release date: September 2, 2022* + +* **Compatibility with SpikeInterface 0.95.0**: updates for the SI master refactor +* **Speed improvements**: faster startup and faster multi-unit selection +* Correlogram: ``symmetrize=True`` by default +* Background color change and small fixes + + +.. _release0.4.1: + +0.4.1 +----- + +*Release date: April 15, 2022* + +* API fix: ``localize_unit`` → ``localize_units`` +* Bug fix: ``QColor`` cast issue + + +.. _release0.4.0: + +0.4.0 +----- + +*Release date: February 4, 2022* + +New views +~~~~~~~~~ + +* **Spike amplitude view**: new view showing spike amplitudes over time with amplitude histogram +* **Metrics in unit list**: quality/template metrics displayed as columns in the unit list + +Bug fixes +~~~~~~~~~ + +* Switched to ``localize_units`` from SpikeInterface +* Fixed label order in trace view +* Avoid refreshing channel visibility on spike select +* Various small fixes + + +.. _release0.3.0: + +0.3.0 +----- + +*Release date: October 12, 2021* + +* **Speed improvements**: removed internal spike ``selected``/``visible`` tracking for faster performance +* Improved waveform width handling +* Improved spike list view +* ProbeView bug fix: ``on_unit_visibility_changed`` +* Code cleanup + + +.. _release0.2.0: + +0.2.0 +----- + +*Release date: October 7, 2021* + +* **Compute button**: trigger waveform/extension computation from within the GUI +* **Help in dock title bar**: contextual help accessible from view title bars +* **Speed improvements**: startup speed and probe view refresh speed +* Configurable sparsity threshold +* Color and sparsity improvements + + +.. _release0.1.0: + +0.1.0 +----- + +*Release date: September 22, 2021* + +* Initial release diff --git a/pyproject.toml b/pyproject.toml index 3341ddad..24140b16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,13 @@ [project] name = "spikeinterface-gui" -version = '0.12.1' +version = '0.13.0' authors = [ { name="Samuel Garcia", email="sam.garcia.die@gmail.com" }, { name="Alessio Buccino", email="alessiop.buccino@gmail.com" }, + { name="Chris Halcrow", email="chalcrow@ed.ac.uk" }, ] -description = "Qt GUI for spikeinterface" +description = "GUI for SpikeInterface" readme = "README.md" requires-python = ">=3.10" classifiers = [ From 5f4696f5e0aeff55f116318d04862bf860cdf2b4 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Mon, 23 Mar 2026 11:16:23 +0100 Subject: [PATCH 2/4] fix formatting --- docs/source/release_notes.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/source/release_notes.rst b/docs/source/release_notes.rst index 0756dfab..c557a71c 100644 --- a/docs/source/release_notes.rst +++ b/docs/source/release_notes.rst @@ -124,7 +124,7 @@ UX improvements * **Waveform overlap**: show overlapping waveforms with ``Ctrl+O``; ``Alt+Scroll`` to widen narrow waveforms * **Exclude deleted units from merge view**: option to hide already-deleted units in ``MergeView`` * **Probe view**: better automatic ROI when multiple units are selected -* **``with_traces=False``**: option to not show traces in the main window +* ``with_traces=False`` **option**: option to not show traces in the main window Performance and bug fixes ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -141,10 +141,10 @@ Performance and bug fixes *Release date: February 12, 2025* * **Lasso selection in spike amplitude view**: visually select spikes with a lasso tool; enable/disable lasso button -* **``--recording`` CLI option**: pass a recording path from the command line -* **``--recording-base-folder`` option**: flexible recording path resolution +* ``--recording`` **CLI option**: pass a recording path from the command line +* ``--recording-base-folder`` **option**: flexible recording path resolution * **Unit list improvements**: column drag-and-drop reordering; fix string column sorting -* **``compute_merge_unit_groups``**: now uses the function directly from SpikeInterface +* ``compute_merge_unit_groups``: now uses the function directly from SpikeInterface * **Improved unit tables**: better column display @@ -158,7 +158,7 @@ Performance and bug fixes * **ProbeGroup support**: handle multi-shank probes via ``ProbeGroup`` * **Probe view**: second ROI with ``Ctrl``-click to add ROI for units * **Similarity view**: ``Ctrl``-click for append mode -* **``--no-traces`` CLI option**: start the GUI without loading traces; small trace cache added +* ``--no-traces`` **CLI option**: start the GUI without loading traces; small trace cache added * **Python version**: updated support for Python 3.9+ and 3.11 * **Bug fixes**: spike list and visible spikes; documentation updates @@ -174,7 +174,7 @@ New views ~~~~~~~~~ * **TraceMapView**: new view showing a heatmap of traces on the probe -* **``WaveformHeatMapView`` made optional**: avoid accidentally triggering expensive recomputation +* ``WaveformHeatMapView`` **made optional**: avoid accidentally triggering expensive recomputation Curation ~~~~~~~~ @@ -188,7 +188,7 @@ Backend and architecture * **SortingAnalyzer support**: complete refactor to use the new ``SortingAnalyzer`` API from SpikeInterface (replaces ``WaveformExtractor``) * **View dependency on extensions**: views only shown/enabled if the required analyzer extension is computed -* **``noise_levels`` optional**: noise display on spike amplitude view is optional if not computed +* ``noise_levels`` **optional**: noise display on spike amplitude view is optional if not computed .. _release0.8.0: From 705b08d49a52a3d4fef56441d39ef4c7748d5db1 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Mon, 23 Mar 2026 17:52:13 +0100 Subject: [PATCH 3/4] Apply suggestion from @alejoe91 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 24140b16..549c91d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ classifiers = [ ] dependencies = [ - "spikeinterface[full]>=0.103.0", + "spikeinterface[full]>=0.104.0", "markdown" ] From 6384fa26c148211102ac2a3686263929f1272f5e Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Mon, 23 Mar 2026 17:55:48 +0100 Subject: [PATCH 4/4] relax pyside and pyqtgraph dependencies --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 549c91d5..533b5166 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,7 @@ sigui = "spikeinterface_gui.main:run_mainwindow_cli" [project.optional-dependencies] desktop = [ - "PySide6==6.7.3", + "PySide6", "pyqtgraph", ] @@ -58,7 +58,7 @@ web = [ test = [ "pytest", - "PySide6==6.7.3", + "PySide6", ] docs = [