SpikeInterface / SpikeInterface/spikeinterface

Make `num_channels` available on `BaseRecordingSegment`

Open Beginner friendly
#4,510 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Python
Stars
847
Forks
280
Avg merge
3d 9h
Merged PRs (30d)
29

Description

Currently BaseRecordingSegment has no concept of channel count. It knows its time dimension (sampling frequency, time vector, num_samples) but not its channel dimension. This forces segment subclasses to work around the limitation in various ways:

Passing num_channels from parent to segment at construction:

Inferring channel count from data shape:

Fetching a sample just to get the shape:

The parent Recording always knows num_channels at the time it calls add_recording_segment. The proposal is to have BaseRecording.add_recording_segment() set num_channels on the segment automatically. This would:

  • Give all segments a num_channels attribute for free, with the Recording as the single source of truth
  • Eliminate the need for subclasses to store it independently
  • Remove workarounds like 1-sample fetches to get channel count
  • Make pre-allocation of output arrays straightforward without fetching data first

The change is small (a few lines in BaseRecordingSegment.__init__ and BaseRecording.add_recording_segment) and fully backwards compatible since existing subclasses that set num_channels themselves would continue to work.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with BaseRecordingSegment.init and BaseRecording.add_recording_segment, then review the listed segment implementations in binaryrecordingextractor.py, generate.py, zero_channel_pad.py, and drift_tools.py. Done means segments receive the parent Recording's channel count automatically and the existing channel-count workarounds can be addressed without changing the public behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, data
Issue type
Feature
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.