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

总览 · ← 返回运行 20261002-135403-search-t1-x3-era-mechcheck

节点 n16

nnz-only 加性平移保持父节点 7 默认(--top-k 0 时逐位一致,X3 seed0 A 半 48.1073 与父记录完全吻合);新增 per-type Top-K z 选择开关,实测 Top-K、alpha>1、frac-floor 幅度放大均为负结果。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261002-135403-search-t1-x3-era-mechcheck
父节点n7
子节点—
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 48.49(+0.0) · X3 48.49(+0.0)
审查未审查
用时?从运行开始到结束(或到现在)的挂钟时间。10 分
程序版本8029dcba4e6233fd49a1c79db224f4658e3d7bed (programs.git)

方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。

来自 programs.git 8029dcba4e:solution/METHOD.md

nnz-only 加性平移保持父节点 7 默认(--top-k 0 时逐位一致,X3 seed0 A 半 48.1073 与父记录完全吻合);新增 per-type Top-K z 选择开关,实测 Top-K、alpha>1、frac-floor 幅度放大均为负结果。

方法(默认路径 = 父节点 4/7,未变)

  • 读最后两个输入阶段(按 time 排序,视图无关),对同时出现在两阶段的每个细胞类型计算逐基因差值 delta_g = mean(last|type) - mean(prev|type)。
  • 对抽样输出的每个细胞,仅在其自身 x_g != 0 的位置执行 x_g += alpha * delta_g(alpha=1.0),截到 ≥0。 零元素(dropout)完全不动,保留稀疏共变结构。
  • 类型不在前一阶段 → 原样复制。单输入阶段 → 退化为 copy_last(同样抽样),不崩。
  • 纯 CPU、确定性(np.random.default_rng(seed));不读视图路径/文件名/绝对时间,视图无关。
  • 新增开关 --top-k(默认 0 = 关闭):每类型按 z=|delta|/se 降序只保留前 K 个基因做 nnz-only 平移。 默认输出与父节点逐位一致(新代码仅在 top_k>0 时进入)。

本节点验证了什么(X3 视图,vec-score A 半,共 9 次查分)

PLAN 假设「硬 Top-K 截断可同时改善 covariation 与 de_recovery」半对半错,净效应为负:

  • Top-K(seed 0,alpha=1.0,nnz-only):K=300/500/1000/2000 → 47.69/47.76/47.80/47.90, 全部低于同 seed 基线 K=0 的 48.11。分组看:covariation 确实随 K 减小而升(47.8→48.32), cell_state 也升(48.6→49.01),但 de_recovery 单调暴跌(46.9→44.17@K300,45.3@K2000), 完全抵消增益。这直接证实父节点教训:de_recovery 由平移覆盖的基因数决定—— 任何减少被平移基因数的选择(硬 Top-K 与节点 9 的软收缩同理)都伤 de_recovery。 由于四个 K 一致为负且机制明确,按 PLAN 规则不再耗额度做 3 种子确认。
  • alpha 加大:alpha=1.25 → 48.09(de_rec 升到 47.32 但 cell_state/covariation 各降 ~0.3); alpha=1.5 → 47.86。确认 alpha∈[0.75,1.25] 饱和、1.0 为最优。
  • --frac-floor 0.5/0.25(对低 nnz-frac 基因把幅度放大至 1/frac,最多 2x/4x, 不增加被扰动的非零元素数)→ 47.55/47.19,全部更差:选择性放大幅度同样伤 covariation/cell_state。

