Virtual Embryo Challenge更新于 10-03 20:13(北京时间) / 每 5 分钟更新

← 工作原理 · 原文件 notes/architecture/14_objective_rulers.md(Markdown 源文件已渲染;链接到其他文档的会跳转,指向源码的只显示路径)

14. 本地尺子与优化目标

一句话:官网 T1 真题是“E8.5 + E9.5 → E10.5”,E10.5 真值看不到,所以我们用几道本地题(“尺子”)给候选程序打分。到 2026-10-02 为止,用过的尺子都预测不了官网分。G21 四份预测官网 47.0–47.8;我们流水线自己的 copy_last 官网实测 46.9(不是 50),四份相对它为 +0.1 ~ +0.9,只是历史分差,不是已确立的改进。本文件记录每把尺子是什么、现在怎么用、优缺点。

相关文档:G36 诊断(顶部有 10-02 更正)、Codex 官网校准讨论、机制检查集成报告、G38 X6 方案、数据使用口径、决定记录见 decisions.tsv 2026-10-02 各行。

1. 真题长什么样

项官网 T1:val
数据10x Multiome,UCSD Zhang/Chi 组,未发表;心脏中心取材(心肌各亚型、第二心区、心内膜、前心外膜,加邻近的前肠、肝细胞、神经管、表面外胚层等)
输入 → 目标E8.5(18 型,约 1.7 万细胞)+ E9.5(21 型)→ E10.5
步长每步 1 天,两个输入
新类型官方说 E10.5 的 23 型里 10 个是新名字,约一半细胞没有同名前身
打分四组排名指标(差异表达 DE、方向、细胞状态、共变)完全不用细胞类型:只比较表达矩阵,提交里的细胞名被忽略。冻结探针(在目标上训练的分类器)只用于组成相似度等诊断,不进排名
评分器抽样各阶段先抽 10%(E9.5 参考 1,706 个细胞),目标抽 10% 后对半分(真值 / 天花板);MMD 再抽 2,000,variogram 抽 1,500(data.md 第 64–66 行)
地板官方地板 50 = 评分器自己的 10% 参考样本原样重交。我们流水线的 copy_last(5,118 个随机 E9.5 细胞,经机制检查 run 的护栏交出)是另一批细胞,官网实测 46.9(提交台账 2026-10-02)。比较我们的程序时以 46.9 为参照,不以 50 为参照

扣分机制(G36 原假设,已撤回待验):G36 曾认为“改错方向的变化比不改更糟,所以低于照抄”。以 46.9 为参照后,G21 四份都不低于我们的照抄,这一结论和“抽样不是原因”一起撤回,等抽样实验结果,见 G36 更正。

2. 每把尺子

尺子数据来源输入 → 目标范围现在的角色
proxy官方 T1 训练数据E8.5 → E9.5(1 天,单输入)同官方已弃用为目标(2026-10-02),只在终选诊断里记录
proxy2同上 + Qiu 2024 E9.0 心脏细胞作第 2 输入E8.5 + E9.0(心脏) → E9.5同官方已弃用,只记录
X1Qiu 2024 心脏细胞(晚期;sci-RNA-seq3)E14.0–15.75 + E16.0–17.25 → E17.5–18.75只有心脏终选非劣护栏(计划);现行代码是 X3+X1 护栏
X3Qiu 2024 心脏细胞(早期)E8.75 + E9.0 → E9.5(半天一步)只有心脏优化目标(真值 B 半;Engineer 查 A 半);终选时只凭 X3 选一个候选
X4Imaz 2024 心脏区(10x)E8.75(14–15 体节)+ E9.0(16–18)→ E9.25–9.5(20–24)心脏区只记录;不是独立检验(参与了标签校准,与 X6 共享目标细胞)
X5Imaz 2024 胚胎中段(10x)E8.75(15 体节)+ E9.0(16–18)→ E9.25(20–23)胚胎中段只记录;不是独立检验(参与了标签校准,与 X4 共享目标细胞)
X6Imaz 2024 心脏区(10x),X6_imaz_heartregionE8.0 + 14 体节 → 24 体节(步长更接近 1 天)心脏区终选非劣护栏(计划);已建成并验证(G38 §8),标签方案 B 落地后需重跑。Qiu 版因下载太慢暂缓
X2MOSTA 空间数据E14.5 + E16.5 → E15.5全胚胎属于 T2,不用于 T1

所有阶段都在 T1 禁窗 (9.5, 13.5] 之外。

3. 优缺点

