Skip to content

Annotate alternative uORF frames and initiation-context mutations alongside canonical UTR effects #583

Open

Description

@iskandr

Variants confined to the canonical 5-prime UTR currently receive FivePrimeUTR in effect_prediction.py and transcript_layout.py, even when they alter an experimentally supported upstream ORF. A uORF start loss, missense, frameshift or stop loss needs its own transcript/ORF-specific consequence alongside the canonical label. Likewise +4 can change both initiation context and a coding residue.

Proposed organization

Keep four independent layers:

  1. Model identity: assembly, transcript + version/release, ORF ID, ordered coding blocks, start/stop positions and reference sequence.
  2. Location: start-context positions (A of ATG = +1, no zero), start codon, coding body, stop codon, and splice path. Roles can overlap.
  3. Sequence consequence: reference/alternate codons and proteins, start gained/lost/changed, synonymous/missense/stop gained/lost, frame change, and altered splice products. A start-codon loss does not prove translation absence; alternative/near-cognate initiation remains a hypothesis. Kozak context is a loose positional prior, never an exclusion criterion or calibrated probability.
  4. Evidence: published Ribo-seq/MS mapped to the exact reference model/residues, patient RNA support, and observed mutant translation/HLA presentation. Missing evidence stays unknown. Native peptides cannot validate a new fusion tail. Downstream main-CDS regulation remains unassessed unless independently modeled.

Clean API and dependency direction

Add a small ORFModel / ORFModelProvider protocol or neutral JSON interchange in Varcode (or a shared lower-level package), without introducing a Varcode -> Isovar dependency. Isovar's offline catalogue can supply models/evidence to that protocol. Model lookups must pin assembly/annotation and resolve the entire spliced coding path + sequence, rather than transfer evidence by gene or unversioned transcript ID alone.

Expose additive per-ORF annotation (for example variant.orf_effects(provider=...)), preserving existing canonical effects. Return every compatible ORF and transcript outcome; retain model IDs in collection identity and export. Reuse the existing transcript-layout, MutantTranscript and effect-hypothesis pipeline with an explicit alternative ORF frame rather than a second annotation engine.

Implementation order / acceptance criteria

  1. REF-validated SNVs/MNVs and indels in supplied ORF models; genomic forward-strand alleles converted into transcript orientation. Include separate Kozak/context annotations and permit partial/missing positions. +4 has both context and coding effects.
  2. Translate affected coding paths, preserving start/stop/frame uncertainty and incomplete downstream sequence. Explicitly identify altered protein intervals and retained native intervals. Report unsupported events as unresolved, not generic silent/noncoding results.
  3. Recompute contexts/frames on realized splice, fusion and rearranged transcript products using existing hypothesis machinery; retain source placements and unknown bases. Compose patient germline/somatic haplotypes and phased edits before translation. Separate model-supported starts from newly created sequence-only candidates.
  4. Add start-gain discovery around changed sequence with explicit search bounds and unavailable/full-scan status; don't infer no uORF from an empty reference catalogue.
  5. Export lossless JSON with model/source pins, reference/alternate products, alternative hypotheses, evidence overlays and why an annotation is unresolved.

Tests should cover minus strand, a start codon/context spanning exons, partial Kozak context, ATG at the first three supplied bases with unverified biological 5-prime completeness, REF mismatch, +4 dual effects, start/stop loss, frameshifts, splice/fusion products, ambiguous phase and compatible isoforms with conflicting effects.

Existing work and primary sources

Isovar #468 adds pinned reference initiation contexts, loose per-position preferences and REF-validated context SNVs: openvax/isovar#468
The evidence catalogue shipped in Isovar #467: openvax/isovar#467
Compose with Varcode #423 and #574 rather than creating an independent uncertainty/export path.

Primary sources:

Activity

  1. iskandr commented on Oct 14, 2026

    @iskandr
    ContributorAuthor

    The combined Variant.effects(extra_orfs=...) / VariantCollection.effects(extra_orfs=...) interface is now released in 10.15.0 via #594. It reuses the current reference-ORF engine, preserves canonical effects, supports germline alternatives and joint cis products, and exposes native ORF references/outcomes. This completes #592's common entry point; it does not complete every item in this broader issue.

    Remaining work, grouped by dependency:

    1. Shared reference contract: consume annotation-derived TranscriptORF placements after Add reference proteomes, TranscriptORF placements, mitochondrial codes and a docs site orfdata#60/include substitution in high priority effects #61 settle, and finish portable reference/effect round trips under Preserve extra ORF identity in effect serialization and CSV summaries #593. These unblock more source classes without adding source-specific caller APIs.
    2. Existing RNA evidence: connect generic observed-RNA resolvers to the mapped ORF-product path, preserving base origins and re-translating the selected ORF. The combined API currently reports incompatible canonical RNA observations explicitly; it never attaches their canonical protein to a different frame.
    3. Broader biology/data: source-backed IRES ORF imports (Import IRES-supported extra ORFs and link their RNA initiation elements orfdata#63) and models for partial, recoded, circular and processed products (Represent alternative initiation sites and incomplete coding boundaries for Varcode orfdata#64, Represent recoded translation paths, readthrough and programmed frameshifts orfdata#65, Represent ORFs on source-defined, circular and other non-Ensembl RNAs orfdata#66, Link polyprotein and precursor ORFs to their processed protein products orfdata#67). Ordinary complete ORFs can be imported now; special models require matching consumer semantics.
    4. Discovery: newly created starts and bounded ORF discovery remain unimplemented, as does inference of downstream CDS regulation.

    Keep this issue open for those remaining requirements; prioritize the reference contract before expanding exceptional translation or discovery.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions