FAILURE MAP
← Case archive

FA-12566 / Genomic coordinate mapping / Open access

Reference deletions fail to advance alignment position · case 01

Reference deletions fail to advance alignment position.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

A reference-only deletion is omitted from the reference cursor.

VERIFIED REPAIR

Advance reference position by the entire deletion length without advancing query.

Unsuccessful approach: Advancing one reference base per deletion fails multi-base gaps.

Case contract

Map a zero-based query base through M/I/D operation lengths; inserted and absent query bases return None.

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(ops, start, pos):
    q=0;r=start
    for op,size in ops:
     if op=='M':
      if q <= pos < q+size: return r+pos-q
      q+=size;r+=size
     elif op=='I':
      if q <= pos < q+size: return None
      q+=size
     elif op=='D': r+=0
    return None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
o=[('M',2),('D',N+2),('M',3)]
check('after deletion',solve(o,100,2),104+N)
check('later base',solve(o,100,4),106+N)
check('first base',solve(o,100,0),100)
check('before deletion',solve(o,100,1),101)
check('past end',solve(o,100,5),None)
check('negative base',solve(o,100,-1),None)
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 fixtureActualExpectedOutcome
after deletion102105Failed
later base104107Failed
first base100100Passed
before deletion101101Passed
past endNoneNonePassed
negative baseNoneNonePassed

SHA-256 / 6b2f977a3c613e3337a1247e9dcae83437a56b7deb599aba3fdb36bfc8b4bbee

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(ops, start, pos):
    q=0;r=start
    for op,size in ops:
     if op=='M':
      if q <= pos < q+size: return r+pos-q
      q+=size;r+=size
     elif op=='I':
      if q <= pos < q+size: return None
      q+=size
     elif op=='D': r+=1
    return None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
o=[('M',2),('D',N+2),('M',3)]
check('after deletion',solve(o,100,2),104+N)
check('later base',solve(o,100,4),106+N)
check('first base',solve(o,100,0),100)
check('before deletion',solve(o,100,1),101)
check('past end',solve(o,100,5),None)
check('negative base',solve(o,100,-1),None)
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 fixtureActualExpectedOutcome
after deletion103105Failed
later base105107Failed
first base100100Passed
before deletion101101Passed
past endNoneNonePassed
negative baseNoneNonePassed

SHA-256 / 932fe3fb46bde928faf89a89d4e833baa3202e0bf8e8d0ceeb0f766889f77488

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(ops, start, pos):
    q=0;r=start
    for op,size in ops:
     if op=='M':
      if q <= pos < q+size: return r+pos-q
      q+=size;r+=size
     elif op=='I':
      if q <= pos < q+size: return None
      q+=size
     elif op=='D': r+=size
    return None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
o=[('M',2),('D',N+2),('M',3)]
check('after deletion',solve(o,100,2),104+N)
check('later base',solve(o,100,4),106+N)
check('first base',solve(o,100,0),100)
check('before deletion',solve(o,100,1),101)
check('past end',solve(o,100,5),None)
check('negative base',solve(o,100,-1),None)
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 fixtureActualExpectedOutcome
after deletion105105Passed
later base107107Passed
first base100100Passed
before deletion101101Passed
past endNoneNonePassed
negative baseNoneNonePassed

SHA-256 / 1b537d5746ca4cbaf9aab42d7cdae6b85e933769d2cec0e9394981ad3e5efd90

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.145126+00:00.

Case digest / 8ba415cab61dd603eebad9dca2f15f62a37a9a4a096d20099cd09770f5650bcb