Skip to content

Every tracked osteosarc variant has an explicit outcome

For new acquisition and missing regional annotation handling, see shared Osteosarc data. The results below describe the historical snapshot; the current regression audit records its replay with newer dependencies.

The 2026-09-17 snapshot covers all 182 entries in the website index, not just its 44 vaccine-nominated entries. The union with the 20 historical pVAC alleles and the additional exact indels adds ACSL6 and KTN1: 184 entries. Distinct FCGBP alleles remain distinct. This is not a new genome-wide variant-calling analysis or a statement that nomination establishes tumor specificity.

What ran

All 174 supplied literal GRCh38 alleles were checked against the genomic reference and run through Isovar using original regional records from the January-2025 UCLA T2 STAR BAM. Complete original Ensembl 87 transcript records at these loci (751 transcripts) are retained as a compact reference subset. Ten incomplete entries remain explicitly unavailable, not zero support.

The read policy excludes secondary and duplicate-flagged alignments, requires MAPQ 20, excludes soft clips and merges overlapping paired templates. It does not assert that the original STAR BAM was duplicate-marked. Read segments and RG/QNAME templates are reported separately, neither as independent molecules. Sample pairing follows public collection labels, not an independent genotype fingerprint. Protein assembly requests context for a 25-aa objective (up to 49 aa); Isovar's result filters are unchanged.

T2 outcome Entries
RNA protein reconstructed, passes recorded filters 27
RNA protein reconstructed, rejected by named filters 9
Usable reads but no alternate reads 82
No usable reads under this policy 43
Alternate evidence but no reconstructed protein 12
Noncoding predicted consequence, no reconstructed protein 1
Incomplete literal allele 10

A negative in this T2 library is not absence across samples or technologies. The 36 reconstructed sequences have independent checks against original GTF/FASTA and observed RNA: strand, frame, amino acids, stop and edit interval. The oracle allows additional RNA changes instead of substituting an isolated reference-derived edit for the observed haplotype. MT-ND5 uses the vertebrate mitochondrial code; this assumes mitochondrial origin and does not exclude nuclear mitochondrial insertions (NUMTs). See the NCBI genetic codes and Ensembl GTF specification.

The 27 passing observations produced 5,790 new mutation-overlapping class-I affinity rows, MHCflurry 2.2.1+release-2.2.0, using the archived pVAC HLA configuration and lengths 9–12. They are separately labelled predictions, not measured presentation, tumor specificity, clinical eligibility or rewritten historical pVAC results. Offline CI uses synthetic scores only for transport and selection assertions; it does not claim those scores validate binding.

The additional candidates are not forgotten

  • GTF3C5 and RNF213: the T2 STAR pass reconstructs both deletions, but both fail the recorded alternate-to-other-template ratio filter. Diagnostic sequences remain available without entering the accepted prediction set.
  • GLIS3: the pinned T1 short-read library reconstructs a 46-aa frameshift context and passes under both labelled placement policies. These are two analyses of one library, not independent supporting samples.
  • KTN1: Isovar 1.18.1 corrects insertion-boundary assignments on the unchanged reads. T2 short RNA now has 3 alternate / 0 other templates and ONT has 10 / 3, both passing under both placement policies. The earlier 2 / 1 and 10 / 8 rejections reflected a counting bug. Protein sequences stay 18 and 29 aa. The shorter context supplies 9–12mers, not a 25mer; no threshold is relaxed to make it pass. With matched primary-only/MAPQ20 collection, T2 oncoanalyser still has two alternate templates while the main T2 STAR product has none. The products are not pooled and this discrepancy is not explained away as a MAPQ cutoff.
  • GABBR1–SLC29A1 and OTUD7A–FMN1: actual RNA paths are pinned in the RNA path audit. Their coding frames remain unresolved; no protein is invented from a frame guessed at the breakpoint.
  • DLG5: the deletion affects the canonical start. An internal-deletion peptide is not justified. The completed sequence-resolved audit supports the DNA junction with original tumor alignments and assembled caller contigs; RNA junction and mutant coding frame remain unresolved. The simple nominal deletion/insertion fields do not reproduce the full observed haplotype.
  • AFF3 / KEAP1: ordinary intron-spanning RNA does not discriminate their intronic deletion alleles from reference. Ensembl 87 coding-exon overlap is absent; KEAP1 overlaps a processed-transcript exon.
  • SPRED1, TGFBR2, TCF7L2: remain unvalidated structural leads, with oriented allele, artifact or organoid-versus-patient provenance questions respectively.

The supplementary GLIS3/KTN1 run covers four libraries and two placement policies per gene (16 labelled outcomes), producing 1,400 new affinity rows for six passing observations. Different sample/policy observations have different fragment IDs even when their sequences match. This exposed and fixed a silent overwrite.

