FA-12561 / Genomic coordinate mapping / Open access
Intronic coordinate ties choose the wrong transcript anchor · case 01
Intronic coordinate ties choose the wrong transcript anchor.
ROOT CAUSE
Intronic notation always uses the left reference exon boundary.
VERIFIED REPAIR
Choose the nearest boundary, break ties toward transcript upstream, and orient sign by strand.
Unsuccessful approach: Nearest-boundary repair retains reference-left tie breaking on negative strands.
Case contract
For reference base p strictly inside the intron between exon-end base left and exon-start base right, return [anchor,signed distance]; upstream transcript boundary wins ties.
Why this case matters
An abstract offline coordinate model isolates this software mapping defect; it does not model biological interpretation.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(left, right, p, strand):
return [left,p-left]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
l=10*N;r=l+8
check('plus near right',solve(l,r,l+7,'+'),[r,-1])
check('minus tie',solve(l,r,l+4,'-'),[r,4])
check('plus tie',solve(l,r,l+4,'+'),[l,4])
check('plus near left',solve(l,r,l+1,'+'),[l,1])
check('minus near left',solve(l,r,l+1,'-'),[l,-1])
check('minus near right',solve(l,r,l+7,'-'),[r,1])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| plus near right | [10, 7] | [18, -1] | Failed |
| minus tie | [10, 4] | [18, 4] | Failed |
| plus tie | [10, 4] | [10, 4] | Passed |
| plus near left | [10, 1] | [10, 1] | Passed |
| minus near left | [10, 1] | [10, -1] | Failed |
| minus near right | [10, 7] | [18, 1] | Failed |
SHA-256 / 489b9e63aec8d1f6e5c49c285213c524b1c7f5fa5527b6801c4a4e230a6dba63
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(left, right, p, strand):
anchor=left if p-left <= right-p else right
return [anchor,(p-anchor)*(1 if strand=='+' else -1)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
l=10*N;r=l+8
check('plus near right',solve(l,r,l+7,'+'),[r,-1])
check('minus tie',solve(l,r,l+4,'-'),[r,4])
check('plus tie',solve(l,r,l+4,'+'),[l,4])
check('plus near left',solve(l,r,l+1,'+'),[l,1])
check('minus near left',solve(l,r,l+1,'-'),[l,-1])
check('minus near right',solve(l,r,l+7,'-'),[r,1])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| plus near right | [18, -1] | [18, -1] | Passed |
| minus tie | [10, -4] | [18, 4] | Failed |
| plus tie | [10, 4] | [10, 4] | Passed |
| plus near left | [10, 1] | [10, 1] | Passed |
| minus near left | [10, -1] | [10, -1] | Passed |
| minus near right | [18, 1] | [18, 1] | Passed |
SHA-256 / 0f3563317350d8888a30dd70bce3894a1649988e57e4e5187bd1030a3fa2b463
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(left, right, p, strand):
anchor=left if p-left < right-p or (p-left==right-p and strand=='+') else right
return [anchor,(p-anchor)*(1 if strand=='+' else -1)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
l=10*N;r=l+8
check('plus near right',solve(l,r,l+7,'+'),[r,-1])
check('minus tie',solve(l,r,l+4,'-'),[r,4])
check('plus tie',solve(l,r,l+4,'+'),[l,4])
check('plus near left',solve(l,r,l+1,'+'),[l,1])
check('minus near left',solve(l,r,l+1,'-'),[l,-1])
check('minus near right',solve(l,r,l+7,'-'),[r,1])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| plus near right | [18, -1] | [18, -1] | Passed |
| minus tie | [18, 4] | [18, 4] | Passed |
| plus tie | [10, 4] | [10, 4] | Passed |
| plus near left | [10, 1] | [10, 1] | Passed |
| minus near left | [10, -1] | [10, -1] | Passed |
| minus near right | [18, 1] | [18, 1] | Passed |
SHA-256 / fb38ecdfc24e60cffadec433d11e01f65818ff0f4c7428707e29c4f912648d8d
Verification & scope
Synthetic coordinate fixtures only; not a production annotation or alignment implementation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:38:58.115700+00:00.
Case digest / 94348fa3b020da539c42745f97df580c36be95b5d730cf037dfab6b3238e2c24