SpikeInterface 0.100.0 release notes¶
6th February 2024
Main changes:
Several improvements and bug fixes for Windows users
Important refactoring of NWB extractors: * implemented direct backend implementation (to avoid using pynwb) * sped up streaming using remfile * added support for zarr backend
Removed joblib dependency in favor of ParallelProcessExecutor
Improved flexibility when running sorters in containers by adding several options for installing spikeinterface
Add Templates class to core, which handles unit templates and sparsity (#1982)
Added Zarr-backend to Sorting objects (sorting.save(folder=”…”, format=”zarr”)) (#2403)
Added SharedmemRecording for shared memory recordings (#2365)
Added machinery for moving/interpolating templates for generating hybrid recordings with drift (#2291)
Added new fast method for unit/spike/peak localization: grid_convolution (#2172)
core:
Add Templates class (#1982)
Use python methods instead of parsing and eleminate try-except in to_dict
(#2157) * WaveformExtractor.is_extension –> has_extension (#2158) * Speed improvement to get_empty_units() (#2173) * Allow precomputing spike trains (#2175) * Add ‘percentile’ to template modes and plot_unit_templates (#2179) * Add rename_units method in sorting (#2207) * Add an option for count_num_spikes_per_unit (#2209) * Remove joblib in favor of ParallelProcessExecutor (#2218) * Fixed a bug when caching recording noise levels (#2220) * Various fixes for Windows (#2221) * Fix num_samples in concatenation (#2223) * Disable writing templates modes npy in read-only mode (#2251) * Assert renamed_channels/unit_ids is unique (#2252) * Implement save_to_zarr for BaseSorting (#2254) * Improve the BaseExtractor.to_dict() relative_to machanism to make it safer on Windows (#2279) * Make sure sampling frequency is always float (#2283) * NumpySorting.from_peaks: make unit_ids mandatory (#2315) * Make chunksize in get_random_data_chunks throw warning and clip if under limit (#2321) * ids can be a tuple in ids_to_indices (#2324) * get_num_frames to return a python int (#2326) * Add an auto adjustment if n_jobs too high on Windows (#2329) * Cache spike_vector from parent (#2353) * Refactor recording tools (#2363) * Add rename_channels method to recording extractors (#2364) * Create SharedmemRecording (#2365) * WaveformExtractor.select_units also functional if we.has_recording()=False (#2368) * Add zarrrecordingextractor.py for backward compatibility (#2377, #2395, #2451) * Improve ZarrSortingExtractor (#2403) * Improvement to compute sparsity without WaveformsExtractor (#2410) * Zarr backcompatibility: map root_path to folder_path (#2451) * Fix spikes generation on borders (#2453) * Zarr IO for Templates object (#2423) * Avoid double parsing in Plexon (#2459)
extractors:
Add .stream.cbin compatibility to CompressedBinaryIblExtractor (#2297)
Add stream_folders path to OpenEphysBinaryRecordingExtractor (#2369)
Deprecate ignore_timestamps_errors in OpenEphysLegacyRecordingExtractor (#2450)
Better auto-guess of open-ephys format (#2465)
Several improvements to NWB extractors: * Add option for no caching option to the NWB extractor when streaming (#2246, #2248, #2268) * Fix NwbSortingExtractor reading of ragged arrays (#2255) * Add nwb sorting remfile support (#2275) * Avoid loading channel_name property in NwbRecordingExtractor (#2285) * Add hdf5 backend support for Nwb extractors (#2294, #2297, #2341) * Refactor NwbSortingSegment (#2313) * Add t_start argument to NwbSortingExtractor (#2333) * Add support for NWB-Zarr enhancement and zarr streaming (#2441, #2464)
preprocessing:
Fix filtering rounding error (#2189)
Fix: save a copy of group ids in CommonReferenceRecording (#2215)
Add outside_channels_location option in detect_bad_channels (#2250)
Fix overflow problems with CAR (#2362)
Fix for Silence periods (saving noise levels) (#2375)
Add DecimateRecording (#2385)
Add margin_sd argument to gaussian filtering (#2389)
Faster Gaussian filter implementation preprocessing (#2420)
Faster unpickling of ZScoreRecording (#2431)
Add bit depth compensation to unsigned_to_signed (#2438)
Renaming: GaussianBandpassFilter -> GaussianFilter (and option for low/high pass filter) (#2397, #2466)
sorters:
Several updates to SpykingCircus2 (#2205, #2236, #2244, #2276)
Handling segments in SpykingCircus2 and Tridesclous2 (#2208)
A couple updates to mountainsort5 sorter (#2225)
run_sorter in containers: dump to json or pickle (#2271)
run_sorter in containers: add several options for installing spikeinterface (#2273)
Close ShellScript and pipes process at deletion (#2292, #2338)
Remove deprecated direct function to run_sorter (e.g., run_kilosort2 -> run_sorter(‘kilosort2’) (#2355)
Expose lam and momentum params in the appropriate kilosorts (#2358)
Tridesclous2 update (#2267)
postprocessing:
Use sampling_frequency instead of get_sampling_frequency in _make_bins (#2284)
Multi-channel template metrics fix (#2323)
Fix bug in get_repolarization_slope with wrong index type (#2432)
Estimation of depth for grid_convolution localization (#2172)
qualitymetrics:
Implemented sd_ratio as quality metric (#2146, #2402)
Avoid duplicated template and quality metric names (#2210)
Fix rp_violations when specifying unit_ids (#2247)
curation:
Fix bug in mergeunits (#2443)
Fix sortingview curation and merge units with array properties (#2427)
Move computation away from __init__ in duplicated spikes (#2446)
widgets:
Sorting summary updates in sortingview (#2318)
Add a more robust delta_x to unit_waveforms (#2287)
Prevent users from providing a time_range after the ending of the segment in plot_traces (#2286)
Fix sortingview checks for NaN if strings (#2243)
generation:
Creation of a TransformSorting object to track modifications and bencharmk (#1999)
Add a minimum distance in generate_unit_locations (#2147)
Add Poisson statistics to generate_sorting and optimize memory profile (#2226)
Fix add_shift_shuffle section in synthesize_random_firings (#2334)
Machinery for moving templates and generating hybrid recordings with drift (#2291)
sortingcomponents:
Strict inegality for sparsity with radius_um (#2277) by yger was merged on Dec 1, 2023
Fix memory leak in lsmr solver and optimize correct_motion (#2263)
docs:
Various improvements to docs (#2168, #2229, #2407)
Improve ids_to_indices docstring (#2301)
Fix for docstring of get_traces (#2320)
Fix RTD warnings (#2348)
Improve CMR docstring (#2354)
Correct warning format in neo base extractors (#2357)
Typo fix for verbose setting in Multicomparison (#2399)
ci / packaging / tests:
Add tests for unique names in channel slice and unit selection (#2258)
Add from __future__ import annotations to all files for Python3.8 (#2340, #2468)
Add pickling test to streamers (#2170)