Deduplicate non-unique signal channel ids instead of refusing the file#1868
Open
h-mayorquin wants to merge 1 commit into
Open
Deduplicate non-unique signal channel ids instead of refusing the file#1868h-mayorquin wants to merge 1 commit into
h-mayorquin wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
BaseRawIOrequires channel ids to be unique within a stream so a channel can be addressed by id, and currently raisessignal_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 corerawio, 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.