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

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

节点 n21

逐类型差异收缩:共有型 α=1.25、单侧型 α_single 扫 0–1.75;减收缩 shape raw 略升但 nbd raw 恶化更多,加收缩平坦,均不超父,按 PLAN 回退默认 1.25(逐位同父)。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-094241-search-t2-heart-interp-g24-D-s2
父节点n15
子节点—
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 66.21(+0.0) · proxy 66.21(+0.0)
审查未审查
用时?从运行开始到结束(或到现在)的挂钟时间。17 分
程序版本05b208f56897d6322b9c9012a9b421aa7ec2672b (programs.git)

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

来自 programs.git 05b208f568:solution/METHOD.md

逐类型差异收缩:共有型 α=1.25、单侧型 α_single 扫 0–1.75;减收缩 shape raw 略升但 nbd raw 恶化更多,加收缩平坦,均不超父,按 PLAN 回退默认 1.25(逐位同父)。

方法族与机制

T2HI-05(差异收缩解耦 shape↔neighborhood)。在父节点管线(logit 组成插值配额混抽 → procrustes 对齐 → log-linear RMS → 同型 kNN 收缩 k=10/α=1.25 → jitter → scale_to_rms)的收缩步中,把统一 α 改为逐类型 α:

  • 共有型(该类型配额在括号两侧各抽到 ≥1 个细胞,per_type 中 k_a>0 且 k_b>0):α_shared=1.25,不变。其混抽产生人为的 a/b 双子簇,收缩才能合并亚簇、改善表达-位置配对。
  • 单侧型(只从一侧抽到):α_single=env T2HI_CONTRACT_SINGLE,默认 1.25(=关闭,逐位等于父)。假设是其表达-位置配对本身正确,减收缩可保留自然空间分布、减轻 d2_shape/occupancy_dice 的致密化损害。

这不是常数位移也不是组成重加权:每个细胞的位移方向/距离由其同型 kNN 局部邻域决定,α 由该类型的跨阶段抽取组成决定(同云内不同类型 α 不同)。

关闭机制对照(PLAN mechanism_off_control)

T2HI_CONTRACT_SINGLE=1.25 时输出与父节点 15 的预测逐位相同(.X 与 obsm["spatial_3D"] 均 np.array_equal 验证通过)。提交默认即此状态。

机制生效证据(α_single=0.3 与 0.0 时)

  • 收缩日志:5 个共有型、7922/17616 个细胞为共有型细胞;统一 α=1.25 下 mean_disp 共有型 17.88、单侧型 37.81(单侧型位移是共有型 2 倍多,确为压缩主力)。
  • α_single=0.3 时单侧型 mean_disp 37.81→9.07,收缩后 pre-scale RMS 325.1→328.5;α_single=0.0 时单侧型位移 0、RMS 330.3(均增大,符合"保留自然分布"预期)。
  • 四组分变化(今日同一评分状态下的 A 半查询;父文件今日重查 = 66.05,expression 72.08 / cell_state 71.56 / shape 50.75 / local 69.80,nbd raw 0.04176):
α_single榜分shape_scalelocal_spatialnbd rawd2 rawocc raw
0.065.5251.1867.240.046940.044210.8200
0.3~65.7~51.367.990.045380.044000.8208
0.565.7850.9568.550.044240.044160.8159
1.25(=父,对照)66.05(正式记录 66.21)50.7569.800.041760.045290.8163
1.566.0050.3770.000.041360.045710.8110
1.7566.0950.8369.870.041620.046320.8210

expression_change / cell_state 四列在所有查询中恒定(只动坐标),不参与比较。

结论:机制假设被否证

  1. PLAN 预期的 shape 改善方向正确但量级不足:d2 raw 0.0453→0.0442、occ raw 0.816→0.820(PLAN 预期 d2<0.042 未达到),shape_scale 组 +0.4~0.5,仍贴地板。
  2. nbd 代价远超 shape 收益:nbd raw 0.0418→0.0469(α_single=0),超 PLAN 风险条款 2 的放弃线 0.044;local_spatial 组 −2.6。α_single=0.3 的 nbd raw 0.04538 > 0.042,触发 PLAN 提交判据的否分支。
  3. 单侧型的收缩正是 nbd 收益的主要来源(单侧型占 55% 细胞、位移更大),PLAN 风险条款 2 预言的情形成立:减收缩直接损害邻域一致性。
  4. 反方向(α_single>α_shared)平坦:nbd raw 在 1.5 处最优 0.04136 但仅比 1.25 好 0.0004(+0.03 分),shape 无系统改善,均在 ±0.2 噪声内。
  5. 由此判断:shape_scale 贴地板不是收缩致密化造成的——完全不收缩单侧型(α_single=0)shape 也只到 51.18。收缩强度这条轴(k、α、逐类型 α)已在平台顶点,与父 ANALYSIS 的 k/α 网格结论一致。shape 需要另一类机制(如节点 17 的收缩后方差恢复,已证 +1.35)。

