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

总览 · ← 返回运行 20261003-004922-search-t2-heart-interp-g24-D

节点 n20

实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-004922-search-t2-heart-interp-g24-D
父节点n19
子节点n22
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 61.41(+0.0) · proxy 61.41(+0.0) · 3 次复测均分 61.33
审查通过 检查1(越界读取):未发现问题。run.py 只经 load_manifest/read_stage/panel_genes 读 --data 视图内路径;_load_external_prior (run.py:199-240) 仅遍历 manifest['external'] 挂载的视图内文件;无绝对路径、'..'、/mnt、/home、data/raw、打分器路径或联网下载(grep 无命中)。; 检查2(硬编码目标统计量):未发现问题。run.py:60-71 的常量均为机制超参(k、strength、max_frac、alpha、beta),无写死的细胞类型比例、细胞数、基因列表或…
用时?从运行开始到结束(或到现在)的挂钟时间。12 分
程序版本f6675a2f156172f2376230fe094dff3ed149becb (programs.git)

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

来自 programs.git f6675a2f15:solution/METHOD.md

实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。

方法族 / 实现

family_id = T2HI-08(外部型内方差先验的方差增强),实现于 run.py::_var_expand + _load_external_prior:

  1. 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑保持关闭(alpha=0)。
  2. 新增 --qiu-var β(默认 0 = 完全跳过):对每个 ≥5 细胞的类型,X_new = (1−f_g)·μ_type + f_g·X,f_g = clamp(r_g^β, 0.25, 4),clip 到 ≥0(log1p 域)。μ_type 不动、细胞沿自身偏差双向外扩 → 保均值、保协方差形状、增型内离散。
  3. 外部先验自动检测(PLAN 步骤0 的免费诊断):遍历 manifest external/,按数据内容(基因重叠 ≥30 且与本板类型词汇有交集)判断可用性,不看数据集 id / 路径(视图无关)。
  4. 单输入阶段退路:机制只作用于最终输出表达,不依赖输入阶段数;单阶段分支同样接入。

免费诊断结果(0 次查分)

本视图 external/ 只挂了 mosta_e95_v0(MOSTA E9.5 空间数据,496/500 基因重叠,但类型词汇为 Brain/Heart/Mesenchyme 等粗标签,与本板 E8.25/E9.5 官方词汇(V-CM、EXE-Endoderm…)零交集);PLAN 预期的 Qiu 2024 E9.0 未挂载。→ 按 PLAN 条款走对角退路:r_g 用本板该型自身 SD 结构,f_g = 1+β 均匀双向外扩(var_source 日志确认为 diagonal)。

机制生效证据(seed 0,全部 17616 细胞被改动,0 跳过)

β方差比 after/beforemean|Δμ_type|改变>1%细胞比例
0.051.0710.01399.99%
0.151.2220.040100%
0.301.4680.079100%

方差随 β 单调上升、型均值近似不动(Δμ 仅来自 clip≥0)、上/下均值细胞反向远离 → 是离散度变换而非位置平移(与常数位移可区分:常数位移型均值移动、方差不变)。坐标、细胞数、类型组成完全不动 → local_spatial/shape_scale 仅经表达相关项微动,符合 PLAN 预期指纹。

对照结果(mechanism_off_control)

--qiu-var 0(默认值)完全跳过增强步。关闭态输出与父节点19(=父17)管线输出 X 与 spatial_3D 均 np.array_equal = True(逐位一致,本节点直接验证);查分确认四组分与节点19 A 半记录逐一相同(65.93/63.83/61.70/52.68,board 61.033)。

机制检验:方向弱正、幅度不足(vec-score A 半,seed 0,共 5 次查分)

配置boardcell_stateexpression_changelocal_spatialshape_scale
关闭对照 β=0(=父)61.03365.9363.8361.7052.68
β=0.05 对角61.091 (+0.06)66.13 (+0.20)63.57 (−0.26)61.9852.68
β=0.15 对角61.085 (+0.05)66.20 (+0.27)63.41 (−0.42)62.0552.68
β=0.30 对角60.663 (−0.37)65.40 (−0.53)63.59 (−0.24)60.9852.68

cell_state 随 β 先微升后降(峰值 ~0.15),expression_change 微降,净榜分增益 ≤ +0.06,远小于 1 分止损阈值(PLAN 步骤3:三档全部未超对照 +1 → 提交 β=0)。未提交非零 β 的理由:+0.05 在 A/B 半与种子噪声内无法区分,且以 expression_change 下降为代价。这与节点19合起来给出双侧证据:型内方差在本 board 已接近参考最优(收窄 −4.76/5%方差、放大 +0.27/22%方差),表达侧对角/低通类修饰均已到顶。

提交内容

