Skip to content

Commit 87f9b91

Browse files
authored
Merge pull request #3866 from nikhilchandra/issue_3782
Incorporated kilosort4's setup_logger() function to ensure generation of kilosort4.log file in sorter_output folder
2 parents c4bf17e + fa9b814 commit 87f9b91

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

src/spikeinterface/sorters/external/kilosort4.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,18 +163,15 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose):
163163
cluster_spikes,
164164
save_sorting,
165165
get_run_parameters,
166+
setup_logger,
166167
)
167168
from kilosort.io import load_probe, RecordingExtractorAsArray, BinaryFiltered, save_preprocessing
168169
from kilosort.parameters import DEFAULT_SETTINGS
169170

170171
import time
171172
import torch
172173
import numpy as np
173-
174-
if verbose:
175-
import logging
176-
177-
logging.basicConfig(level=logging.INFO)
174+
import logging
178175

179176
if version.parse(cls.get_sorter_version()) < version.parse("4.0.16"):
180177
raise RuntimeError(
@@ -183,6 +180,37 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose):
183180
"Please upgrade Kilosort version."
184181
)
185182

183+
# setup kilosort's console and file log handlers
184+
setup_logger_takes_verbose_console = version.parse(cls.get_sorter_version()) > version.parse("4.0.18")
185+
logger_is_named = version.parse(cls.get_sorter_version()) > version.parse("4.0.20")
186+
187+
if setup_logger_takes_verbose_console:
188+
# v4.0.19 and higher
189+
setup_logger(sorter_output_folder, verbose_console=False)
190+
else:
191+
# v4.0.16, v4.0.17, v4.0.18
192+
setup_logger(sorter_output_folder)
193+
194+
# if verbose is False, set the stream handler's log
195+
# level to logging.WARNING to preserve original
196+
# behavior prior to addition of setup_logger() above
197+
if not verbose:
198+
if logger_is_named:
199+
# v4.0.21 and above
200+
logger = logging.getLogger("kilosort")
201+
else:
202+
# v4.0.16, v4.0.17, v4.0.18, v4.0.19, v4.0.20
203+
logger = logging.getLogger("")
204+
205+
# find the stream handler
206+
stream_handler = None
207+
for handler in logger.handlers:
208+
if type(handler) == logging.StreamHandler:
209+
stream_handler = handler
210+
break
211+
212+
stream_handler.setLevel(logging.WARNING)
213+
186214
sorter_output_folder = sorter_output_folder.absolute()
187215

188216
probe_filename = sorter_output_folder / "chanMap.json"

0 commit comments

Comments
 (0)