验证过的

  • 默认两次运行逐位相同;默认输出与父节点 15 基线预测逐位相同(X、坐标 array_equal);vec-check 通过;纯 CPU ~3.5 s、内存 <1 GB;np.random.default_rng(seed),无全局随机态。
  • 视图无关:只用时间差 t、标签、坐标、manifest 上下限;不读 board/mode/路径/阶段名;单输入走 copy_last 分支,在收缩之前返回,不受本改动影响。
  • 查分 6 次(0.3 / 1.5 / 0.5 / 1.75 / 0.0 / 对照同日重查)。

没验证的 / 风险

  • 共有型更多的括号(final E8.25+E8.75,31 个共有型)上单侧型占比更低,差异收缩的净效应可能不同(未测;但本代理上 nbd 对 α_single 的敏感度是结构性的,预期同向)。
  • 今日查询与父正式记录的 expression/cell_state 组有 ~0.5-0.9 的组间漂移(同文件同日重查稳定),跨日绝对分不可直接比;本节点所有比较用同日查询。
  • 本节点无净改进:如实报告机制被否证 + 按 PLAN 回退条款保住父输出。
  • 知识来源:仅通用统计/几何做法(kNN 质心收缩、按跨阶段组成分组),未使用任何保留阶段/基因型的测量信息。

调研员的计划

名称差异收缩:共有型全收缩、单侧型减收缩以解耦 shape↔neighborhood
动机父节点 15 的 shape_scale 50.51 是最弱组(三项 skill 0.499/0.504/0.512 全贴地板)。ANALYSIS 明确记录 kNN 收缩存在 neighborhood↔shape 此消彼长(k=20 使 nbd raw 更好但 shape_scale 50.51→49.78)。根本原因:单侧类型(仅从一个阶段抽取)本身表达-位置配对正确,对其做 α=1.25 收缩只是无谓压缩空间分布,损害 d2_shape 和 occupancy_dice;而共有类型(两侧混抽)存在人为双峰,收缩才有邻域收益。节点 17 用收缩后方差恢复部分解耦(shape +1.35),但那是事后补救;本方案从收缩本身入手,按类型来源差异化强度,是不同机制。
做法在父节点 15 的 contract() 函数中引入逐类型 α:(1) 主流程已有 per-type 配额抽样,记录哪些类型是共有型(两侧均抽到 ≥1 个细胞);(2) 将 shared_types: set 传入 contract();(3) 收缩循环中,共有型用 α_shared=1.25(不变),单侧型用 α_single(环境变量 T2HI_CONTRACT_SINGLE,默认 0.3);(4) 其余流程(procrustes 对齐、log-linear RMS target、scale_to_rms、jitter)不变。参数扫描:α_single ∈ {0.0, 0.25, 0.5, 1.25(=对照)},每个只跑一次 vec-score(A 半),比较 shape_scale 三项 raw 与 nbd raw;若 α_single=0.3 的榜分 >66.21 且 nbd raw ≤0.042 则提交,否则退回 α_single=1.25(逐位等于父)。单输入退路:copy_last 分支在收缩之前返回,不受影响。预期 3 次查分可完成筛选(对照 + 2 个候选),留余量复测最佳点。
风险1) 单侧型占细胞多数,减收缩后全云 RMS 增大,scale_to_rms 会额外压缩,可能部分抵消形状收益——但 d2_shape 和 occupancy_dice 都是尺度不变的(除以/缩放至各自 RMS),所以形状指标不受影响。2) 若共有型数量极少(此 proxy 仅 5 个),单侧型占绝大多数细胞,nbd 收益可能主要来自单侧型的邻域一致性而非共有型合并,减收缩可能小幅损害 nbd——Engineer 应在第一次查分时检查 nbd raw 是否 >0.044(超此值则放弃)。3) α_single=0 时单侧型完全不收缩,若这些型内有抽样导致的空间离群点,nbd 可能略差——α_single=0.25 是保底。

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

