SACGF / SACGF/variantgrid

Splice events: describe the junction behind a label (transcript + exons, or breakpoints)

Open
#1,877 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.