默认参数即关闭态,输出与父节点17/19逐位一致(零损失保底)。vec-check 通过;seed 0/1 各自确定运行;EXECUTION.json 为 {"gpu": false}。

生物学知识来源

无新增外部生物学知识。外部先验使用逻辑仅依赖视图自带 external/ 数据(本视图为 MOSTA E9.5,已合规过滤),且因类型词汇不可映射而未实际使用其数值。

未验证

  • 外部(Qiu 类)方差比路径的实际效果:本视图无可用外部 scRNA(类型词汇零交集),_load_external_prior 的比值分支只在代码层验证了触发条件,未能在数据上跑通端到端;若 final 视图挂载了词汇可映射的 Qiu E9.0,该分支会自动启用(但仍受 β 默认 0 保护,不会改变提交行为)。
  • β ∈ (0.15, 0.3) 细网格与 clip 前负值处理变体(止损后不再消耗额度)。
  • B 半与 final 视图(关闭态与父逐位一致,迁移性等同父节点17)。

调研员的计划

名称T2HI-08 Qiu E9.0 型内方差增强(保均值、双向外扩,对照 β=0)
动机表达侧两条降多样性路线均已证伪:节点19 型内 kNN 表达平滑使 cell_state 随 alpha 单调大跌(0.05 时 −4.76、0.10 时 −7.55),节点12 型×基因趋势位移 6 档全掉分;教训明确——表达修改必须保/增型内异质性。坐标侧已平台(节点15/17 local_spatial 60.40→62.34,mf 0.45–0.8 榜分 61.0–61.1 不再动),父19 ANALYSIS 明确要求把查分预算全投表达侧新机制。四组分中 cell_state 66.70 与 expression_change 63.90 自节点2 起从未被表达侧机制触碰。方向库 T2HI-08(外部 Qiu 2024 早期心脏 scRNA 补类型内方差)正为此设计:Qiu E9.0 在允许阶段(不在 T2 heart 禁窗 (8.25,8.75)/(9.5,13.5] 内)、心脏谱系、可作型内方差的独立先验。
做法基线=节点17管线(mix + procrustes + kNN 坐标平滑 k=20, strength=1.5, max_frac=0.45, k_adaptive;保留节点19 的表达平滑代码但 alpha=0 关闭)。新增 --qiu-var 步骤,在最终输出表达上执行:
0) 免费诊断(0 次查分):从视图 external/ 读 Qiu 2024 E9.0,标签映射到本板类型词汇,统计与本板 500 基因面板的重叠数与每型中位方差比 r=SD_qiu/SD_mix。重叠<30 基因→退路:对角方差增强(σ_g 用本板该型该基因自身 SD,机制同构、不依赖外部数据);重叠≥30 才用 Qiu 比值。
1) 对每型(mix 中该型≥5 细胞,否则跳过)每个重叠基因:f_g=clamp(r_g^β, 0.25, 4.0),X_new=(1−f_g)·μ_type + f_g·X;非重叠基因不动。μ_type 不动、细胞双向远离型均值 → 增方差保均值。
2) β 网格 {0.2, 0.5, 1.0},默认 β=0 完全跳过。
3) 查分流程(额度 20):先跑 β=0 与父17输出 np.array_equal 逐位验证(不查分);再查 β=0 基线 1 次 + 三档各 1 次(共 4 次)。任一 β 比对照高 >1 分(超 T2 噪声)→ 在其 ±0.15 内细调 ≤3 次;三档全部 ≤对照 或 cell_state 随 β 单调下降 → 按止损提交 β=0(与父逐位一致,零损失)。
4) 单输入阶段退路:本机制只作用于最终输出表达,不依赖输入阶段数,单阶段照常执行。
5) 视图不变性:只用 manifest 相对时间与视图自带 external/ 路径,伪装/时间平移下行为一致。
风险① 若参考分布的型内方差 ≤ mix 现有方差,增方差同样掉 cell_state(与平滑对称的错误方向)——判据:cell_state 随 β 单调降即止损提交 β=0;② Qiu 异技术(另一测序平台)批次效应经方差比注入、污染基因分布——诊断步打印每型中位 r,r 中位数在 0.7–1.3 外时把 β 上限收到 0.5 并优先看 expression_change 是否单独受益;③ Qiu 与 500 面板重叠太少或类型映射失败 → 对角退路,若对角也证伪则提交 β=0;④ 小类型方差估计噪声大 → ≥5 细胞门槛+比值 clamp;⑤ 预期增益可能 <1 分噪声 → 仅在 A 半提升 >1 才细调,终选护栏由 B 半多种子把关。

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