对比:父节点版本 4a7df4abc3。改动的文件:solution/METHOD.md +39 −20、solution/run.py +52 −7

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 7625429..55bc426 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,33 +1,52 @@-实现 PLAN T2HI-01 表达插值机制(共有类型细胞向插值型均值位移 f 倍,阈值 |Δμ|>0.1):代理上 f=0.1/0.2/0.3 全部劣于父节点(variogram raw 0.0206→≥0.0265,超 PLAN 放弃阈值 0.022),按 PLAN 风险条款 2 放弃,默认 f=0,输出与父节点 13 逐位相同;另复测收缩 k/α 网格,均不超父配置(k=10, α=1.25)。+逐类型差异收缩:共有型 α=1.25、单侧型 α_single 扫 0–1.75;减收缩 shape raw 略升但 nbd raw 恶化更多,加收缩平坦,均不超父,按 PLAN 回退默认 1.25(逐位同父)。 -## 做了什么+## 方法族与机制 -1. **PLAN 机制(T2HI_EXPR_INTERP,实现完整、实测有害、默认 0)**:抽样后、同型 kNN 收缩之前,对每个两侧各 ≥10 个抽取细胞的共有类型,计算 a/b 侧逐基因均值 μ_a、μ_b,μ_t=(1−t)μ_a+tμ_b;a 侧细胞 x+=f·(μ_t−μ_a),b 侧 x+=f·(μ_t−μ_b),只作用于 |μ_a−μ_b|>0.1(T2HI_EXPR_THRESH)的基因,位移后 clip≥0。逐类型、逐基因、逐侧不同,不是常数位移。f=0 提前返回,输出与父节点逐位相同(anndata 比对通过)。-2. **对照与扫描(proxy:E8.25+E9.5→E8.75,t=0.4,n=17616,seed 0,均 vec-score A 半)**:+T2HI-05(差异收缩解耦 shape↔neighborhood)。在父节点管线(logit 组成插值配额混抽 → procrustes 对齐 → log-linear RMS → 同型 kNN 收缩 k=10/α=1.25 → jitter → scale_to_rms)的收缩步中,把统一 α 改为逐类型 α: -| 配置 | 榜分 | de_score raw | mmd_u raw | variogram raw | nbd_mmd raw |-|---|---:|---:|---:|---:|---:|-| f=0(=父 13,对照) | 66.21(父实测) | 0.5213 | 0.02337 | 0.0206 | 0.04178 |-| f=0.1, th=0.1 | 65.48 | 0.5326 | 0.02431 | 0.0265 | 0.04207 |-| f=0.2, th=0.5 | 65.28 | 0.5217 | 0.02472 | 0.0270 | 0.04239 |-| f=0.3, th=0.1 | 64.79 | 0.5109 | 0.02530 | 0.0299 | 0.04298 |+- **共有型**(该类型配额在括号两侧各抽到 ≥1 个细胞,`per_type` 中 k_a>0 且 k_b>0):α_shared=1.25,不变。其混抽产生人为的 a/b 双子簇,收缩才能合并亚簇、改善表达-位置配对。+- **单侧型**(只从一侧抽到):α_single=env `T2HI_CONTRACT_SINGLE`,默认 **1.25(=关闭,逐位等于父)**。假设是其表达-位置配对本身正确,减收缩可保留自然空间分布、减轻 d2_shape/occupancy_dice 的致密化损害。 -机制生效证据:f=0.3 时 5 个共有类型、1267 型×基因次被位移(约 253 基因/型),全基因平均 std −0.0136(双峰→单峰方向正确);f=0.1 时 std −0.0048。de_direction raw 三档全部不动(0.6623–0.6626 vs 父 0.6625)。+这不是常数位移也不是组成重加权:每个细胞的位移方向/距离由其同型 kNN 局部邻域决定,α 由该类型的跨阶段抽取组成决定(同云内不同类型 α 不同)。 -3. **放弃理由(PLAN 自带的放弃分支)**:所有 f 下 variogram raw ≥0.0265,远超 PLAN 风险条款 2 的放弃阈值 0.022;mmd_u 在 f=0.3 恶化 +8.3%(>5% 条款);de_score 的收益不稳定(f=0.1 升、f=0.3 反降,且父节点 METHOD 记录同文件 de_score raw 查询漂移可达 0.52→0.54,单项差异淹没在评分噪声里),而 cell_state 组的损失单调、一致。型均值方向的小步加性位移把细胞拉向"两端均值的混合",破坏了真值 E8.75 的基因间共变结构——与节点 4(全局位移 DE↑mmd↓)同一折中,限定共有类型+小步长只是减轻、没有消除。-4. **收缩参数复测(父节点 next_suggestions)**:k=20/α=1.25 → 66.09(nbd raw 0.0395 更好,但 d2/occupancy 致密化代价使 shape_scale 50.51→49.78);k=15 → 65.97;k=20/α=1.0 → 65.95;α=1.5 → 65.96。均不超父配置,保留 k=10、α=1.25 默认。neighborhood 与 shape 之间存在一致的此消彼长(收缩越狠 nbd 越好、d2/occupancy 越差),k=10/α=1.25 恰在总分平台顶点附近。+## 关闭机制对照(PLAN mechanism_off_control) -## 提交状态+`T2HI_CONTRACT_SINGLE=1.25` 时输出与父节点 15 的预测**逐位相同**(`.X` 与 `obsm["spatial_3D"]` 均 `np.array_equal` 验证通过)。提交默认即此状态。 -默认 T2HI_EXPR_INTERP=0,输出与父节点 13 完全一致(预期正式分 ≈ 父 66.2 的 B 半水平);机制代码保留、可用环境变量开启,供后续节点在别的括号(如 final E8.25+E8.75,31 个共有类型)上复测——本 proxy 括号只有 5 个共有类型,型内均值估计噪声大,共有类型多时结论可能不同(未验证)。+## 机制生效证据(α_single=0.3 与 0.0 时)++- 收缩日志:5 个共有型、7922/17616 个细胞为共有型细胞;统一 α=1.25 下 mean_disp 共有型 17.88、单侧型 37.81(单侧型位移是共有型 2 倍多,确为压缩主力)。+- α_single=0.3 时单侧型 mean_disp 37.81→9.07,收缩后 pre-scale RMS 325.1→328.5;α_single=0.0 时单侧型位移 0、RMS 330.3(均增大,符合"保留自然分布"预期)。+- 四组分变化(今日同一评分状态下的 A 半查询;父文件今日重查 = 66.05,expression 72.08 / cell_state 71.56 / shape 50.75 / local 69.80,nbd raw 0.04176):++| α_single | 榜分 | shape_scale | local_spatial | nbd raw | d2 raw | occ raw |+|---|---:|---:|---:|---:|---:|---:|+| 0.0 | 65.52 | 51.18 | 67.24 | 0.04694 | 0.04421 | 0.8200 |+| 0.3 | ~65.7 | ~51.3 | 67.99 | 0.04538 | 0.04400 | 0.8208 |+| 0.5 | 65.78 | 50.95 | 68.55 | 0.04424 | 0.04416 | 0.8159 |+| **1.25(=父,对照)** | **66.05**(正式记录 66.21) | 50.75 | 69.80 | 0.04176 | 0.04529 | 0.8163 |+| 1.5 | 66.00 | 50.37 | 70.00 | 0.04136 | 0.04571 | 0.8110 |+| 1.75 | 66.09 | 50.83 | 69.87 | 0.04162 | 0.04632 | 0.8210 |++expression_change / cell_state 四列在所有查询中恒定(只动坐标),不参与比较。++## 结论:机制假设被否证++1. **PLAN 预期的 shape 改善方向正确但量级不足**:d2 raw 0.0453→0.0442、occ raw 0.816→0.820(PLAN 预期 d2<0.042 未达到),shape_scale 组 +0.4~0.5,仍贴地板。+2. **nbd 代价远超 shape 收益**:nbd raw 0.0418→0.0469(α_single=0),超 PLAN 风险条款 2 的放弃线 0.044;local_spatial 组 −2.6。α_single=0.3 的 nbd raw 0.04538 > 0.042,触发 PLAN 提交判据的否分支。+3. **单侧型的收缩正是 nbd 收益的主要来源**(单侧型占 55% 细胞、位移更大),PLAN 风险条款 2 预言的情形成立:减收缩直接损害邻域一致性。+4. **反方向(α_single>α_shared)平坦**:nbd raw 在 1.5 处最优 0.04136 但仅比 1.25 好 0.0004(+0.03 分),shape 无系统改善,均在 ±0.2 噪声内。+5. 由此判断:**shape_scale 贴地板不是收缩致密化造成的**——完全不收缩单侧型(α_single=0)shape 也只到 51.18。收缩强度这条轴(k、α、逐类型 α)已在平台顶点,与父 ANALYSIS 的 k/α 网格结论一致。shape 需要另一类机制(如节点 17 的收缩后方差恢复,已证 +1.35)。  ## 验证过的 -- 默认(f=0)两次运行输出逐位相同(X 与坐标 array_equal);`vec-check` 通过;纯 CPU ~4 s、内存 <1 GB;`np.random.default_rng(seed)`,无全局随机态。-- 视图无关:只用时间差 t、标签、坐标、manifest 上下限;不读 board/mode/路径/阶段名;单输入/不被括号走 copy_last 分支,在机制之前返回。+- 默认两次运行逐位相同;默认输出与父节点 15 基线预测逐位相同(X、坐标 array_equal);`vec-check` 通过;纯 CPU ~3.5 s、内存 <1 GB;`np.random.default_rng(seed)`,无全局随机态。+- 视图无关:只用时间差 t、标签、坐标、manifest 上下限;不读 board/mode/路径/阶段名;单输入走 copy_last 分支,在收缩之前返回,不受本改动影响。+- 查分 6 次(0.3 / 1.5 / 0.5 / 1.75 / 0.0 / 对照同日重查)。  ## 没验证的 / 风险 -- f>0 的全部结论只在 proxy(5 个共有类型)上;final(31 个共有类型)未测,机制可能在类型更多、均值估计更稳时表现不同,但 variogram 损失是结构性的(型均值方向位移必然压缩共变),预期同样为负。-- 本节点无净改进:如实报告负结果 + 保住父分数。评分 A/B 半与 ±1 分噪声下,66.2 与 66.0–66.1 的收缩变体不可区分,未替换父配置。-- 知识来源:仅通用统计做法(型均值插值、kNN 收缩),未使用任何保留阶段/基因型的测量信息。+- 共有型更多的括号(final E8.25+E8.75,31 个共有型)上单侧型占比更低,差异收缩的净效应可能不同(未测;但本代理上 nbd 对 α_single 的敏感度是结构性的,预期同向)。+- 今日查询与父正式记录的 expression/cell_state 组有 ~0.5-0.9 的组间漂移(同文件同日重查稳定),跨日绝对分不可直接比;本节点所有比较用同日查询。+- 本节点无净改进:如实报告机制被否证 + 按 PLAN 回退条款保住父输出。+- 知识来源:仅通用统计/几何做法(kNN 质心收缩、按跨阶段组成分组),未使用任何保留阶段/基因型的测量信息。diff --git a/solution/run.py b/solution/run.pyindex 2a3e29b..4b1a41e 100644--- a/solution/run.py+++ b/solution/run.py@@ -22,6 +22,14 @@ Additions in this node:   types from the inside, improving expression-location pairing   (neighborhood_mmd). Coordinates only; expression is never touched; the cloud   is rescaled to target_rms afterwards as in the parent.+- env T2HI_CONTRACT_SINGLE (default 1.25 == T2HI_CONTRACT_A, i.e. uniform+  contraction, bit-for-bit parent behaviour): per-type differential+  contraction. Types drawn from BOTH bracket sides (shared, with artificial+  side-a/side-b sub-clusters) contract with alpha; types drawn from one side+  only contract with alpha_single. Measured on proxy: alpha_single < alpha+  improves shape raws slightly (d2 0.0453->0.0442, occupancy 0.816->0.820 at+  alpha_single=0) but degrades neighborhood_mmd much more (0.0418->0.0469),+  net negative; alpha_single > alpha is flat. Kept at 1.25 (see METHOD.md). - env T2HI_EXPR_INTERP (default 0.0, measured harmful on proxy): type-conditional   expression interpolation. For each shared type with >= T2HI_EXPR_MIN drawn   cells per side, side-a cells get x += f*(mu_t - mu_a) and side-b cells@@ -99,14 +107,29 @@ def colocalize(ca, la_sel, cb, lb_sel, t: float, gamma: float, min_count: int):     return ca, cb, report  -def contract(coords: np.ndarray, labels_sel: np.ndarray, mode: str, alpha: float, k: int) -> np.ndarray:+def contract(+    coords: np.ndarray,+    labels_sel: np.ndarray,+    mode: str,+    alpha: float,+    k: int,+    shared_types: set | None = None,+    alpha_single: float | None = None,+):     """Move each cell alpha-fraction toward the centroid of its k nearest neighbours.      mode "global": neighbours searched in the whole drawn cloud.-    mode "type": neighbours searched within the same cell type only.-    mode "none" or alpha==0: identity (parent behaviour).+    mode "type": neighbours searched within the same cell type only. With+    shared_types/alpha_single given, types drawn from BOTH bracket sides use+    alpha, types drawn from one side only use alpha_single (their+    expression-location pairing is already correct, so contraction there only+    compresses the natural spatial spread). alpha_single == alpha reproduces+    the uniform-contraction behaviour bit-for-bit.+    mode "none", or alpha==0 and no distinct alpha_single: identity.     """-    if mode == "none" or alpha == 0.0 or coords.shape[0] < k + 2:+    if mode == "none" or coords.shape[0] < k + 2:+        return coords+    if alpha == 0.0 and (alpha_single is None or alpha_single == 0.0):         return coords     from sklearn.neighbors import NearestNeighbors @@ -116,12 +139,17 @@ def contract(coords: np.ndarray, labels_sel: np.ndarray, mode: str, alpha: float             idx = np.flatnonzero(labels_sel == ty)             if idx.size < 3:                 continue+            a = alpha+            if alpha_single is not None and shared_types is not None and str(ty) not in shared_types:+                a = alpha_single+            if a == 0.0:+                continue             kk = int(min(k, idx.size - 1))             sub = coords[idx]             nn = NearestNeighbors(n_neighbors=kk + 1).fit(sub)             _, ind = nn.kneighbors(sub)             cent = sub[ind[:, 1:]].mean(axis=1)-            out[idx] = sub + alpha * (cent - sub)+            out[idx] = sub + a * (cent - sub)         return out     kk = int(min(k, coords.shape[0] - 1))     nn = NearestNeighbors(n_neighbors=kk + 1).fit(coords)@@ -352,10 +380,27 @@ def run(view: str, out: str, seed: int) -> None:     cmode = os.environ.get("T2HI_CONTRACT", "type").strip().lower()     calpha = float(os.environ.get("T2HI_CONTRACT_A", "1.25"))     ck = int(os.environ.get("T2HI_CONTRACT_K", "10"))+    calpha_single = float(os.environ.get("T2HI_CONTRACT_SINGLE", "1.25"))+    shared_types = {ty for ty, k_a, k_b in per_type if k_a > 0 and k_b > 0}     if cmode != "none":         before = rms_radius(coords)-        coords = contract(coords, lab_sel, cmode, calpha, ck)-        print(f"[contract] mode={cmode} alpha={calpha} k={ck} rms {before:.1f}->{rms_radius(coords):.1f}", flush=True)+        prev = coords.copy()+        coords = contract(+            coords, lab_sel, cmode, calpha, ck,+            shared_types=shared_types if cmode == "type" else None,+            alpha_single=calpha_single if cmode == "type" else None,+        )+        disp = np.linalg.norm(coords - prev, axis=1)+        is_shared = np.array([str(ty) in shared_types for ty in lab_sel])+        d_sh = float(disp[is_shared].mean()) if is_shared.any() else 0.0+        d_si = float(disp[~is_shared].mean()) if (~is_shared).any() else 0.0+        print(+            f"[contract] mode={cmode} alpha={calpha} alpha_single={calpha_single} k={ck} "+            f"rms {before:.1f}->{rms_radius(coords):.1f} "+            f"shared_types={len(shared_types)} mean_disp shared={d_sh:.2f} single={d_si:.2f} "+            f"n_shared_cells={int(is_shared.sum())}/{len(disp)}",+            flush=True,+        )     coords = _jitter(coords, rng)     coords = scale_to_rms(coords, target_rms)     print(f"[out] n={expr.shape[0]} out_rms={rms_radius(coords):.1f}", flush=True)

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

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k024World-model evaluation dimensions for state-transition predictorsnotes/competition/07_biomedical_world_models.md
k026Canonicalise predicted 3D coordinates before submissionnotes/pitfalls/04_scorer_invariance.md

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

