Fix three validator false positives on real-world data - #36
Merged
Conversation
Real-fixture verification (GENCODE, GRIDSS) surfaced three validators flagging valid canonical data: - GFF3: comma-separated custom attributes (e.g. GENCODE tag=basic,Ensembl_canonical) were rejected because the multi-value whitelist was treated as exhaustive. Only reserved single-value attributes are now flagged; custom and reserved multi-value attributes may be comma-separated. - GTF: gene-type features were warned for missing transcript_id, which GENCODE/Ensembl legitimately omit on genes. transcript_id is now required only on non-gene features. - VCF: single-breakend ALTs (a contig with a leading/trailing ".", e.g. GRIDSS "TTTT." per VCF 4.2 section 5.4.9) were flagged as non-spec; now accepted. Adds targeted unit tests for each fix and strengthens the real-fixtures suite to assert every canonical fixture validates with zero diagnostics, so a future false positive on real data fails CI.
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.
Summary
The real-world fixtures added in #35 (now merged) immediately caught three validators flagging valid canonical data as invalid. This fixes all three (each spec-backed) and strengthens the fixture suite so it can't happen again.
What real data exposed
tag=basic,Ensembl_canonical,GENCODE_Primarygene-type features (notranscript_id)transcript_idonly on non-gene features — genes legitimately omit itTTTT./.AATCAfter the fixes, all 11 canonical fixtures validate with zero diagnostics.
The guard (why this can't regress)
The #35 verify suite only asserted "doesn't throw" — which is why those false positives slipped through green. This adds a per-fixture assertion that canonical data produces zero diagnostics (with a
maxDiagnosticsescape hatch for any future genuine advisory). So a new false positive on real GENCODE/GRIDSS/etc. output now fails CI.Tests
tag=a,ballowed; reserved single-valueID=a,bstill flagged; reserved multi-valueParent=a,ballowed.genefeature withouttranscript_idnot warned;exonwithout it still warned. (Updated one existing test that had asserted the old behavior via ageneline.)