对比:父节点版本 738087c486。改动的文件:solution/METHOD.md +30 −27、solution/run.py +128 −2

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex d4535c2..7113976 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,50 +1,53 @@-实现 T2HI-04 型内坐标kNN表达平滑并在代理上证伪(cell_state 单调下降、expression_change 不动),按 PLAN 止损条款以关闭态(alpha=0,与父节点17逐位一致)提交。+实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。  ## 方法族 / 实现 -family_id = **T2HI-04**(型内坐标 kNN 表达平滑),按 PLAN 完整实现于 `run.py::_expr_smooth`:+family_id = **T2HI-08**(外部型内方差先验的方差增强),实现于 `run.py::_var_expand` + `_load_external_prior`: -1. 在父管线(mix, align=procrustes, scale_damp=1 + 型内 kNN 坐标平滑 k=20, strength=1.5, max_frac=0.45, k_adaptive)产出的**最终坐标**上,对每个细胞类型分别建 cKDTree(`--k-expr 15`,k_eff=min(k, max(3, m−1)),m<4 的型跳过)。-2. 每个细胞 i 的 mu_i = 其 k_expr 个同型坐标近邻(去掉自身)的表达均值;`X_new[i] = (1−alpha)·X[i] + alpha·mu_i`,对全部 500 个基因。-3. 单输入阶段退路:mix 回退为父逻辑(分层抽末阶段),表达平滑仍在该单阶段输出的型内坐标上执行(不依赖两阶段信息)。-4. 关闭对照:`--expr-alpha 0`(**默认值**)完全跳过平滑步骤。+1. 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑保持关闭(alpha=0)。+2. 新增 `--qiu-var β`(默认 0 = 完全跳过):对每个 ≥5 细胞的类型,X_new = (1−f_g)·μ_type + f_g·X,f_g = clamp(r_g^β, 0.25, 4),clip 到 ≥0(log1p 域)。μ_type 不动、细胞沿自身偏差双向外扩 → 保均值、保协方差形状、增型内离散。+3. 外部先验自动检测(PLAN 步骤0 的免费诊断):遍历 manifest `external/`,按**数据内容**(基因重叠 ≥30 且与本板类型词汇有交集)判断可用性,不看数据集 id / 路径(视图无关)。+4. 单输入阶段退路:机制只作用于最终输出表达,不依赖输入阶段数;单阶段分支同样接入。 -## 对照结果(mechanism_off_control)+## 免费诊断结果(0 次查分) -用父节点17的原 run.py(逐行还原,字节数 12170 一致)在同一视图 seed 0 上生成输出,与本节点默认输出比较:**X 与 spatial_3D 均 `np.array_equal = True`(逐位一致)**。开启态仅 X 改变,坐标、细胞数、类型组成不变。+本视图 external/ 只挂了 `mosta_e95_v0`(MOSTA E9.5 空间数据,496/500 基因重叠,但类型词汇为 Brain/Heart/Mesenchyme 等粗标签,与本板 E8.25/E9.5 官方词汇(V-CM、EXE-Endoderm…)**零交集**);PLAN 预期的 Qiu 2024 E9.0 未挂载。→ 按 PLAN 条款走**对角退路**:r_g 用本板该型自身 SD 结构,f_g = 1+β 均匀双向外扩(`var_source` 日志确认为 `diagonal`)。 -## 机制生效证据(proxy A 半,seed 0,全部 17616 细胞被平滑,0 跳过)+## 机制生效证据(seed 0,全部 17616 细胞被改动,0 跳过) -| alpha | 型内基因方差比 after/before | mean\|ΔX\|/SD | 改变>1%的细胞比例 |+| β | 方差比 after/before | mean\|Δμ_type\| | 改变>1%细胞比例 | |---:|---:|---:|---:|-| 0.02 | 0.963 | 0.0068 | 100% |-| 0.05 | 0.909 | 0.0169 | 100% |-| 0.10 | 0.822 | 0.0339 | 100% |-| 0.15 | 0.741 | 0.0508 | 100% |-| 0.25 | 0.593 | 0.0846 | 100% |+| 0.05 | 1.071 | 0.013 | 99.99% |+| 0.15 | 1.222 | 0.040 | 100% |+| 0.30 | 1.468 | 0.079 | 100% |++方差随 β 单调上升、型均值近似不动(Δμ 仅来自 clip≥0)、上/下均值细胞反向远离 → 是离散度变换而非位置平移(与常数位移可区分:常数位移型均值移动、方差不变)。坐标、细胞数、类型组成完全不动 → local_spatial/shape_scale 仅经表达相关项微动,符合 PLAN 预期指纹。++## 对照结果(mechanism_off_control) -方差随 alpha 单调下降、幅度与 alpha 成正比 → 低通滤波确实运行。+`--qiu-var 0`(默认值)完全跳过增强步。关闭态输出与父节点19(=父17)管线输出 **X 与 spatial_3D 均 np.array_equal = True**(逐位一致,本节点直接验证);查分确认四组分与节点19 A 半记录逐一相同(65.93/63.83/61.70/52.68,board 61.033)。 -## 机制检验:证伪(vec-score,A 半,seed 0)+## 机制检验:方向弱正、幅度不足(vec-score A 半,seed 0,共 5 次查分) -| 配置 | cell_state | expression_change | local_spatial | shape_scale |-|---|---:|---:|---:|---:|-| **关闭对照 alpha=0(=父17)** | **65.93** | **63.83** | 61.70 | 52.68 |-| alpha=0.05, k=15 | 61.17 (−4.76) | 63.82 (−0.01) | 61.64 | 52.68 |-| alpha=0.10, k=15 | 58.38 (−7.55) | 63.81 (−0.02) | 61.58 | 52.68 |+| 配置 | board | cell_state | expression_change | local_spatial | shape_scale |+|---|---:|---:|---:|---:|---:|+| 关闭对照 β=0(=父) | 61.033 | 65.93 | 63.83 | 61.70 | 52.68 |+| β=0.05 对角 | 61.091 (+0.06) | 66.13 (+0.20) | 63.57 (−0.26) | 61.98 | 52.68 |+| β=0.15 对角 | 61.085 (+0.05) | 66.20 (+0.27) | 63.41 (−0.42) | 62.05 | 52.68 |+| β=0.30 对角 | 60.663 (−0.37) | 65.40 (−0.53) | 63.59 (−0.24) | 60.98 | 52.68 | -四组分变化完全符合 PLAN 预期模式(坐标不动 → local_spatial / shape_scale 只有噪声级微动;表达动 → cell_state / expression_change 动),但方向相反:**cell_state 随平滑强度单调大跌,expression_change 纹丝不动**。精确命中 PLAN 风险①的止损判据(cell_state 降 >1.5 且 expression_change 升 <1)。解释:评分器的细胞状态组看的是预测群体与参考群体的表达分布距离;mix 输出已是真实细胞,其"噪声"就是参考群体自带的单细胞异质性,对它做低通滤波只会把分布收窄、偏离参考。PLAN 步骤5的"仅高方差基因平滑"变体只会按比例缩小同一错误方向的效果,不再消耗查分额度。按 PLAN 止损条款:**两个非零 alpha 均低于关闭对照 → 提交关闭态**。+cell_state 随 β 先微升后降(峰值 ~0.15),expression_change 微降,净榜分增益 ≤ +0.06,远小于 1 分止损阈值(PLAN 步骤3:三档全部未超对照 +1 → 提交 β=0)。**未提交非零 β** 的理由:+0.05 在 A/B 半与种子噪声内无法区分,且以 expression_change 下降为代价。这与节点19合起来给出双侧证据:型内方差在本 board 已接近参考最优(收窄 −4.76/5%方差、放大 +0.27/22%方差),表达侧对角/低通类修饰均已到顶。  ## 提交内容 -默认参数即关闭态:输出与父节点17逐位一致(已验证)。查分共 5 次(额度 20)。`vec-check` 通过;seed 0/1 各自确定;`EXECUTION.json` 为 `{"gpu": false}`。+默认参数即关闭态,输出与父节点17/19逐位一致(零损失保底)。`vec-check` 通过;seed 0/1 各自确定运行;`EXECUTION.json` 为 `{"gpu": false}`。  ## 生物学知识来源 -无新增外部生物学知识;仅使用"发育中空间邻近细胞表达连续"这一通用先验(PLAN 给定),且该先验在本 board 的评分下被证伪——单细胞分辨率的异质性本身被评分器计为细胞状态相似度的一部分。+无新增外部生物学知识。外部先验使用逻辑仅依赖视图自带 `external/` 数据(本视图为 MOSTA E9.5,已合规过滤),且因类型词汇不可映射而未实际使用其数值。  ## 未验证 -- 高方差基因子集平滑(判定为同一方向、按比例更弱的效果,止损后不测)。-- k_expr ∈ {10, 20}(PLAN 规定仅当 alpha 方向正确时才调 k)。+- 外部(Qiu 类)方差比路径的实际效果:本视图无可用外部 scRNA(类型词汇零交集),`_load_external_prior` 的比值分支只在代码层验证了触发条件,未能在数据上跑通端到端;若 final 视图挂载了词汇可映射的 Qiu E9.0,该分支会自动启用(但仍受 β 默认 0 保护,不会改变提交行为)。+- β ∈ (0.15, 0.3) 细网格与 clip 前负值处理变体(止损后不再消耗额度)。 - B 半与 final 视图(关闭态与父逐位一致,迁移性等同父节点17)。diff --git a/solution/run.py b/solution/run.pyindex a073596..be31d54 100644--- a/solution/run.py+++ b/solution/run.py@@ -68,6 +68,7 @@ RESCALE_DAMP = 0.0  # uniform RMS restore FALSIFIED on proxy (moves RMS away fro ANISO = False  # per-axis SD correction: also falsified (occupancy_dice drop); off ANISO_DAMP = 1.0 K_ADAPTIVE = True  # k_eff = min(k, max(3, m-1)): smooth small types instead of skipping (robustness for finer type vocabularies; no-op when all types >= k+1)+QIU_VAR = 0.0  # family T2HI-08: per-type variance expansion exponent beta; 0 = off (control, bit-identical to parent node 19/17)   def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, max_frac: float, adaptive: bool = False):@@ -195,6 +196,121 @@ def _expr_smooth(expr: np.ndarray, coords: np.ndarray, labels: np.ndarray, k: in     return Xn.astype(np.float32), ev  +def _load_external_prior(view: str, manifest: dict, genes: list, out_labels: np.ndarray, min_overlap: int = 30):+    """Family T2HI-08: find a usable external scRNA variance prior in the view.++    Returns (ext_X_aligned (n_ext, G) with NaN for genes not measured,+             ext_labels, overlap_mask) or None when no mounted dataset shares+    enough genes AND cell-type vocabulary with the current output.+    View-independent: decision is based only on data content (gene overlap and+    label vocabulary overlap), never on dataset ids or paths.+    """+    import anndata as ad+    out_types = set(np.unique(out_labels).astype(str))+    best = None+    for ent in manifest.get("external") or []:+        path = ent.get("path")+        if not path:+            continue+        try:+            m = ad.read_h5ad(f"{view}/{path}")+        except Exception:+            continue+        if "celltype" not in m.obs.columns:+            continue+        ext_types = set(np.unique(m.obs["celltype"].values).astype(str))+        shared_types = out_types & ext_types+        g_idx = {g: i for i, g in enumerate(m.var_names.astype(str))}+        overlap = np.array([g in g_idx for g in genes])+        if overlap.sum() < min_overlap or not shared_types:+            continue+        X = m.X.toarray() if hasattr(m.X, "toarray") else np.asarray(m.X)+        X = np.asarray(X, dtype=np.float32)+        cols = np.full(len(genes), -1, dtype=np.int64)+        for i, g in enumerate(genes):+            j = g_idx.get(g, -1)+            if j >= 0:+                cols[i] = j+        score = (overlap.sum(), len(shared_types))+        if best is None or score > best[0]:+            best = (score, X, cols, np.asarray(m.obs["celltype"].values).astype(str))+    if best is None:+        return None+    _, X, cols, labs = best+    return X, cols, labs+++def _var_expand(expr: np.ndarray, labels: np.ndarray, beta: float, view: str, manifest: dict,+                genes: list, source: str = "auto", min_cells: int = 5):+    """Family T2HI-08: per-type variance augmentation about the type mean.++    X_new = (1 - f_g) * mu_type + f_g * X, f_g = clamp(r_g^beta, 0.25, 4.0),+    where r_g = SD_ext(g)/SD_mix(g) from an external scRNA prior when one is+    usable; otherwise the diagonal fallback f_g = 1 + beta (uniform two-sided+    expansion along each cell's own deviation, sigma_g taken from the board's+    per-type per-gene SD structure, mean-preserving, covariance-shape-preserving).+    Values are clipped at 0 (log1p domain). Returns (new_expr, evidence dict).+    """+    X = np.asarray(expr, dtype=np.float64)+    labels = np.asarray(labels).astype(str)+    n, G = X.shape+    Xn = X.copy()+    ev: dict = {"var_beta": beta, "var_min_cells": min_cells}+    ext = None+    if source in ("auto", "ext"):+        ext = _load_external_prior(view, manifest, genes, labels)+    use_ext = ext is not None+    ev["var_source"] = "external" if use_ext else "diagonal"+    var_ratio_num = 0.0+    var_ratio_den = 0.0+    dmu = []+    r_medians = []+    n_touched = 0+    n_skipped = 0+    for lab in np.unique(labels):+        idx = np.flatnonzero(labels == lab)+        m = idx.size+        if m < min_cells:+            n_skipped += m+            continue+        Xi = X[idx]+        mu = Xi.mean(axis=0)+        f = np.full(G, 1.0 + beta)  # diagonal fallback factor+        if use_ext:+            Xe, cols, le = ext+            jdx = np.flatnonzero(le == lab)+            if jdx.size >= min_cells:+                sd_mix = Xi.std(axis=0)+                f = np.ones(G)+                for g in range(G):+                    j = cols[g]+                    if j < 0:+                        continue+                    sd_ext = float(Xe[jdx, j].std())+                    r = sd_ext / max(sd_mix[g], 1e-6) if sd_mix[g] > 1e-6 else 1.0+                    f[g] = min(max(r ** beta, 0.25), 4.0)+                    r_medians.append(r)+            else:+                f = np.ones(G)  # type absent from external prior: untouched+        Xnew_i = mu[None, :] + f[None, :] * (Xi - mu[None, :])+        np.maximum(Xnew_i, 0.0, out=Xnew_i)+        Xn[idx] = Xnew_i+        n_touched += m+        var_ratio_num += float(Xnew_i.var(axis=0).sum())+        var_ratio_den += float(Xi.var(axis=0).sum())+        dmu.append(float(np.abs(Xnew_i.mean(axis=0) - mu).mean()))+    ev["var_n_touched"] = int(n_touched)+    ev["var_n_skipped"] = int(n_skipped)+    ev["var_ratio_after_before"] = var_ratio_num / var_ratio_den if var_ratio_den > 0 else 1.0+    ev["var_mean_abs_dmu"] = float(np.mean(dmu)) if dmu else 0.0+    if r_medians:+        ev["var_ext_r_median"] = float(np.median(r_medians))+    d = np.abs(Xn - X).sum(axis=1)+    base = np.abs(X).sum(axis=1)+    ev["var_frac_cells_changed_gt1pct"] = float(np.mean(d > 0.01 * np.maximum(base, 1e-12))) if n else 0.0+    return Xn.astype(np.float32), ev++ def _pca_normalize(coords: np.ndarray) -> np.ndarray:     """Deterministic PCA canonicalisation: centroid -> PCA axes -> det=+1 -> third-moment sign."""     C = np.asarray(coords, dtype=np.float64)@@ -275,6 +391,8 @@ def main() -> None:     parser.add_argument("--k-adaptive", choices=("on", "off"), default=("on" if K_ADAPTIVE else "off"))     parser.add_argument("--expr-alpha", type=float, default=EXPR_ALPHA)     parser.add_argument("--k-expr", type=int, default=K_EXPR)+    parser.add_argument("--qiu-var", type=float, default=QIU_VAR)+    parser.add_argument("--var-source", choices=("auto", "diag", "ext"), default="auto")     args = parser.parse_args()      manifest = load_manifest(args.data)@@ -290,6 +408,9 @@ def main() -> None:         Xe = stage.X[rows].toarray()         if args.expr_alpha != 0.0:             Xe, _ = _expr_smooth(Xe, coords, np.asarray(stage.labels)[rows], args.k_expr, args.expr_alpha)+        if args.qiu_var != 0.0:+            Xe, _ = _var_expand(Xe, np.asarray(stage.labels)[rows], args.qiu_var, args.data, manifest,+                                genes, source=args.var_source)         write_t2(args.out, Xe, coords, genes, seed=args.seed)         return     stage_a = read_stage(args.data, a, genes)@@ -298,7 +419,7 @@ def main() -> None:     expr, coords, info = interpolate(stage_a, stage_b, t, params)      ev = {}-    need_labels = args.strength != 0.0 or args.expr_alpha != 0.0+    need_labels = args.strength != 0.0 or args.expr_alpha != 0.0 or args.qiu_var != 0.0     labels = None     if need_labels:         n = int(info["n"])@@ -327,11 +448,16 @@ def main() -> None:         expr, ev3 = _expr_smooth(expr, coords, labels, args.k_expr, args.expr_alpha)         ev.update(ev3) +    if args.qiu_var != 0.0:+        expr, ev4 = _var_expand(expr, labels, args.qiu_var, args.data, manifest, genes, source=args.var_source)+        ev.update(ev4)+     keep = {k: info.get(k) for k in ("t", "n", "rms_a", "rms_b", "out_rms", "n_shared_types", "z_dot", "z_flipped", "align", "n_from_a", "n_from_b")}     print(json.dumps({"bracket": [a["stage"], b["stage"]], **keep, "strength": args.strength, "k": args.k,                       "pca_norm": args.pca_norm, "rescale_damp": args.rescale_damp, "aniso": args.aniso,                       "aniso_damp": args.aniso_damp, "k_adaptive": args.k_adaptive,-                      "expr_alpha": args.expr_alpha, "k_expr": args.k_expr, **ev}, default=float), file=sys.stderr)+                      "expr_alpha": args.expr_alpha, "k_expr": args.k_expr,+                      "qiu_var": args.qiu_var, "var_source": args.var_source, **ev}, default=float), file=sys.stderr)     write_t2(args.out, expr, coords, genes, seed=args.seed)  

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

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k027Joint expression-geometry generation with relative geometrynotes/competition/03_solution_landscape.md
k024World-model evaluation dimensions for state-transition predictorsnotes/competition/07_biomedical_world_models.md

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