改了什么在同型 kNN 收缩中实现逐类型 α(共有型 α=1.25、单侧型 α_single 由环境变量 T2HI_CONTRACT_SINGLE 控制),扫描 α_single∈{0.0,0.3,0.5,1.5,1.75} 后按 PLAN 回退条款默认 α_single=1.25,提交输出与父节点 15 逐位相同(Engineer 称 array_equal 验证,变化量表所有指标 ±0.00 与之一致)。
各组分数的变化cell_state:噪声内(实际为零):72.43→72.43,mmd_u 0.02337、variogram 0.0206 均与父完全相同
expression_change:噪声内(实际为零):71.71→71.71,de_score/de_direction raw 与 skill 均不变——提交输出与父逐位相同
local_spatial:噪声内(实际为零):70.19→70.19,neighborhood_mmd raw 0.04178 不变;扫描期间 α_single=0.0 使 nbd raw 恶化至 0.04694、组分 −2.6,超过 PLAN 放弃线 0.044,是回退的直接原因
shape_scale:噪声内(实际为零):50.51→50.51,d2_shape 0.04598 / occupancy 0.8132 / scale_log_ratio 0.4688 三项不变;扫描期间(非提交配置)α_single 减小曾使 d2 raw 0.0453→0.0442、occ 0.816→0.820,组分约 +0.4~0.5,仍贴地板
family_idT2HI-05
假设是否成立否
经验
  1. 在 heart 插值 proxy 上,同型 kNN 收缩对 neighborhood_mmd 的收益主要来自单侧型细胞(占 55%、mean_disp 37.8 vs 共有型 17.9):降低单侧型收缩(α_single 1.25→0)虽按预期改善 d2_shape raw(0.0453→0.0442)和 occupancy raw(0.816→0.820),但 nbd raw 恶化 0.0418→0.0469,净负约 −0.5~−0.7 分——收缩强度这条轴(k、α、逐类型 α)已在平台顶点,不要再扫。
  2. shape_scale 三项贴地板(skill 0.499/0.504/0.512)不是收缩致密化造成的:单侧型完全不收缩(α_single=0)shape_scale 也只从 50.75 升到 51.18(同日查询口径),改善 shape 需要非收缩类机制(如节点 17 的收缩后方差恢复 +1.35)。
  3. 本地评分存在跨日组间漂移(同文件父预测不同日重查 66.21 vs 66.05,expression/cell_state 组漂 0.5~0.9):参数扫描的对照必须同日重查,不能拿历史正式记录当基线。
  4. 带明确放弃阈值和回退条款的 PLAN(如本节点 nbd raw>0.044 即回退)能有效保住父分数:机制被否证时提交逐位同父输出,节点零损失并留下完整扫描曲线。
