Skip to content

Commit 06f1c74

Browse files
committed
fix zarr folder suffix handling
1 parent 007b6ef commit 06f1c74

3 files changed

Lines changed: 16 additions & 11 deletions

File tree

src/spikeinterface/core/base.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from .globals import get_global_tmp_folder, is_set_global_tmp_folder
1818
from .core_tools import (
1919
check_json,
20+
clean_zarr_folder_name,
2021
is_dict_extractor,
2122
SIJsonEncoder,
2223
make_paths_relative,
@@ -1061,9 +1062,7 @@ def save_to_zarr(
10611062
print(f"Use zarr_path={zarr_path}")
10621063
else:
10631064
if storage_options is None:
1064-
folder = Path(folder)
1065-
if folder.suffix != ".zarr":
1066-
folder = folder.parent / f"{folder.stem}.zarr"
1065+
folder = clean_zarr_folder_name(folder)
10671066
if folder.is_dir() and overwrite:
10681067
shutil.rmtree(folder)
10691068
zarr_path = folder

src/spikeinterface/core/core_tools.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,13 @@ def check_json(dictionary: dict) -> dict:
153153
return json.loads(json_string)
154154

155155

156+
def clean_zarr_folder_name(folder):
157+
folder = Path(folder)
158+
if folder.suffix != ".zarr":
159+
folder = folder.parent / f"{folder.stem}.zarr"
160+
return folder
161+
162+
156163
def add_suffix(file_path, possible_suffix):
157164
file_path = Path(file_path)
158165
if isinstance(possible_suffix, str):

src/spikeinterface/core/sortinganalyzer.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
from .base import load_extractor
2525
from .recording_tools import check_probe_do_not_overlap, get_rec_attributes, do_recording_attributes_match
26-
from .core_tools import check_json, retrieve_importing_provenance, is_path_remote
26+
from .core_tools import check_json, retrieve_importing_provenance, is_path_remote, clean_zarr_folder_name
2727
from .sorting_tools import generate_unit_ids_for_merge_group, _get_ids_after_merging
2828
from .job_tools import split_job_kwargs
2929
from .numpyextractors import NumpySorting
@@ -111,6 +111,8 @@ def create_sorting_analyzer(
111111
sparsity off (or give external sparsity) like this.
112112
"""
113113
if format != "memory":
114+
if format == "zarr":
115+
folder = clean_zarr_folder_name(folder)
114116
if Path(folder).is_dir():
115117
if not overwrite:
116118
raise ValueError(f"Folder already exists {folder}! Use overwrite=True to overwrite it.")
@@ -269,6 +271,8 @@ def create(
269271
sorting_analyzer = cls.load_from_binary_folder(folder, recording=recording)
270272
sorting_analyzer.folder = Path(folder)
271273
elif format == "zarr":
274+
assert folder is not None, "For format='zarr' folder must be provided"
275+
folder = clean_zarr_folder_name(folder)
272276
cls.create_zarr(folder, sorting, recording, sparsity, return_scaled, rec_attributes=None)
273277
sorting_analyzer = cls.load_from_zarr(folder, recording=recording)
274278
sorting_analyzer.folder = Path(folder)
@@ -487,10 +491,7 @@ def create_zarr(cls, folder, sorting, recording, sparsity, return_scaled, rec_at
487491
import zarr
488492
import numcodecs
489493

490-
folder = Path(folder)
491-
# force zarr sufix
492-
if folder.suffix != ".zarr":
493-
folder = folder.parent / f"{folder.stem}.zarr"
494+
folder = clean_zarr_folder_name(folder)
494495

495496
if folder.is_dir():
496497
raise ValueError(f"Folder already exists {folder}")
@@ -768,9 +769,7 @@ def _save_or_select_or_merge(
768769

769770
elif format == "zarr":
770771
assert folder is not None, "For format='zarr' folder must be provided"
771-
folder = Path(folder)
772-
if folder.suffix != ".zarr":
773-
folder = folder.parent / f"{folder.stem}.zarr"
772+
folder = clean_zarr_folder_name(folder)
774773
SortingAnalyzer.create_zarr(
775774
folder, sorting_provenance, recording, sparsity, self.return_scaled, self.rec_attributes
776775
)

0 commit comments

Comments
 (0)