Skip to content

Commit 1f44331

Browse files
authored
Merge branch 'main' into add_del_method_to_binary
2 parents 73c3111 + d06beb2 commit 1f44331

8 files changed

Lines changed: 334 additions & 335 deletions

File tree

src/spikeinterface/core/analyzer_extension_core.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ class ComputeNoiseLevels(AnalyzerExtension):
709709
depend_on = []
710710
need_recording = True
711711
use_nodepipeline = False
712-
need_job_kwargs = False
712+
need_job_kwargs = True
713713
need_backward_compatibility_on_load = True
714714

715715
def __init__(self, sorting_analyzer):
@@ -729,9 +729,12 @@ def _merge_extension_data(
729729
# this does not depend on units
730730
return self.data.copy()
731731

732-
def _run(self, verbose=False):
732+
def _run(self, verbose=False, **job_kwargs):
733733
self.data["noise_levels"] = get_noise_levels(
734-
self.sorting_analyzer.recording, return_scaled=self.sorting_analyzer.return_scaled, **self.params
734+
self.sorting_analyzer.recording,
735+
return_scaled=self.sorting_analyzer.return_scaled,
736+
**self.params,
737+
**job_kwargs,
735738
)
736739

737740
def _get_data(self):

src/spikeinterface/sorters/external/kilosort4.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,7 @@ def check_sorter_version(cls):
138138

139139
@classmethod
140140
def _setup_recording(cls, recording, sorter_output_folder, params, verbose):
141-
from probeinterface import write_prb
142-
143-
pg = recording.get_probegroup()
144-
probe_filename = sorter_output_folder / "probe.prb"
145-
write_prb(probe_filename, pg)
141+
cls._setup_json_probe_map(recording, sorter_output_folder)
146142

147143
if params["use_binary_file"]:
148144
if not recording.binary_compatible_with(time_axis=0, file_paths_length=1):
@@ -189,7 +185,7 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose):
189185

190186
sorter_output_folder = sorter_output_folder.absolute()
191187

192-
probe_filename = sorter_output_folder / "probe.prb"
188+
probe_filename = sorter_output_folder / "chanMap.json"
193189

194190
torch_device = params["torch_device"]
195191
if torch_device == "auto":
@@ -386,3 +382,29 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose):
386382
@classmethod
387383
def _get_result_from_folder(cls, sorter_output_folder):
388384
return KilosortBase._get_result_from_folder(sorter_output_folder)
385+
386+
@classmethod
387+
def _setup_json_probe_map(cls, recording, sorter_output_folder):
388+
"""Create a JSON probe map file for Kilosort4."""
389+
from kilosort.io import save_probe
390+
import numpy as np
391+
392+
groups = recording.get_channel_groups()
393+
positions = np.array(recording.get_channel_locations())
394+
if positions.shape[1] != 2:
395+
raise RuntimeError("3D 'location' are not supported. Set 2D locations instead.")
396+
397+
n_chan = recording.get_num_channels()
398+
chanMap = np.arange(n_chan)
399+
xc = positions[:, 0]
400+
yc = positions[:, 1]
401+
kcoords = groups.astype(float)
402+
403+
probe = {
404+
"chanMap": chanMap,
405+
"xc": xc,
406+
"yc": yc,
407+
"kcoords": kcoords,
408+
"n_chan": n_chan,
409+
}
410+
save_probe(probe, str(sorter_output_folder / "chanMap.json"))

src/spikeinterface/sorters/internal/spyking_circus2.py

Lines changed: 165 additions & 148 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)