Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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
21 changes: 21 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,26 @@ widgets = [
"distinctipy",
]

lupin = [
"scipy",
"numba",
"scikit-learn",
"torch"
]

spykingcircus2 = [
"scipy",
"hdbscan",
"numba",
]

tridesclous2= [
"scipy",
"numba",
"scikit-learn",
"torch",
]

# `full` installs every module's optional feature deps. Defined as the union of
# per-module extras so adding a dep to a module propagates here automatically.
full = [
Expand Down Expand Up @@ -298,6 +318,7 @@ test-all = [
{include-group = "test-sortingcomponents"},
{include-group = "test-generation"},
]
dev = []
Comment thread
chrishalcrow marked this conversation as resolved.
Outdated

[tool.pytest.ini_options]
testpaths = ["src"]
Expand Down
14 changes: 14 additions & 0 deletions src/spikeinterface/sorters/internal/lupin.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,22 @@ class LupinSorter(ComponentsBasedSorter):
"debug": "Save debug files",
}

installation_mesg = "\tpip install 'spikeinterface[lupin]'\nOr, if you have cloned SpikeInterface locally, using:\n\tpip install '.[lupin]'"

handle_multi_segment = True

@classmethod
def is_installed(cls):
import importlib.util

lupin_deps = ["scipy", "numba", "scikit-learn", "torch"]

for package_name in lupin_deps:
if not importlib.util.find_spec(package_name):
return False

return True

@classmethod
def get_sorter_version(cls):
return "2026.01"
Expand Down
14 changes: 14 additions & 0 deletions src/spikeinterface/sorters/internal/spyking_circus2.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,20 @@ class Spykingcircus2Sorter(ComponentsBasedSorter):
In addition, it also uses a full Orthogonal Matching Pursuit engine to reconstruct the traces, leading to more spikes
being discovered. The code is much faster and memory efficient, inheriting from all the preprocessing possibilities of spikeinterface"""

installation_mesg = "\tpip install 'spikeinterface[spykingcircus2]'\nOr, if you have cloned SpikeInterface locally, using:\n\tpip install '.[spykingcircus2]'"

@classmethod
def is_installed(cls):
import importlib.util

spykingcircus2_deps = ["scipy", "numba", "hbdscan"]

for package_name in spykingcircus2_deps:
if not importlib.util.find_spec(package_name):
return False

return True

@classmethod
def get_sorter_version(cls):
return "2025.12"
Expand Down
14 changes: 14 additions & 0 deletions src/spikeinterface/sorters/internal/tridesclous2.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,20 @@ class Tridesclous2Sorter(ComponentsBasedSorter):

handle_multi_segment = True

installation_mesg = "\tpip install 'spikeinterface[tridesclous2]'\nOr, if you have cloned SpikeInterface locally, using:\n\tpip install '.[tridesclous2]'"

@classmethod
def is_installed(cls):
import importlib.util

tridesclous2_deps = ["scipy", "numba", "hbdscan"]

for package_name in tridesclous2_deps:
if not importlib.util.find_spec(package_name):
return False

return True

@classmethod
def get_sorter_version(cls):
return "2026.01"
Expand Down
Loading