结论与下一步

  • 本家族(copy_last 抽样 + per-type 常数平移)在 X3 上的局部最优仍是父配置: 全基因、alpha=1.0、nnz-only、幅度不重排。值层面(方式/幅度/基因选择)三个轴已全部否定。
  • 未再测组成比例感知抽样(父建议 #1):节点 14 已在相同抽样层上对 COMP_ALPHA∈{0.05…1.0} 做过 seed0/seed1 配对裁决,结果为负,机制与平移分支无关,预期不迁移。
  • 通路平滑 delta(父建议 #2)已被节点 8/12 在另外两个分支各测过一轮,均 ≤0.03 噪声内,不再重复。
  • 下一步若还想提分,需换出本家族:如引入外部数据的插值/OT 映射,或改变抽样云本身 (按类型内亚结构重加权),而非继续调平移。

知识来源

无外部生物学知识;仅使用视图内两个输入阶段的实测伪批量差值(通用假设:已测阶段间差值是局部变化方向)。

调研员的计划

名称Top-K z-score 基因选择 + nnz-only 加性平移(攻 covariation)
动机父节点 7 四组中 covariation 最弱(47.62),其次 de_recovery(48.28)。节点 5(Top-K=500 EB 收缩)在 covariation 上达到 49.76、de_recovery 48.69,均优于节点 7 的 47.62/48.28,说明减少被平移基因数、聚焦高置信变化基因能同时改善这两组。节点 9 的 EB 软收缩(连续降权)失败(48.43),但那是软阈值;硬 Top-K 截断(完全不平移噪声基因)是不同机制,尚未在节点 4/7 的 alpha=1.0 加性框架下单独测试过。节点 7 ANALYSIS 明确指出'值层面施加方式已穷尽',但'选哪些基因施加'这一轴尚未在本分支探索。
做法在父节点 7 的 run.py 基础上,修改 type_shifts 函数的基因选择逻辑:
1. 对每个共有类型,按已有代码计算逐基因 delta 和 se,得到 z = |delta|/se。
2. 新增参数 --top-k(默认 0 = 不筛选,与父节点逐位一致)。当 top-k > 0 时,每类型只保留 z 分数最高的 K 个基因(若该类型有效基因不足 K 则全选),仅对这些基因执行 nnz-only 加性平移(alpha=1.0 不变,截 ≥0 不变)。
3. 参数搜索:K ∈ {300, 500, 1000, 2000},alpha 固定 1.0。先用 X3 A 半 seed 0 快速筛选(4 次查分),选出最优 K;再用 3 个 seed(0/1/2)均值确认(额外 2 次查分,共 6 次)。差异需 >0.5 分才视为信号(噪声 2 分,3 种子均值标准误约 1.2)。
4. 若 X3 上确认有效(≥0.5 分提升),用剩余查分额度(约 4-6 次)在 T1 proxy 视图上验证最优 K 是否迁移(T1 final 步长 1d vs X3 0.25d,最优 K 可能不同)。在 T1 proxy 上测 K 和 K±50% 共 3 个值。
5. 单输入阶段退路:len(stages)<2 时退化为 copy_last(无 delta、无选择),与父节点一致,不崩。
6. proxy2 兼容:Qiu E9.0 缺失基因用 E8.5 均值补齐后其 delta≈0、z≈0,自然不会被 Top-K 选中,无需特殊处理。
7. 实现要点:在 type_shifts 中,计算完 z 和 sel 后,若 top_k>0,对 sel 索引按 z 降序排序取前 K 个。改动量约 10 行。默认 --top-k 0 保证与父节点输出逐位一致。
8. 若所有 K 值在 3 种子均值上均无 >0.5 分提升,回退为父节点配置,在 METHOD.md 记录负结果。
风险1. Top-K 可能在 X3(步长 0.25d)上有效但在 T1(步长 1d)上最优 K 不同甚至无效——用剩余查分额度在 T1 proxy 上验证,若不一致则以 T1 proxy 结果为准。2. 减少基因数可能降低 cell_state(平移量减小)——若 cell_state 下降 >1 分而 covariation 提升 <1 分则回退。3. 30 分钟时限紧:实现约 5 分钟,X3 筛选 6 次查分约 6 分钟,T1 proxy 验证 3-4 次约 8 分钟,总计约 20 分钟,留 10 分钟余量。Engineer 应先用最小改动(只加 --top-k 参数和排序截断)跑通,再调参。4. 若 X3 seed-0 上某 K 值提升 <0.3 分,不要追加该值的测试,直接换下一个 K(节点 7 教训:seed-0 上 <0.3 分增益不跨种子复现)。

代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。

对比:父节点版本 f8aad78eb3。改动的文件:solution/METHOD.md +32 −33、solution/run.py +10 −1

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 79e778f..5cf6fb9 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,42 +1,41 @@-nnz_pseudobulk_shift(与父节点 4 逐位一致):copy_last 抽样后,把每类型伪批量差值只加到细胞原本非零的元素上(截 ≥0),保留 dropout 稀疏结构;新增 hybrid/fold/cap 机制均经 X3 实验否定,默认不启用。+nnz-only 加性平移保持父节点 7 默认(--top-k 0 时逐位一致,X3 seed0 A 半 48.1073 与父记录完全吻合);新增 per-type Top-K z 选择开关,实测 Top-K、alpha>1、frac-floor 幅度放大均为负结果。 -## 方法(默认路径 = 父节点 4)+## 方法(默认路径 = 父节点 4/7,未变)  - 读最后两个输入阶段(按 time 排序,视图无关),对同时出现在两阶段的每个细胞类型计算逐基因差值   `delta_g = mean(last|type) - mean(prev|type)`。 - 对抽样输出的每个细胞,仅在其自身 `x_g != 0` 的位置执行 `x_g += alpha * delta_g`(alpha=1.0),截到 ≥0。-  零元素(dropout)完全不动。+  零元素(dropout)完全不动,保留稀疏共变结构。 - 类型不在前一阶段 → 原样复制。单输入阶段 → 退化为 copy_last(同样抽样),不崩。-- 纯 CPU、确定性(`np.random.default_rng(seed)`)。默认输出与父节点 md5 逐位一致(已验证)。-- 新增命令行开关(默认关闭,不影响默认行为):`--mode hybrid/fold/combo`、`--frac-thresh`、-  `--fold-alpha`、`--fold-cap`、`--max-delta`。--## 本节点验证了什么(X3 视图,vec-score A 半)--PLAN 的核心假设(对高 nnz-frac 基因用 dense add 可在不伤 covariation 的前提下抬 de_recovery)**被否定**:--- hybrid(frac>ft 的基因 dense add,其余 nnz-only,alpha=1.0,seed 0):-  ft=0.3 → 44.28(cov 32.2);ft=0.5 → 46.85(cov 42.6);ft=0.7 → 47.89(cov 47.0)。-  对照组纯 nnz 同 seed 为 48.11(cov 47.8)。dense 比例越高 covariation 单调越差,-  且 de_recovery 停在 46.9,与纯 nnz 完全相同——高表达基因 dense add 并不提升 de_recovery。-- fold(线性空间倍数变化乘到非零元素,cap 4):fold_alpha=1.0 → 47.44;0.5 → 47.40;-  combo(add 0.5 + fold 0.5)→ 47.79。全部低于纯 nnz 48.11,且 direction 变差-  (de_direction -0.043~-0.046 vs -0.027)。-- delta 截断 `--max-delta`:cap=0.25 → 48.25,cap=0.15 → 48.31,cap=0.1 → 48.28,cap=0.5 → 48.11-  (seed 0)。3 种子均值(seed 0/1/2):无 cap 48.50,cap0.15 48.53,cap0.25 48.52——-  全部在 2 分噪声内无法区分,cap 的 seed-0 增益不跨种子复现(seed 1/2 上 de_recovery 反而略降)。-  故默认不启用 cap。-- 结论:在 X3 上,「只动非零元素的常数加法平移(alpha≈0.75–1.0,全基因)」是该家族的局部最优,-  ~48.1–48.3(A 半);平移的施加方式(dense/hybrid/fold/截断)都未能超出噪声地改进。--## 没验证什么--- 未在 T1 proxy/proxy2/final 官方视图上跑分(本节点只有 X3 额度);单输入退化路径未改动,按构造等于 copy_last。-- cap/hybrid/fold 在 T1 final(步长 1d)上的行为未测;X3 步长 0.25d,结论外推需谨慎。-- 3 种子均在 X3 A 半上比较;B 半的地板/天花板可能压缩差异。+- 纯 CPU、确定性(`np.random.default_rng(seed)`);不读视图路径/文件名/绝对时间,视图无关。+- 新增开关 `--top-k`(默认 0 = 关闭):每类型按 z=|delta|/se 降序只保留前 K 个基因做 nnz-only 平移。+  默认输出与父节点逐位一致(新代码仅在 top_k>0 时进入)。++## 本节点验证了什么(X3 视图,vec-score A 半,共 9 次查分)++PLAN 假设「硬 Top-K 截断可同时改善 covariation 与 de_recovery」**半对半错,净效应为负**:++- Top-K(seed 0,alpha=1.0,nnz-only):K=300/500/1000/2000 → 47.69/47.76/47.80/47.90,+  全部低于同 seed 基线 K=0 的 48.11。分组看:covariation 确实随 K 减小而升(47.8→48.32),+  cell_state 也升(48.6→49.01),**但 de_recovery 单调暴跌**(46.9→44.17@K300,45.3@K2000),+  完全抵消增益。这直接证实父节点教训:de_recovery 由平移覆盖的基因数决定——+  任何减少被平移基因数的选择(硬 Top-K 与节点 9 的软收缩同理)都伤 de_recovery。+  由于四个 K 一致为负且机制明确,按 PLAN 规则不再耗额度做 3 种子确认。+- alpha 加大:alpha=1.25 → 48.09(de_rec 升到 47.32 但 cell_state/covariation 各降 ~0.3);+  alpha=1.5 → 47.86。确认 alpha∈[0.75,1.25] 饱和、1.0 为最优。+- `--frac-floor 0.5/0.25`(对低 nnz-frac 基因把幅度放大至 1/frac,最多 2x/4x,+  不增加被扰动的非零元素数)→ 47.55/47.19,全部更差:选择性放大幅度同样伤 covariation/cell_state。++## 结论与下一步++- 本家族(copy_last 抽样 + per-type 常数平移)在 X3 上的局部最优仍是父配置:+  全基因、alpha=1.0、nnz-only、幅度不重排。值层面(方式/幅度/基因选择)三个轴已全部否定。+- 未再测组成比例感知抽样(父建议 #1):节点 14 已在相同抽样层上对 COMP_ALPHA∈{0.05…1.0}+  做过 seed0/seed1 配对裁决,结果为负,机制与平移分支无关,预期不迁移。+- 通路平滑 delta(父建议 #2)已被节点 8/12 在另外两个分支各测过一轮,均 ≤0.03 噪声内,不再重复。+- 下一步若还想提分,需换出本家族:如引入外部数据的插值/OT 映射,或改变抽样云本身+  (按类型内亚结构重加权),而非继续调平移。  ## 知识来源 -未使用任何阶段特异生物学先验(无标记基因、无类型清单、无禁窗信息)。唯一假设是通用机制性的:-相邻阶段间测得的伪批量差异是该发育方向变化的可用局部近似。全部统计量从 manifest 指定的输入视图-现场计算,不依赖绝对时间、视图路径或数据集名(视图无关)。+无外部生物学知识;仅使用视图内两个输入阶段的实测伪批量差值(通用假设:已测阶段间差值是局部变化方向)。diff --git a/solution/run.py b/solution/run.pyindex 3648927..3c2be2d 100644--- a/solution/run.py+++ b/solution/run.py@@ -62,6 +62,7 @@ def type_shifts(     z_thresh: float,     min_delta: float,     max_delta: float = 0.0,+    top_k: int = 0, ) -> dict[str, tuple[np.ndarray, np.ndarray]]:     """Per type: (selected gene columns, delta on those columns, nnz frac, fold)."""     out: dict[str, tuple[np.ndarray, np.ndarray]] = {}@@ -82,6 +83,11 @@ def type_shifts(         se = np.sqrt(v_l / len(il) + v_p / len(ip) + EPS)         z = np.abs(d) / se         sel = (z >= z_thresh) & (np.abs(d) >= min_delta)+        if top_k > 0 and sel.sum() > top_k:+            idx = np.flatnonzero(sel)+            keep = idx[np.argsort(-z[idx], kind="stable")[:top_k]]+            sel = np.zeros_like(sel)+            sel[keep] = True         if sel.any():             out[str(t)] = (                 np.flatnonzero(sel),@@ -102,6 +108,9 @@ def main() -> None:     parser.add_argument("--min-delta", type=float, default=0.0)     parser.add_argument("--max-delta", type=float, default=0.0,                         help="if >0, clip per-gene delta to [-max_delta, max_delta]")+    parser.add_argument("--top-k", type=int, default=0,+                        help="if >0, per type shift only the top-K genes by |delta|/se "+                             "(after z/min-delta selection); 0 = no limit")     parser.add_argument("--floor", type=float, default=0.0,                         help="optional soft floor after shift (e.g. -0.1); None = no clip")     parser.add_argument("--frac-floor", type=float, default=1.0)@@ -140,7 +149,7 @@ def main() -> None:         prev = read_stage(args.data, stages[-2], genes)         shifts = type_shifts(             prev.X, labels_of(prev), last.X, labels_of(last), args.z, args.min_delta,-            args.max_delta,+            args.max_delta, args.top_k,         )         del prev         if shifts:

调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。

用到的知识库条目

编号标题出处
k018Damped per-type shift: shrinkage alpha on the observed deltanotes/plan/cards/T1.md
k041Within-stage pseudotime and graph toolkit offline: scanpy DPT/PAGA/Leiden, Palantir, CellRank 210.1186/s13059-019-1663-x (PAGA); 10.1038/s41587-019-0068-4 (Palantir); 10.1038/s41592-024-02303-9 (CellRank 2)
k031Offline OT toolkit in the sandbox: moscot TemporalProblem, wot OTModel, POT, geomloss10.1038/s41586-024-08453-2 (moscot); 10.1016/j.cell.2019.01.006 (Waddington-OT)

分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。

改了什么在父节点 7 的 run.py 中新增 --top-k 参数(per-type 按 z=|delta|/se 降序只平移前 K 个基因,默认 0=关闭,默认输出与父逐位一致);在 X3 上筛选 Top-K/alpha>1/frac-floor 三个方向均为负后,回退为父配置,仅更新 METHOD.md 记录负结果。
各组分数的变化cell_state:噪声内(+0.00,48.75)
covariation:噪声内(+0.00,47.62)
de_recovery:噪声内(+0.00,48.28 与父节点相同,最终配置=父配置)
direction:噪声内(+0.00,49.10)
假设是否成立否
经验
  1. 在 nnz-only 加性平移框架下做 Top-K z 选择(K=300~2000,X3 seed0):covariation 随 K 减小升(47.8→48.32)但 de_recovery 单调暴跌(46.9→44.17),净分 47.69~47.90 全低于基线 48.11——de_recovery 由被平移基因覆盖数决定,任何减少覆盖的选择(硬 Top-K 与节点 9 的软收缩同理)都伤它。
  2. alpha=1.25/1.5 → 48.09/47.86,frac-floor 0.5/0.25(放大低 nnz 基因幅度)→ 47.55/47.19:值层面的方式/幅度/基因选择三个轴在 X3 上已全部否定,alpha=1.0 全基因 nnz-only 是该家族局部最优。
  3. 新开关默认 0=逐位兼容父配置的做法有效:X3 seed0 A 半 48.1073 与父记录完全吻合后才开始筛选,保证负结果可干净回退,榜分不掉。
  4. 耗时从 0.9s 升到 2.0s 仅因 METHOD.md/代码微调后的重跑,无实际意义;内存 0.40GB 不变。
下一步建议
  1. 停止在 copy_last+常数平移家族内调参(针对所有组):三个值层面轴已穷尽,继续调参预期增益 <噪声。
  2. 换家族攻 covariation/de_recovery(针对 covariation 47.62 最弱组):用 external/ 的 Qiu E8.75/E9.0 做类型内亚结构重加权或 OT 映射生成抽样云,而非只平移伪批量。
  3. 若引入外部数据,先在 X3 seed0 单点验证机制有效再扩种子(本节点 K=300 seed0 就 −0.4,机制明确为负即可按 PLAN 规则止损,不必耗额度做 3 种子确认)。

对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。

只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。

分析员

角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。分析员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数?大模型一共回复了几轮(每轮可以调用多个工具)。2
工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。共 1 次:write 1
用时不到 1 分
token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。输入 7,549 · 输出 805 · 思考 98
任务(第一行)分析节点 n16 的打分结果,写 ANALYSIS.json
最后的回答(摘录)
ANALYSIS.json written
原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。/home/spark-longxinyang/vec/runs/formal/20261002-135403-search-t1-x3-era-mechcheck/nodes/16/analyst.jsonl 4 KB
/home/spark-longxinyang/vec/runs/formal/20261002-135403-search-t1-x3-era-mechcheck/nodes/16/analyst.stderr

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数15
工具调用共 20 次:bash 14、edit 4、read 1、write 1
用时6 分
token 数输入 38,184 · 输出 4,709 · 思考 7,271
任务(第一行)按计划修改程序:Top-K z-score 基因选择 + nnz-only 加性平移(攻 covariation)
最后的回答(摘录)
完成。总结:

**做了什么**:在父节点 7 的 run.py 上新增 `--top-k`(per-type 按 z=|delta|/se 只平移前 K 个基因,默认 0=关闭,默认输出与父逐位一致,md5 验证),并按 PLAN 在 X3 上筛选了 Top-K、alpha>1、frac-floor 幅度放大三个方向,全部为负;最终回退为父配置,METHOD.md 记录负结果。

**查分结果**(X3 A 半 seed 0,用 9/20 次额度):基线 48.11;K=300/500/1000/2000 → 47.69/47.76/47.80/47.90(cov +0.5 但 de_recovery −1.6~−2.7,证实 de_recovery 由平移基因覆盖数决定);alpha 1.25/1.5 → 48.09/47.86;frac-floor 0.5/0.25 → 47.55/47.19。vec-check 通过,seed 0/1 确定性验证通过。

**下一步最值得试**:本家族三个值层面轴(施加方式/幅度/基因选择)已穷尽,继续在 copy_last+常数平移内调参无空间;应换家族——用 external/ 的 Qiu E8.75/E9.0 做类型内亚结构重加权或 OT 映射生成抽样云,而非只平移伪批量。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261002-135403-search-t1-x3-era-mechcheck/nodes/16/engineer.jsonl 83 KB
/home/spark-longxinyang/vec/runs/formal/20261002-135403-search-t1-x3-era-mechcheck/nodes/16/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时3 分
token 数输入 12,627 · 输出 1,090 · 思考 6,234
任务(第一行)为节点 n16(改进,父节点 n7)写改进计划 PLAN.json
最后的回答(摘录)
```json
{
  "name": "Top-K z-score 基因选择 + nnz-only 加性平移(攻 covariation)",
  "motivation": "父节点 7 四组中 covariation 最弱(47.62),其次 de_recovery(48.28)。节点 5(Top-K=500 EB 收缩)在 covariation 上达到 49.76、de_recovery 48.69,均优于节点 7 的 47.62/48.28,说明减少被平移基因数、聚焦高置信变化基因能同时改善这两组。节点 9 的 EB 软收缩(连续降权)失败(48.43),但那是软阈值;硬 Top-K 截断(完全不平移噪声基因)是不同机制,尚未在节点 4/7 的 alpha=1.0 加性框架下单独测试过。节点 7 ANALYSIS 明确指出'值层面施加方式已穷尽',但'选哪些基因施加'这一轴尚未在本分支探索。",
  "approach": "在父节点 7 的 run.py 基础上,修改 type_shifts 函数的基因选择逻辑:\n1. 对每个共有类型,按已有代码计算逐基因 delta 和 se,得到 z = |delta|/se。\n2. 新增参数 --top-k(默认 0 = 不筛选,与父节点逐位一致)。当 top-k > 0 时,每类型只保留 z 分数最高的 K 个基因(若该类型有效基因不足 K 则全选),仅对这些基因执行 nnz-only 加性平移(alpha=1.0 不变,截 ≥0 不变)。\n3. 参数搜索:K ∈ {300, 500, 1000, 2000},alpha 固定 1.0。先用 X3 A 半 seed 0 快速筛选(4 次查分),选出最优 K;再用 3 个 seed(0/1/2)均值确认(额外 2 次查分,共 6 次)。差异需 >0.5 分才视为信号(噪声 2 分,3 种子均值标准误约 1.2)。\n4. 若 X3 上确认有效(≥0.5 分提升),用剩余查分额度(约 4-6 次)在 T1 proxy 视图上验证最优 K 是否迁移(T1 final 步长 1d vs X3 0.25d,最优 K 可能不同)。在 T1 proxy 上测 K 和 K±50% 共 3 个值。\n5. 单输入阶段退路:len(stages)<2 时退化为 copy_last(无 delta、无选择),与父节点一致,不崩。\n6. proxy2 兼容:Qiu E9.0 缺失基因用 E8.5 均值补齐后其 delta≈0、z≈0,自然不会被 Top-K 选中,无需特殊处理。\n7. 实现要点:在 type_shifts 中,计算完 z 和 sel 后,若 top_k>0,对 sel 索引按 z 降序排序取前 K 个。改动量约 10 行。默认 --top-k 0 保证与父节点输出逐位一致。\n8. 若所有 K 值在 3 种子均值上均无 >0.5 分提升,回退为父节点配置,在 METHOD.md 记录负结果。",
  "expected_groups": ["covariation", "de_recovery"],
  "risks": "1. Top-K 可能在 X3(步长 0.25d)上有效但在 T1(步长 1d)上最优 K 不同甚至无效——用剩余查分额度在 T1 proxy 上验证,若不一致则以 T1 proxy 结果为准。2. 减少基因数可能降低 cell_state(平移量减小)——若 cell_state 下降 >1 分而 covariation 提升 <1 分则回退。3. 30 分钟时限紧:实现约 5 分钟,X3 筛选 6 次查分约 6 分钟,T1 proxy 验证 3-4 次约 8 分钟,总计约 20 分钟,留 10 分钟余量。Engineer 应先用最小改动(只加 --top-k 参数和排序截断)跑通,再调参。4. 若 X3 seed-0 上某 K 值提升 <0.3 分,不要追加该值的测试,直接换下一个 K(节点 7 教训:seed-0 上 <0.3 分增益不跨种子复现)。",
  "sources": []
}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261002-135403-search-t1-x3-era-mechcheck/nodes/16/researcher.jsonl 4 KB
/home/spark-longxinyang/vec/runs/formal/20261002-135403-search-t1-x3-era-mechcheck/nodes/16/researcher.stderr