Splice events: describe the junction behind a label (transcript + exons, or breakpoints)
- Dominant language
- Python
- Stars
- 30
- Forks
- 3
- Avg merge
- 9h 28m
- Merged PRs (30d)
- 42
Description
🤖 Written by Claude.
Follow-on from #1835 (commit 3300347c6). A splice label is now the identity of a splice event: a classification submitted as `EGFRvIVa` canonicalises to `v_iva`, validates (known gene, accepted label shape) and mints `` with nothing behind it. That is deliberate - labs, OncoKB and CIViC all key on the nickname, and there is no registry that issues anything better - but the nickname says nothing about what the junction *is*. `AR-V7` is "the seventh AR variant described", `EGFRvIII` is "variant III"; only `exon 14 skipping` is structural.
`genes/models/models_splice_event.py:SpliceEvent` holds a per-build breakpoint pair for the three TSO 500 junctions and nothing else. Proposal: make it a curated, optional description of what a label means, never a gate on import.
## What to hold
Two kinds of junction, described differently:
- **Exon skipping** (EGFRvIII = NM_005228 exon 1 → exon 8, MET ex14 = NM_000245 exon 13 → exon 15): transcript plus donor exon and acceptor exon. Build-independent; the breakpoints in each build are derivable from the transcript's exon table we already hold, which is what `genes/migrations/0093_seed_splice_events.py` did by hand.
- **Cryptic exon** (AR-V7 = exon 3 → cryptic exon 3b, ENST00000504326): not expressible against the reference transcript, so a per-build breakpoint pair as today, or the alternative transcript that carries it.
So: `SpliceEvent` gains nullable `transcript`, `donor_exon`, `acceptor_exon`; the existing build/contig/donor/acceptor become derivable for the skipping kind and stay authoritative for the cryptic kind.
## What it buys
- The case report can print "exons 2-7 deleted" / "exon 14 skipped" next to the nickname.
- Build coordinates for a newly described label without a schema deploy.
- Detecting when two labels describe one junction (a lab writing `EGFR exon 2-7 skipping` for `EGFRvIII`), which canonicalisation cannot do since it only normalises spelling.
- An HGVS RNA-level form (`r.`) for the skipping kind, if anything downstream wants one.
## Not in scope
Changing the identity. The label stays what the alt carries and what a classification is matched on; this is description on top of it.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with genes/models/models_splice_event.py:SpliceEvent and compare its current fields with genes/migrations/0093_seed_splice_events.py. Trace how the model’s build, contig, donor, and acceptor values are used, especially for the three TSO 500 junctions. Done means nullable transcript and exon fields support exon-skipping descriptions while existing per-build breakpoints remain authoritative for cryptic junctions and imports are not gated by descriptions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, database
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100