尺子好处问题
proxy和官方同一数据源;新类型占比接近(48%)只有一个输入,结构不是外推;奖励的改动方向在真题上是错的(G21 赢家本地 56.8 → 官网 47.2);两时间点方法在它上面退化成照抄
proxy2想补成两输入第 2 输入只是心脏细胞,程序不用它时与 proxy 逐位相同,区分不了方法
X1两输入外推,结构对;4 个 G21 赢家在打补丁后的 X1 上全部低于照抄(原以为与官网符号一致,但那是以地板 50 为参照,见 §5)发育阶段晚得多(E14–E18),只有心脏,几乎没有新类型;平台和官方不同
X3两输入外推;发育时期和真题输入同一段;补丁后能测出重加权类程序只有心脏;步长半天;新类型约 0%;平台不同(sci-RNA-seq3);单独用时 A 赢家仍高 0.46,符号不对(噪声量级)
X410x 平台,和官方一致;心脏区和 X3 一样步长短;样本少
X510x;范围比心脏大,能测到“心脏 vs 非心脏”的组成调整补丁后 4 个赢家全部大幅低于照抄(−7 左右),区分度要再看
X610x、心脏区、步长更接近 1 天;seed 间稳定目标只有一个样本;DE 信号很弱(chance 0.019),扣分来自 direction / cell_state / covariation;区分不了 C/D 与 heart_jcf_peri;与 X4 共享目标细胞

4. 现在怎么用(2026-10-02 官网校准后的决定状态)

依据:决策台账 2026-10-02 最后几行(“官网校准”“官网校准后的方向”)与 Codex 校准讨论 Q3。同日较早一行“目标 = X3 与 X6 等权平均”不再沿用。

已实现(机制检查 run ERA_mechcheck.yaml 的配置):

scoring:
  objective:
    components: {X3: 1}          # 搜索分数 = X3(真值 B 半);Engineer 查分用 X3 的 A 半
    holdout: [X1]
    record: [X4, X5, proxy]      # 只记录
    guard: {baseline: copy_last, rulers: [X3, X1], margin: 0}   # 3 seed 均值都须高于 copy_last

新终选护栏(2026-10-02 已实现,非劣护栏;旧写法 {baseline, rulers, margin} 照旧可用):

    record: [X4, X5, X6, proxy]  # 护栏里的测试尺子(X1、X6)须同时列在 holdout 或 record
    guard:
      baseline: copy_last
      select_on: X3              # 只取 X3 三 seed 均值最好的一个候选
      require_gain_on: X3        # 新 seed 上 X3 配对差均值 > 0
      noninferior: {X1: 1.0, X6: 1.0}   # 配对差单侧 (1−alpha) t 下界 > −容差
      fresh_seeds: [3, 4, 5, 6, 7]      # 程序 seed = 评分 seed;不得与 0 / 晋级 seed(/ tune 评分 seed)重叠
      alpha: 0.025

代码:agent/search/scoring_def.py(normalize_ni_guard、noninferiority_verdict)、agent/search/final.py(run_ni_guard);测试 agent/search/tests/test_ni_guard.py。失败、证据不全或该候选在 final 视图上跑不通 → 交 copy_last,不再尝试其他候选。SELECTION.md 写逐 seed 分数、配对差、均值、下界和判定;final_guard 事件存同样的数字;锁与评估规格(evaluation spec)记录整个护栏配置。

原计划(设计依据):

  1. 搜索目标仍是 X3 相对同流程 copy_last 的提升。
  2. 终选只凭 X3 选定一个候选,在预留的新 seed 上复核。
  3. 对 X1、X6 做非劣检验:配对差 Δ_j(候选 − copy_last,配对单位是独立程序输出 seed,同一 seed 内多个评分 seed 先聚合)的置信下界须满足 LCB(Δ_j) > −1,j ∈ {X1, X6};容差 1 分是人为设定的风险预算,不是实测噪声。初版建议两把各用单侧 97.5% 下界。
  4. 不满足或证据不足 → 交同版本、同抽样流程的 copy_last,并在 SELECTION.md 写明。护栏结果不反馈给本次搜索。
  5. 实现后在固定程序集合(copy_last、G21 四程序、旧种子、机制检查候选)上回放,报告通过 / 失败 / 区间过宽无法判断。

只记录:X4、X5、proxy、proxy2 只记录,不参与选择。

没有独立的本地终点:

  • X4、X5 已用于标签方案校准,即使设为 record 也不等于从未参与开发;
  • 目标细胞重叠(重叠审计):X4 与 X6 共享 814 个目标细胞,X4 与 X5 共享 699 个;X1/X3 缺完整原始细胞标识,无法认证无重叠;
  • 因此方案比较(含 A/D 消融)以官网分为主终点,例如 A/D 用两臂实际终选文件的官网配对差。旧版“X4/X5 相对 copy_last 的平均提升作主指标”不再沿用。官网结果仍只是开发榜上的条件性比较。
  • 正在有计划地建“官网分 vs 本地尺子分”账本:按预测 SHA 去重,记录方法谱系、实际终选 / 回退、输出细胞数、版本和评分上下文。

