Skip to content

Commit 98d36ec

Browse files
authored
Prepare release v0.104.0 (#4459)
1 parent d8e9460 commit 98d36ec

File tree

6 files changed

+299
-23
lines changed

6 files changed

+299
-23
lines changed

doc/authors.rst

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,40 @@ Current core team
1212

1313
* `Alessio Paolo Buccino <https://github.com/alejoe91>`_ [1]
1414
* `Samuel Garcia <https://github.com/samuelgarcia>`_ [2]
15+
* `Chris Halcrow <https://github.com/chrishalcrow>`_ [3]
1516

16-
For any inquiries, please contact Alessio Buccino (alessiop.buccino@gmail.com) or Samuel Garcia
17-
(samuel.garcie.die@gmail.com), or just write an issue (preferred)!
17+
For any inquiries, please contact Alessio Buccino (alessiop.buccino@gmail.com), Samuel Garcia
18+
(samuel.garcie.die@gmail.com) or Chris Halcrow (chalcrow@ed.ac.uk), or just write an issue (preferred)!
1819

20+
Core maintainers
21+
----------------
22+
23+
The following people have made significant ongoing contributions towards SpikeInterface:
24+
25+
* `Zach McKenzie <https://github.com/zm711>`_ [4]
26+
* `Heberto Mayorquin <https://github.com/h-mayorquin>`_ [5]
27+
* `Pierre Yger <https://github.com/yger>`_ [6]
28+
* `Joe Ziminski <https://github.com/JoeZiminski>`_ [7]
1929

2030
Founding core team
2131
------------------
2232

2333
* `Alessio Paolo Buccino <https://github.com/alejoe91>`_ [1]
24-
* `Cole Hurwitz <https://github.com/colehurwitz>`_ [3]
25-
* `Jeremy Magland <https://github.com/magland>`_ [4]
26-
* `Matthias Hennig <https://github.com/mhhennig>`_ [3]
34+
* `Cole Hurwitz <https://github.com/colehurwitz>`_ [8]
35+
* `Jeremy Magland <https://github.com/magland>`_ [9]
36+
* `Matthias Hennig <https://github.com/mhhennig>`_ [8]
2737
* `Samuel Garcia <https://github.com/samuelgarcia>`_ [2]
2838

2939

3040
1. Allen Institute for Neural Dynamics (AIND), Seattle, USA.
3141
2. Centre de Recherche en Neuroscience de Lyon (CRNL), Lyon, France.
32-
3. The Institute for Adaptive and Neural Computation (ANC), University of Edinburgh, Edinburgh, Scotland.
33-
4. Center for Computational Biology (CCB), Flatiron Institute, New York, United States.
34-
42+
3. Centre for Discovery Brain Sciences, University of Edinburgh, Edinburgh, UK.
43+
4. Harvard Medical School, Harvard University, USA.
44+
5. CatalystNeuro, Wyoming, USA.
45+
6. Lille Neurosciences and Cognition, Université de Lille, Lille, France.
46+
7. Sainsbury Wellcome Centre, London, UK.
47+
8. The Institute for Adaptive and Neural Computation (ANC), University of Edinburgh, Edinburgh, UK.
48+
9. Center for Computational Biology (CCB), Flatiron Institute, New York, USA.
3549

3650
Contributors to current API (>0.90)
3751
-----------------------------------

doc/releases/0.104.0.rst

Lines changed: 239 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
1+
.. _release0.104.0:
2+
3+
SpikeInterface 0.104.0 release notes
4+
------------------------------------
5+
6+
Mar 23rd 2026
7+
8+
Main changes:
9+
10+
* Added support for ``Bombcell`` [Fabre]_, for unit curation, including new and updated template metrics (#4306)
11+
* Added ``LUPIN`` [Garcia2024]_ as an internal sorter (#4192)
12+
* Added support for ``SLAy`` [Koukuntla]_, for automated unit merges (#4190)
13+
* Added ``valid_unit_periods`` postprocessing extension, based on NeuroPyxles [npyx]_ (#4299, #4302)
14+
* Added ``AutoCorrelograms`` postprocessing extension (#4307)
15+
* Added support for double-sided probes (#4272)
16+
* Added ``SequentialCuration``, allowing for chains of curations to be applied to analyzers (#4298)
17+
* Added support for FigPack, to eventually superseed SortingView (#4364)
18+
* Added ``detect_saturation_periods`` and ``detect_artifact_periods_by_envelope`` preprocessing steps (#3715, #4297)
19+
* Major refactor and debugging of the ``Metrics`` postprocessing module (#4183, #4362, #4355, #4353, #4342, #4292) (see: :doc:`/modules/metrics`)
20+
* Significant speedups in ``Metrics`` (#4308, #4363) and ``SortingComponents`` (#4402, #4341) modules, and in correlograms (#4305) and template similarity (#4343) computations.
21+
22+
* API and breaking changes:
23+
24+
* Specific metrics functions now imported from different sub module (see: :doc:`/modules/metrics/`)
25+
* ``snr`` quality metric calculation now uses median rather than mean (see: :doc:`/modules/metrics/quality_metrics`)
26+
* Template metric renaming: "peak_to_valley" -> "peak_to_trough_duration" / "peak_trough_ratio" -> "peak_to_trough_ratio". This name change will be applied automatically on load of older analzyers. (see: :doc:`/modules/metrics/template_metrics`)
27+
* The computation of "peak_to_trough_ratio" now uses absolute values of peak and trough, so it's always positive.
28+
29+
* The function to do UnitRefine curation has been renamed from ``auto_label_units`` to ``unitrefine_label_units`` (see :py:func:`~spikeinterface.curation.unitrefine_label_units`)
30+
* Remove support for Python 3.9
31+
32+
core:
33+
34+
* Fix closest_channels sparsity estimation when n_units > n_channels (#4443)
35+
* Copy the recording from original sorting during NumpySorting.from_sorting() (#4417)
36+
* Don't raise when extension is unknown (#4406)
37+
* Make NumpySorting.from_unit_dict docs and code consistent (#4382)
38+
* Improve extension dependency management in SortingAnalyzer (#4321)
39+
* Implement `select_sorting_periods` in core (#4316)
40+
* Implement the cached_lexsorted_spike_vector. (#4315)
41+
* Move structured dtypes to base (#4314)
42+
* Implement `select_sorting_periods` in metrics (#4302)
43+
* Fix `get_probe` `set_probe` annotations propagation (#4300)
44+
* using `spike_vector` on `core/check_sortings_equal` test (#4282)
45+
* Random spike selection new methods (#4276)
46+
* Implement the by_side grouping with probes (#4272)
47+
* Fix gaussian filter with time vector (#4268)
48+
* Delete some unused references to channel_slice (deprecated in v0.103.0) (#4246)
49+
* Fix probable sharedmem (#4239)
50+
* Implement Add/SubtractRecording classes and +- operators (#4238)
51+
* Warn about non-mergeable units instead of raising an error (#4219)
52+
* Implementing sparsity for ComputeTemplates (#4212)
53+
54+
extractors:
55+
56+
* Update read_openephys and add OneBox tests (#4456)
57+
* Add XClustSortingExtractor (#4433)
58+
* Add gain and offset for `read_kilosort_as_analyzer` (#4428)
59+
* Fix openephys tests (#4426)
60+
* Fix Open Ephys probe channel order (#4396)
61+
* Improve NWB Extractor `__del__` method to avoid import errors (#4369)
62+
* Fix IBL test with probe representation (#4335)
63+
* Remove check of `len(inter_sample_shifts)` matching `num_readout_channels` (#4317)
64+
* Update to SiNAPS extractor (#4263)
65+
* Support for using event names as IDs in PL2 files (#4049)
66+
* Get unit locations from HerdingspikesSortingExtractor (#3525)
67+
68+
preprocessing:
69+
70+
* Refactor artifacts detection + add saturation detection (#4297)
71+
* Switch to kernel for local CAR (#4454)
72+
* Slice epsilons with dead channels to match gains during agc. (#4430)
73+
* Support time_vector in resample() (#4429)
74+
* Implementing KNN referencing and a backup referencing mechanism for common_reference (#4412)
75+
* Use a truncated median filter near edges when detecting bad channels (#4391)
76+
* Make anyone happy about warnings and margin in filtering. (#4384)
77+
* Fix bug spatial filter #4175 (#4286)
78+
* Fix gaussian filter with time vector (#4268)
79+
* Fixes Issue4180 (#4247)
80+
* Fix artifact removal padding logic (#4245)
81+
* Auto-estimate margins based on freq_min/f0+Q for filters (#4227)
82+
* Fix silence period and job_kwargs (#4071)
83+
* Remove artefacts based of an envelope (#3715)
84+
85+
sorters:
86+
87+
* Add the option for clustering methods to return temporal shifts for peaks while clustering (#4401)
88+
* Add plotting functions for drift and diagnostics to KS4 (#4387)
89+
* lupin and tdc2 : improvements (#4349)
90+
* Improve multithreading and multi processing : lock + nogil + mp_context (#4333)
91+
* Fix typo in lupin/tdc2 (#4284)
92+
* Make "simple" sorters params simpler. (#4281)
93+
* Improvements for internal sorters (#4279)
94+
* kilosort4 may fail due to the undesirable instantiation of `logger` (#4277)
95+
* Flatten params for tridesclous2 sorter (#4254)
96+
* Add isosplit in simple sorter (#4249)
97+
* Final cleaning of mixtures for lupin/tdc/sc (#4244)
98+
* Cosmetic logging messages for SC2 (#4242)
99+
* A new sorter : Lupin sorter (#4192)
100+
101+
postprocessing:
102+
103+
* Set amplitude scalings equal zero for zero template units (#4455)
104+
* Add gain and offset for `read_kilosort_as_analyzer` (#4428)
105+
* Don't raise when extension is unknown (#4406)
106+
* Fix valid period amplitudes (#4361)
107+
* Patch lag similarities (#4345)
108+
* Speed up template similarity computing using numba (#4343)
109+
* Change ComputeSpikeLocations to use only peak_sign (#4330)
110+
* Ensure compute unit locations respects order of unit ids (#4329)
111+
* Auto correlograms (#4307)
112+
* Option to turn on parallel computation for CCG in numba (#4305)
113+
* Valid unit periods extension (#4299)
114+
* Add `BaseSpikeVectorExtension` (#4189)
115+
116+
metrics:
117+
118+
* Set num_histogram_bins in amplitude_cutoff (back) to 100 (#4415)
119+
* Fix metrics test for numba correlograms fast_mode (#4377)
120+
* Remove multiprocessing from NearestNeigbhor metric (#4363)
121+
* Add peak_sign to sd_ratio (#4362)
122+
* Improve error message for deprecated metric names (#4358)
123+
* Correct formula for mad (and std) in drift quality metrics (#4355)
124+
* Compute missing spikes on the right tail of amplitude distributions (#4353)
125+
* Improve stability of velocity fits in template metrics (#4342)
126+
* Timing the computations of quality metrics and some optimizations (#4308)
127+
* Bombcell integration and template metrics refactoring (#4306)
128+
* Fix rp violations bug (#4292)
129+
* Refactor metrics into its own module (#4183)
130+
131+
curation:
132+
133+
* Improve robustness of model classifier tests (#4447)
134+
* Rename `CurationModel` to `Curation` (#4421)
135+
* Change 'min'/'max' to 'greater'/'less' when defining thresholds for `threshold_metrics_label_units` (#4416)
136+
* Send peak_sign to `get_template_extremum_channel_peak_shift` in remove_redundant_units (#4408)
137+
* Use `sorting._recording` (if available) in `remove_excess_spikes` (#4407)
138+
* Add `threshold_metrics` curation (#4365)
139+
* Ensure default supported_versions is a tuple, as in type (#4348)
140+
* Refactor API for `auto_label_units` (#4338)
141+
* Bombcell integration and template metrics refactoring (#4306)
142+
* Sequential curation (#4298)
143+
* Fix failing tests due to scikit-learn versions (#4253)
144+
* Warn about non-mergeable units instead of raising an error (#4219)
145+
* Add SLAy auto-merge preset (#4190)
146+
147+
widgets:
148+
149+
* Enlarge channel textbox in plot_traces (#4400)
150+
* Send a float (rather than 1-element array) to BoundedFloatText (#4399)
151+
* Figpack integration (replacement of sortingview) (#4364)
152+
* Remove layer selector from `plot_traces` ipywidgets backend if single layer (#4325)
153+
* Fix edges of 2d-histogram in UnitWaveformDensityMapWidget (#4283)
154+
* Protect unit summary and unit locations plots against NaNs (#4128)
155+
156+
generators:
157+
158+
* More possibilities for gt generation (#4289)
159+
* Update generate.py (#4163)
160+
161+
sortingcomponents:
162+
163+
* Optimizations: faster waveforms/templates and seeding iterative_isosplit properly (#4402)
164+
* Add the option for clustering methods to return temporal shifts for peaks while clustering (#4401)
165+
* Make peak detection (locally_exclussive, matched_filtering) faster and more accurate. (#4341)
166+
* Needed by Olivier to create an analyzer with precomputed data (#4303)
167+
* Final cleaning of mixtures for lupin/tdc/sc (#4244)
168+
* Cosmetic logging messages for SC2 (#4242)
169+
* Update nearest peeler (#4223)
170+
171+
documentation:
172+
173+
* Add missing API doc entries for `save*`, `dump*`, `remove_channels`, and `scale_to_uV` (#4451)
174+
* Extend unsigned to signed docs (#4448)
175+
* Fix link to LFP docs in error message (#4424)
176+
* Fix some typos in documentation (#4419)
177+
* Add a why integrate your software with spikeinterface section (#4393)
178+
* Add `compute_valid_unit_periods` to api and add credit in postprocessing module (#4390)
179+
* Add metric_descriptions and BaseMetricExtension.get_metric_colum_descriptions (#4278)
180+
* Doc sorters (#4275)
181+
* Clean auto-release script: use metrics + only print changed modules (#4265)
182+
183+
continuous integration:
184+
185+
* Update setuptools version for legacy kilosort (#4386)
186+
* Get rid of pytest-dependency and use fixtures (#4381)
187+
* Free up space in codecov CI (#4252)
188+
189+
packaging:
190+
191+
* Update lower bound python support to 3.10 (#4383)
192+
193+
testing:
194+
195+
* Further Improve robustness of model classifier tests (#4450)
196+
* Remove `n_jobs=-1` from curation tests (#4449)
197+
* Improve robustness of model classifier tests (#4447)
198+
* Fix openephys tests (#4426)
199+
* Rename `neurodsp` to `ibldsp` to ensure IBL tests run (#4392)
200+
* Update setuptools version for legacy kilosort (#4386)
201+
* Get rid of pytest-dependency and use fixtures (#4381)
202+
* Test IBL extractors tests failing for PI update (#4285)
203+
* using `spike_vector` on `core/check_sortings_equal` test (#4282)
204+
* fix tdc2 failing tests (#4271)
205+
* Fix failing tests due to scikit-learn versions (#4253)
206+
207+
deprecations:
208+
209+
* Remove deprecations for 0.104.0 (#4425)
210+
* Make anyone happy about warnings and margin in filtering. (#4384)
211+
* Improve error message for deprecated metric names (#4358)
212+
* Binary recording bacward-compatibility (#4357)
213+
214+
Contributors:
215+
216+
* @CodyCBakerPhD
217+
* @JoeZiminski
218+
* @Julie-Fabre
219+
* @MGAMZ
220+
* @OleBialas
221+
* @ShijiMi-Soup
222+
* @ablot
223+
* @alejoe91
224+
* @b-grimaud
225+
* @chrishalcrow
226+
* @ecobost
227+
* @esutlie
228+
* @grahamfindlay
229+
* @h-mayorquin
230+
* @m-beau
231+
* @mhhennig
232+
* @oliche
233+
* @pas-calc
234+
* @raffaele222
235+
* @samuelgarcia
236+
* @tayheau
237+
* @ueeseer
238+
* @yger
239+
* @zzhmark

doc/scripts/auto-release-notes.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ START_DATE="$1"
88
END_DATE="$2"
99

1010
if [ -z "$3" ] || [ "$3" = "all" ]; then
11-
LABELS=("core" "extractors" "preprocessing" "sorters" "postprocessing" "metrics" "curation" "widgets" "generators" "hybrid" "sortingcomponents" "motion correction" "documentation" "continuous integration" "packaging" "testing" "deprecations")
11+
LABELS=("core" "extractors" "preprocessing" "sorters" "postprocessing" "metrics" "curation" "widgets" "generators" "hybrid" "sortingcomponents" "motion correction" "documentation" "continuous integration" "packaging" "testing" "deprecations" "qualitymetrics")
1212
else
1313
LABELS=("$3")
1414
fi
@@ -44,4 +44,4 @@ echo "Contributors:"
4444
echo ""
4545
gh pr list --repo SpikeInterface/spikeinterface --limit 1000 --base main --state merged --json number,title,author,mergedAt \
4646
| jq -r --arg start_date "${START_DATE}T00:00:00Z" --arg end_date "${END_DATE}T00:00:00Z" \
47-
'[.[] | select(.mergedAt >= $start_date and .mergedAt <= $end_date) | .author.login] | unique | .[] | "* @" + .'
47+
'[.[] | select(.mergedAt >= $start_date and .mergedAt <= $end_date and .author.login != "app/pre-commit-ci") | .author.login] | unique | .[] | "* @" + .'

doc/whatisnew.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Release notes
88
.. toctree::
99
:maxdepth: 1
1010

11+
releases/0.104.0.rst
1112
releases/0.103.2.rst
1213
releases/0.103.1.rst
1314
releases/0.103.0.rst
@@ -51,6 +52,28 @@ Release notes
5152
releases/0.9.9.rst
5253
releases/0.9.1.rst
5354

55+
Version 0.104.0
56+
===============
57+
58+
* Added support for ``Bombcell`` [Fabre]_, for unit curation, including new and updated template metrics (#4306)
59+
* Added ``LUPIN`` [Garcia2024]_ as an internal sorter (#4192)
60+
* Added support for ``SLAy`` [Koukuntla]_, for automated unit merges (#4190)
61+
* Added ``valid_unit_periods`` postprocessing extension, based on NeuroPyxles [npyx]_ (#4299, #4302)
62+
* Added ``AutoCorrelograms`` postprocessing extension (#4307)
63+
* Added support for double-sided probes (#4272)
64+
* Added ``SequentialCuration``, allowing for chains of curations to be applied to analyzers (#4298)
65+
* Added support for FigPack, to eventually superseed SortingView (#4364)
66+
* Added ``detect_saturation_periods`` and ``detect_artifact_periods_by_envelope`` preprocessing steps (#3715, #4297)
67+
* Major refactor and debugging of the ``Metrics`` postprocessing module (#4183, #4362, #4355, #4353, #4342, #4292) (see: :doc:`/modules/metrics`)
68+
* Significant speedups in ``Metrics`` (#4308, #4363) and ``SortingComponents`` (#4402, #4341) modules, and in correlograms (#4305) and template similarity (#4343) computations.
69+
70+
* API and breaking changes:
71+
72+
* Specific metrics functions now imported from different sub module (see: :doc:`/modules/metrics/`)
73+
* ``snr`` quality metric calculation now uses median rather than mean (see: :doc:`/modules/metrics/quality_metrics`)
74+
* Metric name "peak_to_valley" has been renamed to "peak_to_trough_duration" for clarity. This name change will be applied automatically on load of older analzyers. (see: :doc:`/modules/metrics/template_metrics`)
75+
* The function to do UnitRefine curation has been renamed from ``auto_label_units`` to ``unitrefine_label_units`` (see :py:func:`~spikeinterface.curation.unitrefine_label_units`)
76+
* Remove support for Python 3.9
5477

5578
Version 0.103.2
5679
===============

0 commit comments

Comments
 (0)