mechanism_active否
下一步建议
  1. shape_scale(最弱组,50.51 贴地板):放弃收缩参数轴,回到节点 17 已证的收缩后方差恢复机制(+1.35),在其基础上扫各向异性恢复系数 β(沿主轴 vs 垂直主轴分别恢复方差),或恢复目标从全云方差改为逐类型方差。
  2. local_spatial:扫描中 α_single=1.5 的 nbd raw 0.04136 是曲线最优点,但仅比 1.25 好 0.0004(≈+0.03 分),在噪声内,不值得单独提交;若做方差恢复节点可顺带同日复测一次该组合,不单独开节点。
  3. 共有型更多的括号(如 final E8.25+E8.75,31 个共有型)上单侧型占比更低,差异收缩的净效应可能不同,但 nbd 对 α_single 的敏感度是结构性的,预期同向,优先级放低。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数24
工具调用共 24 次:bash 16、edit 6、read 1、write 1
用时13 分
token 数输入 61,083 · 输出 7,550 · 思考 12,805
任务(第一行)按计划修改程序:差异收缩:共有型全收缩、单侧型减收缩以解耦 shape↔neighborhood
最后的回答(摘录)
**做了什么**:按 PLAN(T2HI-05)在父节点 15 的同型 kNN 收缩里实现逐类型 α——共有型(两侧均抽到)保持 α=1.25,单侧型用 `T2HI_CONTRACT_SINGLE`;对照(α_single=1.25)与父输出逐位相同(array_equal 验证)。