仍有效的规定:

  • 程序不能识别测试题:所有视图统一成同一套格式(文件名、manifest 字段、基因面板),终选和晋级前再在“伪装视图”上重跑一次,预测不同就判为 view_dependent,不能当父节点、不能入选。起因见 A/B/C 深度报告:A/B 的冠军在 X3/X1 上故意照抄,只在正式视图上做改动。
  • 标签(2026-10-02 对照后,标签方案对照报告):外部测试题输入的 celltype 只用官方 E8.5/E9.5 词汇加 Unknown(细胞保留)。每把尺子的方案写在 data/external/label_maps/T1_schemes.yaml(build_test_view 默认读它;$VEC_LABEL_SCHEME 或 label_scheme= 只用于对照):
    • A:三级映射表 T1_official.yaml v2(exact / coarse / unknown;不再默认 anterior;E9.5 名只用于纯改名)。A_exact 只用 exact 级,A_coarse 加上 coarse 级。
    • B:只在官方已发布 E8.5/E9.5 细胞上训练的分类器(固定 610 个跨平台特征基因、PCA + 逻辑回归、OOF 校准的概率 / 间隔 / 距离拒判,距离按输入阶段做平台尺度校准);输入按阶段位置用对应阶段的分类器(最后输入 → E9.5),两输入的同名结构与 final 一致。
    • 当前选择:X3 → B,X4 → B,X5 → B,X1 → A_exact(保守 A),X6 → B(决定先验,未在本次对照中验证,需在 X6 上复核)。选择依据:程序在尺子上执行的标签操作与 final 一致的程度(覆盖),以及与官网相对我们 copy_last 的差(A +0.3、B +0.9、C +0.1、D +0.3)一致的程度;B 在 X3/X4/X5 上与官网差的平均偏差最小(1.79 / 0.67 / 1.72),A 两臂与 B_joint 在 X3 上把重加权赢家判为 +2 ~ +5、在 X5 上因删除 Neural Tube 判为 −8.5。
    • 原作者标签不进视图:逐细胞在中性副本旁的 labels.tsv.gz,作者 × 新标签交叉表在 harness 侧 sidecar。
    • 官网打分不看细胞名,标签只影响程序在测试题上的行为是否和在正式题上一致。不用评分器的冻结探针打标(在目标上训练,会泄露)。
    • 证据边界:X3 上 A 两臂把重加权赢家判为 +2 ~ +5(尺子特有的组成趋势),B 不会;但任何臂下 X3/X1 都对 B-7 罚 −4 ~ −6,与官网(+0.9)不符,标签解决不了这一点。X4 的 DE 组无信号。Unknown 只出现在尺子上,是一个可被程序识别的尺子特征(伪装视图检查看不出),见报告 §5。

5. 补丁后的检验(G21 四个赢家,3 seed 均值减 copy_last)

尺子ABCD常数位移
X3+0.46−5.87−1.02−0.28−7.82
X1−4.78−6.42−2.46−0.36−9.23
X4+1.81−3.66−1.31+0.59−7.79
X5−7.43−6.75−7.50−7.28−12.15
X6(G38 §8.3,seed 0–2,标签 v1)−1.55−5.34−1.17−1.17−12.60
官网 − 我们的 copy_last(46.9)+0.3+0.9+0.1+0.3未交

官网原始分:A/B/C/D = 47.2 / 47.8 / 47.0 / 47.2。

注意:

  • 早先的符号验证用错了参照。旧版本表把官网一栏写成“全部低于地板”,并据此认为 X1、X6(以及 X5)“与官网符号一致”。那是以官方地板 50 为参照;正确的参照是同一流程的 copy_last(官网 46.9)。以 46.9 为参照,官网四份都略高于照抄,X1、X5、X6 把四份全判为负,方向与之不符;X3 对 B 罚 −5.9,而 B 是官网最高的一份。
  • 官网一栏是单次提交之间的历史分差,不是受控配对实验,官网噪声未测,不能据此断言哪把尺子对、哪把错,也不能断言这些方法有益。
  • 官网排序 B > A = D > C,没有一把尺子能复现。要校准本地尺子与官网的关系,需要“官网 vs 本地尺子”账本里的新方法或新一批冻结预测前瞻验证。

6. 待定

  • 抽样实验(用户 10-02 ②):“抽样 vs 完整”在本地比较(完整 E9.5 超过官网 5,118 上限,无法提交);随机 / 按输入类型分层 / 分层后匹配输入均值三臂,加零发育变化对照。G36 撤回的两条结论等它定。
  • 实现计划中的护栏(X3 选一个候选,X1/X6 非劣,容差 1 分,新 seed 置信下界)并回放;统一评分口径(最终标签、输出细胞数、真值分片、程序 / 评分 seed、锚点)。
  • “官网 vs 本地尺子”账本:建表规范与首批条目。
  • X6 在标签方案 B 下重跑(T1_schemes.yaml 已设 X6 → B;对照只覆盖 X1/X3/X4/X5)。
  • 标签:Unknown 是尺子特征(只在尺子上出现),是否要在 viewcheck 静态扫描里对读 "Unknown" 的代码告警;外部训练数据(final 视图 external/)若被程序按标签使用,是否也走同一接口(agent.search.labels.label_cells)。
  • 独立本地终点:目前没有;若要有,需此前未参与开发(包括标签选择)的完整样本。
  • G26:P3 期间只把 Qiu E9.25 移入训练,E9.5 继续只做测试(暂定,10-20 前再讨论)。
  • 数据合规按任务执行:每个任务只用本任务允许的数据;含 T1 禁窗细胞的 Qiu 整簇原始文件已移出 Spark(data/external/SPARK_EXCLUDE)。