Skip to content
Merged
26 changes: 11 additions & 15 deletions src/spikeinterface/core/frameslicerecording.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,18 @@ class FrameSliceRecording(BaseRecording):
def __init__(self, parent_recording, start_frame=None, end_frame=None):
channel_ids = parent_recording.get_channel_ids()

assert parent_recording.get_num_segments() == 1, "FrameSliceRecording only works with one segment"
num_segments = parent_recording.get_num_segments()
assert num_segments == 1, f"FrameSliceRecording only works with one segment but found {num_segments}"

parent_size = parent_recording.get_num_samples(segment_index=0)
if start_frame is None:
start_frame = 0
else:
assert 0 <= start_frame < parent_size

if end_frame is None:
end_frame = parent_size
else:
assert (
0 < end_frame <= parent_size
), f"'end_frame' must be fewer than number of samples in parent: {parent_size}"
samples_in_recording = parent_recording.get_num_samples(segment_index=0)
start_frame = start_frame or 0
end_frame = end_frame or samples_in_recording

assert end_frame > start_frame, "'start_frame' must be smaller than 'end_frame'!"
assert start_frame >= 0, f"{start_frame=} must be positive"
assert start_frame < end_frame, f"{start_frame=} must be smaller than 'end_frame' {end_frame=}!"
assert (
end_frame <= samples_in_recording
), f"{end_frame=} must be smaller than or equal to {samples_in_recording=}"

BaseRecording.__init__(
self,
Expand All @@ -53,7 +49,7 @@ def __init__(self, parent_recording, start_frame=None, end_frame=None):

# link recording segment
parent_segment = parent_recording._recording_segments[0]
sub_segment = FrameSliceRecordingSegment(parent_segment, int(start_frame), int(end_frame))
sub_segment = FrameSliceRecordingSegment(parent_segment, start_frame=int(start_frame), end_frame=int(end_frame))
self.add_recording_segment(sub_segment)

# copy properties and annotations
Expand Down