Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
3dc5729
Test IBL extractors tests failing for PI update
alejoe91 Dec 29, 2025
d1a0532
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Jan 6, 2026
33c6769
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Jan 16, 2026
2c94bac
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Jan 20, 2026
a412bd8
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Feb 2, 2026
504e19d
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Feb 12, 2026
cd09c19
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Feb 19, 2026
a40d073
Merge branch 'main' of github.com:alejoe91/spikeinterface
alejoe91 Feb 24, 2026
a1da327
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 2, 2026
ef19a8e
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 3, 2026
a098b51
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 6, 2026
61c317a
Fix OpenEphys tests
alejoe91 Mar 6, 2026
c9ff247
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 9, 2026
3520138
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 16, 2026
f61329d
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 16, 2026
d64ae6a
Merge branch 'main' of github.com:alejoe91/spikeinterface
alejoe91 Mar 16, 2026
aef197d
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 17, 2026
e82331b
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 20, 2026
710cb6f
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 23, 2026
c2f8db1
Merge branch 'main' of github.com:SpikeInterface/spikeinterface
alejoe91 Mar 23, 2026
f9de051
Centralize segment handling to BaseExtractors
alejoe91 Mar 23, 2026
54a4b18
Add chunkable files 1
alejoe91 Mar 23, 2026
eb19b3d
Add chunkable files 2
alejoe91 Mar 23, 2026
e24251f
Modify node pipeline to work with chunkable objects
alejoe91 Mar 23, 2026
34f6bab
add segments to base recording and sorting for typing
alejoe91 Mar 26, 2026
3807238
Merge branch 'segments' of github.com:alejoe91/spikeinterface into ch…
alejoe91 Mar 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/spikeinterface/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
get_best_job_kwargs,
ensure_n_jobs,
ensure_chunk_size,
ChunkRecordingExecutor,
ChunkExecutor,
split_job_kwargs,
fix_job_kwargs,
)
Expand Down
33 changes: 20 additions & 13 deletions src/spikeinterface/core/base.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from __future__ import annotations

from pathlib import Path
import shutil
from typing import Any
Expand Down Expand Up @@ -87,6 +85,8 @@ def __init__(self, main_ids: Sequence) -> None:
self._main_ids.dtype.kind in "uiSU"
), f"Main IDs can only be integers (signed/unsigned) or strings, not {self._main_ids.dtype}"

self._segments: "list[BaseSegment]" = []

# dict at object level
self._annotations = {}

Expand Down Expand Up @@ -142,11 +142,18 @@ def name(self, value):
# we remove the annotation if it exists
_ = self._annotations.pop("name", None)

@property
def segments(self) -> "list[BaseSegment]":
return self._segments

def add_segment(self, segment: "BaseSegment") -> None:
self._segments.append(segment)
segment.set_parent_extractor(self)

def get_num_segments(self) -> int:
# This is implemented in BaseRecording or BaseSorting
raise NotImplementedError
return len(self._segments)

def get_parent(self) -> BaseExtractor | None:
def get_parent(self) -> "BaseExtractor | None":
"""Returns parent object if it exists, otherwise None"""
return getattr(self, "_parent", None)

Expand Down Expand Up @@ -381,7 +388,7 @@ def delete_property(self, key) -> None:

def copy_metadata(
self,
other: BaseExtractor,
other: "BaseExtractor",
only_main: bool = False,
ids: Iterable | slice | None = None,
skip_properties: Iterable[str] | None = None,
Expand Down Expand Up @@ -570,7 +577,7 @@ def to_dict(
return dump_dict

@staticmethod
def from_dict(dictionary: dict, base_folder: Path | str | None = None) -> BaseExtractor:
def from_dict(dictionary: dict, base_folder: Path | str | None = None) -> "BaseExtractor":
"""
Instantiate extractor from dictionary

Expand Down Expand Up @@ -624,7 +631,7 @@ def save_metadata_to_folder(self, folder_metadata):
values = self.get_property(key)
np.save(prop_folder / (key + ".npy"), values)

def clone(self) -> BaseExtractor:
def clone(self) -> "BaseExtractor":
"""
Clones an existing extractor into a new instance.
"""
Expand Down Expand Up @@ -816,7 +823,7 @@ def dump_to_pickle(
file_path.write_bytes(pickle.dumps(dump_dict))

@staticmethod
def load(file_or_folder_path: str | Path, base_folder: Path | str | bool | None = None) -> BaseExtractor:
def load(file_or_folder_path: str | Path, base_folder: Path | str | bool | None = None) -> "BaseExtractor":
"""
Load extractor from file path (.json or .pkl)

Expand All @@ -839,7 +846,7 @@ def __reduce__(self):
return (instance_constructor, intialization_args)

@staticmethod
def load_from_folder(folder) -> BaseExtractor:
def load_from_folder(folder) -> "BaseExtractor":
return BaseExtractor.load(folder)

def _save(self, folder, **save_kwargs):
Expand All @@ -855,7 +862,7 @@ def _extra_metadata_to_folder(self, folder):
# This implemented in BaseRecording for probe
pass

def save(self, **kwargs) -> BaseExtractor:
def save(self, **kwargs) -> "BaseExtractor":
"""
Save a SpikeInterface object.

Expand Down Expand Up @@ -891,7 +898,7 @@ def save(self, **kwargs) -> BaseExtractor:

save.__doc__ = save.__doc__.format(_shared_job_kwargs_doc)

def save_to_memory(self, sharedmem=True, **save_kwargs) -> BaseExtractor:
def save_to_memory(self, sharedmem=True, **save_kwargs) -> "BaseExtractor":
save_kwargs.pop("format", None)

cached = self._save(format="memory", sharedmem=sharedmem, **save_kwargs)
Expand Down Expand Up @@ -1092,7 +1099,7 @@ def save_to_zarr(
return cached


def _load_extractor_from_dict(dic) -> BaseExtractor:
def _load_extractor_from_dict(dic) -> "BaseExtractor":
"""
Convert a dictionary into an instance of BaseExtractor or its subclass.

Expand Down
Loading