From 2ab5433fe6a6f399e250bdaa3213c863110502e8 Mon Sep 17 00:00:00 2001 From: Pierre Yger Date: Wed, 22 Nov 2023 08:23:19 +0100 Subject: [PATCH 1/3] Adding a debug mode to SC2 --- .../sorters/internal/spyking_circus2.py | 13 ++++++++++++- .../clustering/random_projections.py | 1 + .../sortingcomponents/matching/circus.py | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/spikeinterface/sorters/internal/spyking_circus2.py b/src/spikeinterface/sorters/internal/spyking_circus2.py index 1d4f04a382..5eabbb9039 100644 --- a/src/spikeinterface/sorters/internal/spyking_circus2.py +++ b/src/spikeinterface/sorters/internal/spyking_circus2.py @@ -36,6 +36,7 @@ class Spykingcircus2Sorter(ComponentsBasedSorter): "apply_preprocessing": True, "shared_memory": True, "job_kwargs": {"n_jobs": -1}, + "debug" : False } handle_multi_segment = True @@ -137,8 +138,13 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose): selected_peaks["sample_index"][mask], peak_labels[mask].astype(int), sampling_rate ) clustering_folder = sorter_output_folder / "clustering" - if clustering_folder.exists(): + clustering_folder.mkdir(parents=True, exist_ok=True) + + if not params["debug"]: shutil.rmtree(clustering_folder) + else: + np.save(clustering_folder / "labels", labels) + np.save(clustering_folder / "peaks", selected_peaks) ## We get the templates our of such a clustering waveforms_params = params["waveforms"].copy() @@ -180,6 +186,11 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose): recording_f, method="circus-omp-svd", method_kwargs=matching_params, **matching_job_params ) + if params["debug"]: + fitting_folder = sorter_output_folder / "fitting" + fitting_folder.mkdir(parents=True, exist_ok=True) + np.save(fitting_folder / "spikes.npy", spikes) + if verbose: print("We found %d spikes" % len(spikes)) diff --git a/src/spikeinterface/sortingcomponents/clustering/random_projections.py b/src/spikeinterface/sortingcomponents/clustering/random_projections.py index dcb84cb6ff..32782ec627 100644 --- a/src/spikeinterface/sortingcomponents/clustering/random_projections.py +++ b/src/spikeinterface/sortingcomponents/clustering/random_projections.py @@ -51,6 +51,7 @@ class RandomProjectionClustering: "smoothing_kwargs": {"window_length_ms": 0.25}, "shared_memory": True, "tmp_folder": None, + "debug": False, "job_kwargs": {"n_jobs": os.cpu_count(), "chunk_memory": "100M", "verbose": True, "progress_bar": True}, } diff --git a/src/spikeinterface/sortingcomponents/matching/circus.py b/src/spikeinterface/sortingcomponents/matching/circus.py index cfdca6f612..705efb226b 100644 --- a/src/spikeinterface/sortingcomponents/matching/circus.py +++ b/src/spikeinterface/sortingcomponents/matching/circus.py @@ -776,6 +776,7 @@ def main_function(cls, traces, d): all_selections[:, num_selection] = [best_cluster_ind, peak_index] num_selection += 1 + selection = all_selections[:, :num_selection] res_sps = full_sps[selection[0], selection[1]] From 54fd0f5a22de56fa5de1f82be5244140a7746d47 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 07:33:34 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/spikeinterface/sorters/internal/spyking_circus2.py | 2 +- src/spikeinterface/sortingcomponents/matching/circus.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/spikeinterface/sorters/internal/spyking_circus2.py b/src/spikeinterface/sorters/internal/spyking_circus2.py index 5eabbb9039..0aa9ee9291 100644 --- a/src/spikeinterface/sorters/internal/spyking_circus2.py +++ b/src/spikeinterface/sorters/internal/spyking_circus2.py @@ -36,7 +36,7 @@ class Spykingcircus2Sorter(ComponentsBasedSorter): "apply_preprocessing": True, "shared_memory": True, "job_kwargs": {"n_jobs": -1}, - "debug" : False + "debug": False, } handle_multi_segment = True diff --git a/src/spikeinterface/sortingcomponents/matching/circus.py b/src/spikeinterface/sortingcomponents/matching/circus.py index 705efb226b..cfdca6f612 100644 --- a/src/spikeinterface/sortingcomponents/matching/circus.py +++ b/src/spikeinterface/sortingcomponents/matching/circus.py @@ -776,7 +776,6 @@ def main_function(cls, traces, d): all_selections[:, num_selection] = [best_cluster_ind, peak_index] num_selection += 1 - selection = all_selections[:, :num_selection] res_sps = full_sps[selection[0], selection[1]] From 40ee5a9ef52b67eb759d682ba116f934b057e3e6 Mon Sep 17 00:00:00 2001 From: Pierre Yger Date: Wed, 22 Nov 2023 08:34:00 +0100 Subject: [PATCH 3/3] cleaner --- src/spikeinterface/sorters/internal/spyking_circus2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spikeinterface/sorters/internal/spyking_circus2.py b/src/spikeinterface/sorters/internal/spyking_circus2.py index 5eabbb9039..d3de35a7f8 100644 --- a/src/spikeinterface/sorters/internal/spyking_circus2.py +++ b/src/spikeinterface/sorters/internal/spyking_circus2.py @@ -189,7 +189,7 @@ def _run_from_folder(cls, sorter_output_folder, params, verbose): if params["debug"]: fitting_folder = sorter_output_folder / "fitting" fitting_folder.mkdir(parents=True, exist_ok=True) - np.save(fitting_folder / "spikes.npy", spikes) + np.save(fitting_folder / "spikes", spikes) if verbose: print("We found %d spikes" % len(spikes))