What is missing for ten entries

The individual variant pages were also checked and cached, not just the VAF table. Protein labels are not substitutes for a sequence-resolved allele.

Entry Source detail / remaining requirement
CABLES1 G>dup, NM_001100619:c.15_20dup; resolve a versioned transcript and genomic duplication allele
GOLGA6L2 T>dup, NM_001304388:c.2158_2277dup; resolve versioned reference and duplicated sequence
MUC3A A>dup, NM_005960:c.1352_1453dup; resolve versioned reference and duplicated sequence
CCDC40 c.2851_2852ins(32); actual 32-nt inserted sequence is not supplied
DCHS2 c.4019-5_4075delins(60); actual 60-nt insertion and transcript accession clarification needed
GAPVD1 NM_015635:c.186-3_188delinsATTGG; resolve versioned transcript and exact genomic deleted interval
USH2A source A>not_reported, insertion label but p.Cys4728Phe; nucleotide annotation is incomplete/conflicting
COL3A1 splice label without exact genomic allele
FAM157A p.W70_Q71ins14 without exact genomic allele or inserted sequence
OTUD4 p.A153del without exact genomic allele/transcript

These are unresolved inputs, not demonstrated reconstruction failures or evidence of biological absence. The original-run annotation-history question Topiary #339 remains separate.

Reproduce and inspect locally

scripts/osteosarc_variant_audit.py provides explicit inventory, acquire, reference, audit, diagnose, predict, additional, upstream and report stages. Run it from a checkout as python -m scripts.osteosarc_variant_audit STAGE ROOT; the acquisition stage requires the cached original BAM index, reference selection requires the original Ensembl 87 directory, and prediction requires the archived class-I inputs.yml. Acquisition is opt-in and never a CI side effect. additional reuses this checkout's original-read indel fixtures. upstream pins the Isovar 1.18.1 structural/extended-RNA audit and compact original-read evidence from its immutable release commit. That separate audit queries 14 RNA products, preserving dependent processing families rather than pooling them; it is not a 14-library re-run of every one of the 184 entries.

The historical .cache/osteosarc-all-variants-v181-2026-09-17/ contains source bytes and SHA-256 receipts, regional BAM/index, references, per-entry outcomes, accepted and filtered fragments, diagnostic stopping stages, genuine predictions and the full source-linked README.md. The earlier 1.17.4 run is preserved separately; current counts require the corrected optional Isovar floor of 1.18.1. Historical pVAC files and the new RNA overlay remain in their separate archives. The committed tests/data/osteosarc_all_variants/ metadata and references are paired with shared openvax-v1 reads, downloaded on first use and reused offline. CI checks both minimum and latest supported Isovar. Every literal allele drives both diagnostic handoff doors and default acceptance; every accepted fragment runs prediction → save/reload → filters that must change selection.

Current regression audit

The 2026-10-20 replay resolves #494 and #495. Fixture reduction in PR #361 kept only records overlapping the tested loci, but left run.json describing the earlier, broader BAM. The current pin uses the compact BAM identified by source/bam.receipt.json:

Input Records BAM SHA-256 prefix
Historical regional audit 124,046 290d6e56a529
Compact audit input 55,610 1787492e8a67
Local openvax-v1 export used by tests 55,610 212e2e95b907

Complete SAM records, including tags and repeated-record multiplicity, prove that the compact input is a subset of the historical input and equals the shared export. Exported BAM bytes can differ with sorting and compression; the compact and shared record-multiset SHA-256 is c9bb1eccafa90d304c5485cfb11928303da050d3a76d06993fda89341335f0e1. The existing shared-read tests verify that digest.

All 184 entries were replayed separately on the historical and compact inputs with Isovar 1.59.1, Varcode 10.17.3, and PyEnsembl 2.28.3. Their outcomes agree. Against the earlier pin, after sorting unordered transcript IDs, every status, read/template count, reconstructed protein, mutation interval, and filter decision is unchanged. Only five predicted-effect descriptions change:

Entry Change
BAZ1B, PCDH19, SULT6B1 Include all predicted splice alternatives
BTBD11, PPP6R3 Retain the complete SpliceOutcomeSet, including the previous coding consequence conditional on normal splicing

This follows Varcode #603. Predicted alternatives do not establish which splice mechanism occurred. Variant consequences depend on the transcript, as described in Ensembl's consequence definitions. Isovar #530, released in 1.59.1, also prevents PCDH19's nonexonic reference-context exception without removing its predicted splice evidence.

expected.json, run.json, and both fixture manifests now describe this compact-input replay together. New runs record Varcode, PyEnsembl, and pysam versions as well as Isovar. The fixture exporter refuses a run whose BAM, inventory, or reference digest differs from its supplied inputs. Historical audit directories and their original predictions remain available separately.