openvax / openvax/varcode

Interpret junctions, frameshifts, and extensions in mapped partial SV observations

Open
#466 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
87
Forks
28
Avg merge
3h 27m
Merged PRs (30d)
27

Description

Follow-up to #462 / #465.

With #465, a partial observation (protein_completeness other than start_to_stop) reports a change only where cds_start/cds_end and reference-transcript segments place an observed codon in frame on a differing reference CDS codon. Everything else stays None. That is conservative (never a false False or a truncation from missing coverage), but these observed, mapped structures still read as unresolved even though the observed sequence demonstrates a change:

  1. Junction into other sequence. The fragment reads in frame from reference CDS codons across a fusion breakpoint into partner or unmapped sequence. A mapped codon at reference offset k followed by an observed codon that doesn't map to k+3 shows that the downstream protein differs. Example: partial_end cDNA made of CFTR CDS codons 0–29 followed by BRCA1 codons, with segments for both. The result is (None, None).
  2. Frameshift inside the fragment. A 1-bp inserted or deleted segment between two mapped CFTR segments puts every downstream codon out of frame. They are skipped (k % 3 != 0), so the result is (None, None), while the complete path reports True for the same molecule.
  3. In-frame N-terminal extension. An observed ATG in the 5′ UTR is in frame with the CDS (partial_end). Codons with k < 0 are ignored, so the result is None, where the complete path reports True. This one also needs a decision on whether an observed upstream ATG establishes initiation. Exacto's partial_end only means the first codon is ATG.

Constraints for a fix: a change must be established by observed, mapped sequence, never inferred from missing coverage. Keep the #465 regressions (for example, a mapped reference fragment with a shorter protein stays None). Cover both strands, split segments, and the fusion 3′-partner case.

Found in code review of #465. No current producer emits mapped partial models (Exacto imports carry opaque observed-sequence segments), so this is not a regression.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the implementation and regressions from #465, then trace how mapped partial models and Exacto's opaque observed-sequence segments are handled. Define observed evidence for junctions, internal frameshifts, and in-frame N-terminal extensions without inferring from missing coverage. Done means both strands, split segments, fusion 3′-partner cases, and the #465 regressions are covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
bioinformatics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.