@@ -4,26 +4,44 @@ Status: follow-up trajectory #266 after issue #257.
44
55This plan does not reverse the #257 kill decision. It defines one narrow
66way to reopen the FX question without running expensive teacher
7- inference: use precomputed Borzoi scores as the teacher-derived
8- functional substrate, then test whether enough public TraitGym variants
9- overlap to justify the residual-model path.
7+ inference: use public precomputed Borzoi-derived scores as the
8+ teacher-derived functional substrate, then test whether enough public
9+ TraitGym variants can be aligned to justify the residual-model path.
1010
1111## Source Fact Pattern
1212
1313The statgen/fipip repository documents precomputed Borzoi scores for
1414more than 19 million common and low-frequency variants. Those scores are
1515based on hg19 and include both variant-effect predictions and principal
16- components derived from those VEPs.
17-
18- That changes the blocker from "run a teacher" to "prove overlap,
19- coordinate compatibility, score semantics, and reproducibility." If the
20- overlap is too small or the score columns do not support the FX target,
21- the kill decision remains in force.
16+ components derived from those VEPs. The public score table is available
17+ through Google Cloud Storage under
18+ ` seqnn-share/sniff/borzoi_102_annotation_set/ ` , with the main compressed
19+ annotation table published as ` sniff_102_annotations.gz ` .
20+
21+ The practical implementation finding is narrower than the original
22+ overlap wording. The full fipip table is public but large enough that a
23+ first-pass rescue should not pretend to have staged or joined it unless a
24+ local copy is explicitly provided. TraitGym also publishes row-aligned
25+ precomputed Borzoi artifacts for its matched slices, including the
26+ compact ` complex_traits_matched_9/preds/all/Borzoi_L2_L2.plus.all.parquet `
27+ score vector. That artifact is the default executable substrate for the
28+ rescue trajectory. A full fipip table exact join remains an optional
29+ provenance and coordinate-integrity audit, not a prerequisite for the
30+ first cache/baseline gate.
31+
32+ This changes the blocker from "run a teacher" to "prove row alignment,
33+ source identity, score semantics, split integrity, and reproducibility."
34+ If the TraitGym-native Borzoi artifact is missing, row counts do not
35+ match, labels/splits are unusable, the exact fipip join contradicts the
36+ row-aligned substrate when run, or the score columns do not support the
37+ FX target, the kill decision remains in force.
2238
2339Relevant public sources:
2440
2541- fipip precomputed Borzoi score path:
2642 < https://github.com/statgen/fipip >
43+ - fipip public score prefix:
44+ < https://console.cloud.google.com/storage/browser/seqnn-share/sniff/borzoi_102_annotation_set >
2745- Borzoi model repository:
2846 < https://github.com/calico/borzoi >
2947- TraitGym regulatory variant benchmark:
@@ -36,8 +54,13 @@ or cached for a public 10k-50k slice. The rescue hypothesis is narrower:
3654
3755- input: TraitGym variant identity, local edit/action metadata, source
3856 metadata, and optional GenoLeWM/Carbon features;
39- - target: precomputed Borzoi VEP or Borzoi-PC score columns matched by
40- normalized variant identity;
57+ - primary target: TraitGym-native, row-aligned precomputed Borzoi score
58+ artifacts matched to the public TraitGym slice by row identity and
59+ validated against the slice length, labels, split policy, and artifact
60+ receipts;
61+ - optional audit target: fipip Borzoi VEP or Borzoi-PC score columns
62+ matched by normalized variant identity when the large score table is
63+ staged locally;
4164- objective: predict a residual over zero/source-only, Carbon, direct
4265 Borzoi score, and linear/logistic probe baselines;
4366- success: a locked overlap-backed benchmark shows a meaningful gain
@@ -57,39 +80,56 @@ superiority, or proof of useful planning.
5780Lock the rescue-specific contract before building caches:
5881
5982- exact source URLs and revisions;
60- - fipip/precomputed-score access path;
61- - genome build and liftover rules;
83+ - fipip/precomputed-score access path and TraitGym-native Borzoi
84+ artifact path;
85+ - genome build and liftover rules for any exact fipip table join;
6286- variant key normalization for ` chrom,pos,ref,alt ` ;
6387- selected Borzoi VEP/PC score columns;
88+ - row-alignment requirements for TraitGym-native score vectors;
6489- minimum overlap threshold;
6590- leakage and split rules;
6691- claim boundaries.
6792
6893### Stage 1 - Overlap Audit
6994
70- Join TraitGym variants to precomputed Borzoi score identities without
71- training a model. The go threshold is:
95+ Validate TraitGym variants against public precomputed Borzoi artifacts
96+ without training a model. The default go threshold is:
7297
73- - at least 10,000 matched variants in one primary public task slice;
74- - no unresolved ref/alt flips or build mismatches in the matched set;
98+ - at least 10,000 matched variants in one primary public task slice,
99+ where "matched" means the public TraitGym slice and the row-aligned
100+ Borzoi score vector have identical row counts and stable artifact
101+ receipts;
102+ - no unresolved row-order, duplicate-key, label, or split mismatch in
103+ the matched set;
75104- enough positives and negatives after the locked holdout rule;
76105- a publishable overlap manifest with checksums.
77106
107+ If a local fipip score table is staged, the audit should also join by
108+ ` chrom,pos,ref,alt ` with explicit handling for allele flips, strand
109+ issues, multi-allelic rows, and duplicates. If that exact join is not
110+ run, the report must say so directly and must not claim exact fipip
111+ table overlap.
112+
78113If this fails, stop and publish the overlap no-go report.
79114
80115### Stage 2 - Score Cache
81116
82- Materialize only the matched precomputed columns and metadata needed for
83- the experiment. The cache must include source revision, checksum,
84- genome-build handling, matched/unmatched counts, split identity, and
117+ Materialize only the matched precomputed score columns and metadata
118+ needed for the experiment. The first cache should consume the compact
119+ TraitGym-native Borzoi score vector, not the full fipip table. If a
120+ later exact fipip join is run, the cache may add selected fipip-derived
121+ VEP/PC columns behind the same manifest contract.
122+
123+ The cache must include source revision, checksum, genome-build handling
124+ where applicable, matched/unmatched counts, split identity, and
85125redaction-safe commands.
86126
87127### Stage 3 - Baseline Gate
88128
89- Run source-only, label-prior, Carbon where applicable, direct Borzoi
90- score, and linear/logistic probe baselines. The path continues only if
91- the task is not saturated and the Borzoi-derived target has enough
92- signal to make a residual model meaningful.
129+ Run source-only, label-prior, Carbon where applicable, direct
130+ TraitGym-native Borzoi score, and linear/logistic probe baselines. The
131+ path continues only if the task is not saturated and the Borzoi-derived
132+ target has enough signal to make a residual model meaningful.
93133
94134### Stage 4 - Residual Model And Locked Eval
95135
@@ -104,9 +144,12 @@ historical kill report for the teacher-inference path. The follow-up
104144children are:
105145
106146- #267 - lock rescue contract and coordinate rules;
107- - #268 - audit TraitGym coverage by precomputed Borzoi scores;
108- - #269 - build the manifest-backed precomputed Borzoi score cache;
109- - #270 - run the leakage-aware baseline and saturation gate;
147+ - #268 - audit TraitGym-native Borzoi score-vector alignment, and record
148+ exact fipip join status separately;
149+ - #269 - build the manifest-backed precomputed Borzoi score cache from
150+ the compact TraitGym-native score vector first;
151+ - #270 - run the leakage-aware baseline and saturation gate against the
152+ direct TraitGym-native Borzoi score and simple probes;
110153- #271 - train a residual model only after the baseline gate;
111154- #272 - publish the locked result or overlap kill report.
112155
0 commit comments