|
| 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 |
0 commit comments