@@ -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" ))
0 commit comments