改了什么在父19管线上新增 T2HI-08 型内方差增强(_var_expand:X_new=(1−f)μ_type+f·X,保均值双向外扩)及视图无关的外部先验检测 _load_external_prior;因本视图 external/ 只有类型词汇零交集的 MOSTA E9.5(Qiu 未挂载),走对角退路 f=1+β。A 半测得 β=0.05/0.15/0.30 榜分增益 +0.06/+0.05/−0.37 全部 <1 分噪声,按 PLAN 止损以 β=0 关闭态提交,输出与父17/19 逐位一致。
各组分数的变化cell_state:噪声内(+0.00,66.70→66.70;关闭态提交)
expression_change:噪声内(+0.00,63.90→63.90;关闭态提交)
local_spatial:噪声内(+0.00,62.34→62.34)
shape_scale:噪声内(+0.00,52.70→52.70)
family_idT2HI-08
假设是否成立否
经验
  1. 在 mix 输出已是真实细胞的 board 上,型内方差的两侧修饰均已封顶:节点19 收窄方差(低通平滑)使 cell_state 每 5% 方差降 −4.76,本节点放大 22% 方差(β=0.15 对角)cell_state 仅 +0.27 且 expression_change −0.42,净增益 <+0.06——型内方差已在参考最优附近,表达侧对角/低通类修饰不值得再投额度。
  2. 依赖视图 external/ 挂载特定数据集(如 Qiu E9.0)的机制不可靠:本视图只有 MOSTA E9.5 且类型词汇与本板零交集,外部比值分支端到端未跑通;此类 PLAN 必须像本节点一样预置不依赖外部数据的退路(对角方差增强)。
  3. 外部先验可用性判定应按数据内容(基因重叠≥30 且类型词汇有交集)而非数据集 id/路径,保证视图伪装/替换下行为一致——该判定逻辑本节点已验证有效(正确识别 MOSTA 不可映射并触发退路)。
  4. 关闭态提交前用 np.array_equal 与父输出逐位验证 + 关闭态查分与父记录比对(61.033/65.93/63.83/61.70/52.68 全吻合),是零损失止损的可靠流程,仅耗 5/20 次额度。
