Skip to content

Deduplicate non-unique signal channel ids instead of refusing the file#1868

Open
h-mayorquin wants to merge 1 commit into
NeuralEnsemble:masterfrom
h-mayorquin:fix_nonunique_signal_channel_ids
Open

Deduplicate non-unique signal channel ids instead of refusing the file#1868
h-mayorquin wants to merge 1 commit into
NeuralEnsemble:masterfrom
h-mayorquin:fix_nonunique_signal_channel_ids

Conversation

@h-mayorquin

Copy link
Copy Markdown
Contributor

BaseRawIO requires channel ids to be unique within a stream so a channel can be addressed by id, and currently raises signal_channels do not have unique ids for stream {i} the moment two channels collide. That turns a metadata defect into an unreadable file: some recordings, for example ABF files re-saved by Clampex, carry duplicate channel ids while the original export loads fine, and there is no way for a caller to get at the perfectly good signal behind the collision. The check lives in core rawio, so this affects every format, not just ABF.

This change makes the duplicates unique on the spot by suffixing them, warns that it did so, and proceeds, so the data stays readable and id-based channel selection keeps working. Well-formed files are untouched: the path only runs when ids actually collide, so the common case is unchanged and cannot newly warn or fail. Regression coverage uses a purpose-crafted fixture on gin whose channels all share one id, asserting the file now parses with a warning and that every channel ends up with a unique id.

@h-mayorquin h-mayorquin self-assigned this Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant