From 36980b75b93a5df5ad844c984b0e73be6e172519 Mon Sep 17 00:00:00 2001 From: chrishalcrow Date: Wed, 20 May 2026 10:06:33 +0100 Subject: [PATCH 1/2] Use appropriate numpy version in kilosor tests --- .github/workflows/test_kilosort4.yml | 16 +++++++++++++--- src/spikeinterface/sorters/external/kilosort4.py | 9 +++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_kilosort4.yml b/.github/workflows/test_kilosort4.yml index 1966a2bba2..321c801e78 100644 --- a/.github/workflows/test_kilosort4.yml +++ b/.github/workflows/test_kilosort4.yml @@ -3,11 +3,11 @@ name: Testing Kilosort4 on: workflow_dispatch: schedule: - - cron: "0 12 * * 0" # Weekly on Sunday at noon UTC + - cron: "0 12 * * 0" # Weekly on Sunday at noon UTC pull_request: paths: - - '**/kilosort4.py' - - '**/test_kilosort4_ci.py' + - "**/kilosort4.py" + - "**/test_kilosort4_ci.py" jobs: versions: @@ -76,6 +76,16 @@ jobs: if: matrix.ks_version == '4.0.16' || matrix.ks_version == '4.0.17' || matrix.ks_version == '4.0.18' run: uv pip install --system setuptools==78.0.2 + - name: Install legacy numpy for KS4 4.1.1 - 4.1.5 + if: | + matrix.ks_version == '4.1.1' || + matrix.ks_version == '4.1.2' || + matrix.ks_version == '4.1.3' || + matrix.ks_version == '4.1.4' || + matrix.ks_version == '4.1.5' || + matrix.ks_version == '4.1.6' + run: uv pip install --system "numpy<2.4" + - name: Install Kilosort run: | uv pip install --system kilosort==${{ matrix.ks_version }} diff --git a/src/spikeinterface/sorters/external/kilosort4.py b/src/spikeinterface/sorters/external/kilosort4.py index 3c47f782ab..c9dbb4142c 100644 --- a/src/spikeinterface/sorters/external/kilosort4.py +++ b/src/spikeinterface/sorters/external/kilosort4.py @@ -1,3 +1,4 @@ +from spikeinterface.widgets.gtstudy import StudyRunTimesWidget import warnings from packaging import version @@ -147,6 +148,7 @@ def _setup_recording(cls, recording, sorter_output_folder, params, verbose): @classmethod def _run_from_folder(cls, sorter_output_folder, params, verbose): from kilosort import __version__ as ks_version + from numpy import __version__ as np_version from kilosort.run_kilosort import ( set_files, initialize_ops, @@ -161,6 +163,13 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose): from kilosort.io import load_probe, RecordingExtractorAsArray, BinaryFiltered, save_preprocessing from kilosort.parameters import DEFAULT_SETTINGS + if (version.parse("4.1.1") <= version.parse(ks_version) <= version.parse("4.1.6")) and version.parse( + np_version + ) >= version.parse("2.4.0"): + raise RuntimeError( + "Kilosort versions between 4.1.1 and 4.1.6 are not compatible with numpy versions above 2.4. Either upgrade Kilosort to 4.1.7 or above, or downgrade numpy to 2.3 or below." + ) + if version.parse(ks_version) >= version.parse("4.0.33"): HAS_DIAGNOSTIC_PLOTS = True import kilosort.plots as kplots From 74ca4d3c7f0cfea42f3d9c6af418cf97dcc18b0b Mon Sep 17 00:00:00 2001 From: chrishalcrow Date: Wed, 20 May 2026 10:08:28 +0100 Subject: [PATCH 2/2] oups --- src/spikeinterface/sorters/external/kilosort4.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/spikeinterface/sorters/external/kilosort4.py b/src/spikeinterface/sorters/external/kilosort4.py index c9dbb4142c..e54fb34cda 100644 --- a/src/spikeinterface/sorters/external/kilosort4.py +++ b/src/spikeinterface/sorters/external/kilosort4.py @@ -1,4 +1,3 @@ -from spikeinterface.widgets.gtstudy import StudyRunTimesWidget import warnings from packaging import version