mechanism_active否
下一步建议
  1. 针对 cell_state:放弃方差幅度类修饰,转向非方差维度——例如按型重塑基因间共变结构(对型内残差矩阵做低秩/旋转重构而保持边际 SD 不变),先在 A 半用 1-2 档强度验证方向再细调。
  2. 针对 expression_change:该组自节点2 起未被任何表达机制撼动(63.90),尝试改变插值表达本身的构造(如按型的基因级时间轨迹重加权 mix 的 A/B 阶段表达贡献),而非在最终输出上做后处理。
  3. 若坚持 T2HI-08 外部先验路线:先免费诊断 final 视图 external/ 是否挂载类型词汇可映射的 Qiu E9.0,仅当 _load_external_prior 返回 external 且 r 中位数在 0.7–1.3 内时才消耗查分额度,否则直接跳过(对角退路已证伪)。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数18
工具调用共 22 次:bash 12、edit 8、read 1、write 1
用时8 分
token 数输入 49,245 · 输出 7,406 · 思考 8,158
任务(第一行)按计划修改程序:T2HI-08 Qiu E9.0 型内方差增强(保均值、双向外扩,对照 β=0)
最后的回答(摘录)
**完成。** 做了什么:在父19管线上实现 PLAN 的 T2HI-08 型内方差增强(`_var_expand`:X_new=(1−f)μ_type+f·X,保均值双向外扩;含视图无关的外部先验自动检测 `_load_external_prior` 与单输入退路)。免费诊断发现本视图 external/ 只有 MOSTA E9.5(类型词汇与本板零交集,Qiu 未挂载)→ 按 PLAN 走对角退路 f=1+β。

