Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions .github/workflows/test_kilosort4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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 }}
Expand Down
8 changes: 8 additions & 0 deletions src/spikeinterface/sorters/external/kilosort4.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,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,
Expand All @@ -161,6 +162,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
Expand Down
Loading