**查分结果**(6 次,同日对照重查父文件=66.05):α_single=0.0/0.3/0.5 → 65.52/~65.7/65.78;1.5/1.75 → 66.00/66.09。减收缩确使 shape raw 按机制预期改善(d2 0.0453→0.0442、occ 0.816→0.820),但 nbd raw 0.0418→0.0469 远超 PLAN 放弃线 0.044,净负;加收缩平坦在噪声内。**机制假设被否证**:shape 贴地板不是收缩致密化造成的(单侧型完全不收缩 shape 也只到 51.2)。按 PLAN 回退条款默认 α_single=1.25,提交输出与父逐位相同,METHOD.md 完整记录负结果与曲线。

**下一步最值得试**:收缩强度轴(k、α、逐类型 α)已证平台顶点;shape_scale 需要非收缩类机制——节点 17 的收缩后方差恢复(66.58)是该方向唯一有效解,建议在其基础上继续(如各向异性恢复 β 扫描或与 α_single=1.5 的 nbd 微增益组合)。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/21/engineer.jsonl 135 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/21/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时3 分
token 数输入 18,304 · 输出 1,170 · 思考 7,330
任务(第一行)为节点 n21(改进,父节点 n15)写改进计划 PLAN.json
最后的回答(摘录)
/0.512 全贴地板)。ANALYSIS 明确记录 kNN 收缩存在 neighborhood↔shape 此消彼长(k=20 使 nbd raw 更好但 shape_scale 50.51→49.78)。根本原因:单侧类型(仅从一个阶段抽取)本身表达-位置配对正确,对其做 α=1.25 收缩只是无谓压缩空间分布,损害 d2_shape 和 occupancy_dice;而共有类型(两侧混抽)存在人为双峰,收缩才有邻域收益。节点 17 用收缩后方差恢复部分解耦(shape +1.35),但那是事后补救;本方案从收缩本身入手,按类型来源差异化强度,是不同机制。",
  "approach": "在父节点 15 的 contract() 函数中引入逐类型 α:(1) 主流程已有 per-type 配额抽样,记录哪些类型是共有型(两侧均抽到 ≥1 个细胞);(2) 将 shared_types: set 传入 contract();(3) 收缩循环中,共有型用 α_shared=1.25(不变),单侧型用 α_single(环境变量 T2HI_CONTRACT_SINGLE,默认 0.3);(4) 其余流程(procrustes 对齐、log-linear RMS target、scale_to_rms、jitter)不变。参数扫描:α_single ∈ {0.0, 0.25, 0.5, 1.25(=对照)},每个只跑一次 vec-score(A 半),比较 shape_scale 三项 raw 与 nbd raw;若 α_single=0.3 的榜分 >66.21 且 nbd raw ≤0.042 则提交,否则退回 α_single=1.25(逐位等于父)。单输入退路:copy_last 分支在收缩之前返回,不受影响。预期 3 次查分可完成筛选(对照 + 2 个候选),留余量复测最佳点。",
  "expected_groups": ["shape_scale"],
  "risks": "1) 单侧型占细胞多数,减收缩后全云 RMS 增大,scale_to_rms 会额外压缩,可能部分抵消形状收益——但 d2_shape 和 occupancy_dice 都是尺度不变的(除以/缩放至各自 RMS),所以形状指标不受影响。2) 若共有型数量极少(此 proxy 仅 5 个),单侧型占绝大多数细胞,nbd 收益可能主要来自单侧型的邻域一致性而非共有型合并,减收缩可能小幅损害 nbd——Engineer 应在第一次查分时检查 nbd raw 是否 >0.044(超此值则放弃)。3) α_single=0 时单侧型完全不收缩,若这些型内有抽样导致的空间离群点,nbd 可能略差——α_single=0.25 是保底。",
  "family_id": "T2HI-05",
  "mechanism": "按类型来源差异化收缩强度:共有型(两侧混抽、存在人为空间双峰)保持全收缩 α=1.25 以合并亚簇;单侧型(表达-位置配对本身正确)降低收缩至 α_single≤0.5,保留其自然空间分布,减少不必要的致密化对 d2_shape/occupancy_dice 的损害。",
  "vs_constant_shift": "这不是对每个类型施加统一位移向量,也不是全局组成重加权。它改变的是每个细胞向同型 kNN 质心移动的比例(α),且该比例由类型的跨阶段组成决定:同一云内不同类型的 α 不同,同一类型内每个细胞的位移方向和距离取决于其局部邻域,不是常数。",
  "mechanism_evidence": "Engineer 应记录并对比:(1) d2_shape raw(预期从 0.046 降至 <0.042);(2) occupancy_dice raw(预期从 0.813 升至 >0.82);(3) nbd_mmd raw(预期 ≤0.042,不明显恶化);(4) 收缩前后全云 RMS 变化(单侧型减收缩后 pre-scale RMS 应更大);(5) 逐类型收缩位移范数的分布:单侧型位移应显著小于共有型。若 d2_shape 和 occupancy 无改善,说明形状贴地板不是收缩致密化造成的,机制假设不成立。",
  "mechanism_off_control": "设 T2HI_CONTRACT_SINGLE=1.25(等于 α_shared),所有类型统一收缩,输出应与父节点 15 逐位相同(array_equal 验证)。预期差别:关闭后输出完全一致、分数相同(66.21);开启后(α_single<1.25)shape_scale 三项 raw 改善而 nbd raw 不显著恶化。",
  "sources": []
}
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/21/researcher.jsonl 5 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/21/researcher.stderr