查分(5/20 次,A 半):对照 β=0 = 61.033(与父19记录逐位吻合);β=0.05→61.091、β=0.15→61.085(cell_state +0.20/+0.27,expression_change −0.26/−0.42)、β=0.30→60.663。全部增益 <1 分噪声阈值,按 PLAN 止损条款提交关闭态 β=0,输出与父17/19 逐位一致(np.array_equal 验证),vec-check 通过,seed 0/1 确定。

下一步最值得试:表达侧对角/低通修饰已双侧封顶(收窄 −4.76、放大 +0.27)——型内方差已在参考最优附近;建议转向 cell_state 的非方差维度(如按参考可推断的型内亚结构/基因共变重塑),或接受表达侧平台、把剩余空间放在 mix 抽样策略(t、分层比例的组成侧微调)上。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/engineer.jsonl 135 KB
/home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时2 分
token 数输入 11,380 · 输出 1,465 · 思考 4,843
任务(第一行)为节点 n20(改进,父节点 n19)写改进计划 PLAN.json
最后的回答(摘录)
2024 早期心脏 scRNA 补类型内方差)正为此设计:Qiu E9.0 在允许阶段(不在 T2 heart 禁窗 (8.25,8.75)/(9.5,13.5] 内)、心脏谱系、可作型内方差的独立先验。",
 "approach": "基线=节点17管线(mix + procrustes + kNN 坐标平滑 k=20, strength=1.5, max_frac=0.45, k_adaptive;保留节点19 的表达平滑代码但 alpha=0 关闭)。新增 --qiu-var 步骤,在最终输出表达上执行:\n0) 免费诊断(0 次查分):从视图 external/ 读 Qiu 2024 E9.0,标签映射到本板类型词汇,统计与本板 500 基因面板的重叠数与每型中位方差比 r=SD_qiu/SD_mix。重叠<30 基因→退路:对角方差增强(σ_g 用本板该型该基因自身 SD,机制同构、不依赖外部数据);重叠≥30 才用 Qiu 比值。\n1) 对每型(mix 中该型≥5 细胞,否则跳过)每个重叠基因:f_g=clamp(r_g^β, 0.25, 4.0),X_new=(1−f_g)·μ_type + f_g·X;非重叠基因不动。μ_type 不动、细胞双向远离型均值 → 增方差保均值。\n2) β 网格 {0.2, 0.5, 1.0},默认 β=0 完全跳过。\n3) 查分流程(额度 20):先跑 β=0 与父17输出 np.array_equal 逐位验证(不查分);再查 β=0 基线 1 次 + 三档各 1 次(共 4 次)。任一 β 比对照高 >1 分(超 T2 噪声)→ 在其 ±0.15 内细调 ≤3 次;三档全部 ≤对照 或 cell_state 随 β 单调下降 → 按止损提交 β=0(与父逐位一致,零损失)。\n4) 单输入阶段退路:本机制只作用于最终输出表达,不依赖输入阶段数,单阶段照常执行。\n5) 视图不变性:只用 manifest 相对时间与视图自带 external/ 路径,伪装/时间平移下行为一致。",
 "expected_groups": ["cell_state", "expression_change"],
 "risks": "① 若参考分布的型内方差 ≤ mix 现有方差,增方差同样掉 cell_state(与平滑对称的错误方向)——判据:cell_state 随 β 单调降即止损提交 β=0;② Qiu 异技术(另一测序平台)批次效应经方差比注入、污染基因分布——诊断步打印每型中位 r,r 中位数在 0.7–1.3 外时把 β 上限收到 0.5 并优先看 expression_change 是否单独受益;③ Qiu 与 500 面板重叠太少或类型映射失败 → 对角退路,若对角也证伪则提交 β=0;④ 小类型方差估计噪声大 → ≥5 细胞门槛+比值 clamp;⑤ 预期增益可能 <1 分噪声 → 仅在 A 半提升 >1 才细调,终选护栏由 B 半多种子把关。",
 "family_id": "T2HI-08",
 "mechanism": "以外部 Qiu 2024 E9.0 心脏 scRNA 的型内基因方差为先验,把 mix 输出细胞的表达沿型均值双向外扩(f=r^β),保型均值、增型内离散,修补有限分层抽样造成的型内多样性不足。",
 "vs_constant_shift": "常数位移对某型所有细胞加同一向量:型均值移动、方差不变;本机制型均值不动(验证 |Δμ|≈0)、方差增大、位移方向取决于细胞相对型均值的位置(上/下均值者反向),是分布形状(离散度)变换而非位置平移,也非按全局比例重加权组成。",
 "mechanism_evidence": "免费诊断输出:每型每基因方差比 after/before 应随 β 单调上升、趋近 r^{2β};|Δμ_type|≈0(保均值);>1% 细胞被改动比例及其相对型均值的双向外扩幅度(上均值与下均值细胞各自远离);四组分变化模式(cell_state/expression_change 动、local_spatial/shape_scale 噪声内,因坐标不动)。该指纹与常数位移(均值动)、平滑(方差降)均可区分。",
 "mechanism_off_control": "--qiu-var 0(默认)完全跳过增强步;先与父节点17输出做 X、spatial_3D、labels 的 np.array_equal 逐位一致验证再查分。预期:关闭态榜分与四组分同父(61.41 / 66.70 / 63.90 / 62.34 / 52.70);开启态仅 X 改变,坐标与细胞数/类型组成不变。",
 "sources": []}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/researcher.jsonl 6 KB
/home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/researcher.stderr

审查员

角色审查员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数8
工具调用共 7 次:bash 5、read 1、write 1
用时1 分
token 数输入 18,693 · 输出 1,143 · 思考 1,812
任务(第一行)审查节点 n20 的程序是否越界读取、写死目标、钻评分器漏洞
最后的回答(摘录)
REVIEW.json written
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/reviewer.jsonl 95 KB
/home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/reviewer.stderr