From 5d88e7234b8614862284eb665070554a66478446 Mon Sep 17 00:00:00 2001 From: Pierre Yger Date: Sun, 2 Mar 2025 21:06:30 +0100 Subject: [PATCH 1/4] Docstrings --- .../sorters/internal/spyking_circus2.py | 5 +++-- src/spikeinterface/sortingcomponents/tools.py | 14 +++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/spikeinterface/sorters/internal/spyking_circus2.py b/src/spikeinterface/sorters/internal/spyking_circus2.py index ad5457439f..50a6603d24 100644 --- a/src/spikeinterface/sorters/internal/spyking_circus2.py +++ b/src/spikeinterface/sorters/internal/spyking_circus2.py @@ -75,8 +75,9 @@ class Spykingcircus2Sorter(ComponentsBasedSorter): "matched_filtering": "Boolean to specify whether circus 2 should detect peaks via matched filtering (slightly slower)", "cache_preprocessing": "How to cache the preprocessed recording. Mode can be memory, file, zarr, with extra arguments. In case of memory (default), \ memory_limit will control how much RAM can be used. In case of folder or zarr, delete_cache controls if cache is cleaned after sorting", - "chunk_preprocessing": "How much RAM (approximately) should be devoted to load data chunks. memory_limit will control how much RAM can be used\ - as a fraction of available memory. Otherwise, use total_memory to fix a hard limit", + "chunk_preprocessing": "How much RAM (approximately) should be devoted to load all data chunks (given n_jobs).\ + memory_limit will control how much RAM can be used as a fraction of available memory. Otherwise, use total_memory to fix a hard limit, with\ + a string syntax (e.g. '1G', '500M')", "multi_units_only": "Boolean to get only multi units activity (i.e. one template per electrode)", "job_kwargs": "A dictionary to specify how many jobs and which parameters they should used", "seed": "An int to control how chunks are shuffled while detecting peaks", diff --git a/src/spikeinterface/sortingcomponents/tools.py b/src/spikeinterface/sortingcomponents/tools.py index e55af1edfb..ba4154eb80 100644 --- a/src/spikeinterface/sortingcomponents/tools.py +++ b/src/spikeinterface/sortingcomponents/tools.py @@ -305,7 +305,7 @@ def get_optimal_n_jobs(job_kwargs, ram_requested, memory_limit=0.25): recording: Recording The recording object - ram_requested: dict + ram_requested: int The amount of RAM (in bytes) requested for the job memory_limit: float The memory limit in fraction of available memory @@ -324,7 +324,8 @@ def get_optimal_n_jobs(job_kwargs, ram_requested, memory_limit=0.25): n_jobs = int(min(n_jobs, memory_usage // ram_requested)) job_kwargs.update(dict(n_jobs=n_jobs)) else: - print("psutil is required to use only a fraction of available memory") + import warnings + warnings.warn("psutil is required to use only a fraction of available memory") return job_kwargs @@ -367,14 +368,17 @@ def cache_preprocessing( if recording.get_total_memory_size() < memory_usage: recording = recording.save_to_memory(format="memory", shared=True, **job_kwargs) else: - print("Recording too large to be preloaded in RAM...") + import warnings + warnings.warn("Recording too large to be preloaded in RAM...") else: - print("psutil is required to preload in memory given only a fraction of available memory") + import warnings + warnings.warn("psutil is required to preload in memory given only a fraction of available memory") else: if recording.get_total_memory_size() < total_memory: recording = recording.save_to_memory(format="memory", shared=True, **job_kwargs) else: - print("Recording too large to be preloaded in RAM...") + import warnings + warnings.warn("Recording too large to be preloaded in RAM...") elif mode == "folder": recording = recording.save_to_folder(**extra_kwargs) elif mode == "zarr": From f746d4194bd2133c8e3e90790b57a35dd2f78b95 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 20:07:03 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/spikeinterface/sortingcomponents/tools.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/spikeinterface/sortingcomponents/tools.py b/src/spikeinterface/sortingcomponents/tools.py index ba4154eb80..b97aea9ad0 100644 --- a/src/spikeinterface/sortingcomponents/tools.py +++ b/src/spikeinterface/sortingcomponents/tools.py @@ -325,6 +325,7 @@ def get_optimal_n_jobs(job_kwargs, ram_requested, memory_limit=0.25): job_kwargs.update(dict(n_jobs=n_jobs)) else: import warnings + warnings.warn("psutil is required to use only a fraction of available memory") return job_kwargs @@ -369,15 +370,18 @@ def cache_preprocessing( recording = recording.save_to_memory(format="memory", shared=True, **job_kwargs) else: import warnings + warnings.warn("Recording too large to be preloaded in RAM...") else: import warnings + warnings.warn("psutil is required to preload in memory given only a fraction of available memory") else: if recording.get_total_memory_size() < total_memory: recording = recording.save_to_memory(format="memory", shared=True, **job_kwargs) else: import warnings + warnings.warn("Recording too large to be preloaded in RAM...") elif mode == "folder": recording = recording.save_to_folder(**extra_kwargs) From d6b3bdbeaeffa872fc1e507e13ecb7f7463fa422 Mon Sep 17 00:00:00 2001 From: Pierre Yger Date: Sun, 2 Mar 2025 21:07:41 +0100 Subject: [PATCH 3/4] More docstrings --- src/spikeinterface/sortingcomponents/tools.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/spikeinterface/sortingcomponents/tools.py b/src/spikeinterface/sortingcomponents/tools.py index ba4154eb80..72f0001f05 100644 --- a/src/spikeinterface/sortingcomponents/tools.py +++ b/src/spikeinterface/sortingcomponents/tools.py @@ -283,7 +283,8 @@ def set_optimal_chunk_size(recording, job_kwargs, memory_limit=0.5, total_memory chunk_duration = chunk_size / recording.get_sampling_frequency() job_kwargs = fix_job_kwargs(dict(chunk_duration=f"{chunk_duration}s")) else: - print("psutil is required to use only a fraction of available memory") + import warnings + warnings.warn("psutil is required to use only a fraction of available memory") else: from spikeinterface.core.job_tools import convert_string_to_bytes From f2a3ac4fa6ade3c1ef040fb7a6990d1506de7668 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 20:08:14 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/spikeinterface/sortingcomponents/tools.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/spikeinterface/sortingcomponents/tools.py b/src/spikeinterface/sortingcomponents/tools.py index 99af5116f3..56b128d028 100644 --- a/src/spikeinterface/sortingcomponents/tools.py +++ b/src/spikeinterface/sortingcomponents/tools.py @@ -284,6 +284,7 @@ def set_optimal_chunk_size(recording, job_kwargs, memory_limit=0.5, total_memory job_kwargs = fix_job_kwargs(dict(chunk_duration=f"{chunk_duration}s")) else: import warnings + warnings.warn("psutil is required to use only a fraction of available memory") else: from spikeinterface.core.job_tools import convert_string_to_bytes