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

总览 · ← 返回运行 20261003-171955-search-t2-embryo-interp-chain-12h

节点 n33

NO_CHANGE: 非对称收敛强度(up-DE α 下调/上调共 9 组)+ per-type 自适应 α(备选机制 3 组)全部落在噪声内;最佳 α_up=6/α_down=4 仅 +0.10(≪1 分 T2 噪声),PLAN 的 α_up 下调方向单调劣化并触发其自身 abort 判据。提交默认 α_up=α_down=5.0、TYPEADAPT_P=0,seed 0 输出与父节点 24/3

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

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

来自 programs.git 2c9d2f7508:solution/METHOD.md

NO_CHANGE: 非对称收敛强度(up-DE α 下调/上调共 9 组)+ per-type 自适应 α(备选机制 3 组)全部落在噪声内;最佳 α_up=6/α_down=4 仅 +0.10(≪1 分 T2 噪声),PLAN 的 α_up 下调方向单调劣化并触发其自身 abort 判据。提交默认 α_up=α_down=5.0、TYPEADAPT_P=0,seed 0 输出与父节点 24/32 逐位相同。

  • family_id: T2EI-01
  • parent: node 32(= node 24,mix + 表达收敛管线,A 半同日锚点 61.4533 / B 半 62.52)
  • board: T2:embryo:val_interp(E6.75 + E8.0 → E7.25,t=0.4,A 半查分)

PLAN 要求与实现

PLAN 假设:DETFIX(node 32)证明真值在 up-DE 基因上比括号线性插值更"早",故对称 α=5 系统性过冲 up-DE, 把 up-DE 基因(Δ_g≥0.25)的收敛强度降到 α_up∈{3,3.5,4,4.5}、down-DE(Δ_g≤−0.25)保持/略增 α_down∈{5,5.5,6}, 应改善 mmd_u(cell_state 瓶颈,skill 0.607)而不损 neighborhood。

实现:在 mix_converge 的 _shift 位移 c·w·Δ 上,按 sign(Δ_g) 施加逐基因缩放 asym[g] = α_up/α(Δ>0)| α_down/α(Δ<0)| 1(Δ=0),投影权重 w(λ)仍用真实 Δ 方向。 α_up=α_down=α 时 asym≡1,逐位复现父节点(已用 array_equal 验证 X 与 spatial_3D)。 新增 env:T2_CONVERGE_ALPHA_UP、T2_CONVERGE_ALPHA_DOWN;--ablate mechanism 强制二者=α 并关 typeadapt。 证据字段:disp_up/down_per_cellgene(up/down-DE 基因上 per-cell 平均位移)、scale_up/down、n_up/down_genes。

机制生效证据(α_up=4.0 vs 锚点 α=5,seed 0)

  • up-DE 位移:disp_up_per_cellgene 0.429627 → 0.394189(原始 scale 0.8×,clip@0+nnz-only 后实测 −8%);down-DE 位移不变(0.876482)。机制确实只改 up-DE 位移。
  • 改动细胞数:3106/5000;坐标逐位不动(表达–位置配对保持)。
  • DE 基因数:up-DE 1512、down-DE 152(发育中以 up 为主)。
  • 四组分(α_up=4.0):cell_state 48.44(−0.49)、expression_change 60.94(−0.03)、local_spatial 57.76(−0.40)、shape_scale 77.75(+0.00)。

全部查分(同日 A 半,seed 0,锚点 = 61.4533;raw Δ 相对锚点;points 见下表)

判据(PLAN):GATE1 = mmd_u raw 降 ≥0.0003 且 neighborhood raw 恶化 <0.001;GATE2 = 净榜分 > 锚点 +1.0。

configα_upα_downtypeadapt_pboardΔboardmmd_u raw (Δ)variogram raw (Δ)nbrhd raw (Δ)GATE1GATE2
anchor5.05.0061.4533—0.011640.014420.05506——
up40_dn504.05.0061.2232−0.2300.01163 (−0.00001)0.01504 (+0.00062)0.05596 (+0.00090)fail(mmd)fail
up45_dn504.55.0061.3658−0.0870.01159 (−0.00005)0.01469 (+0.00027)0.05545 (+0.00039)fail(mmd)fail
up45_dn554.55.5061.3645−0.090.01170 (+0.00006)0.01471 (+0.00029)0.05516 (+0.00010)failfail
up50_dn605.06.0061.4289−0.0240.01192 (+0.00028)0.01446 (+0.00004)0.05457 (−0.00049)failfail
up60_dn506.05.0061.5244+0.0710.01195 (+0.00031)0.01401 (−0.00041)0.05437 (−0.00069)fail(mmd升)fail
up60_dn406.04.0061.5540+0.1010.01169 (+0.00005)0.01398 (−0.00044)0.05476 (−0.00030)failfail
up70_dn407.04.0061.3729−0.0800.01214 (+0.00050)0.01372 (−0.00070)0.05422 (−0.00084)failfail
up70_dn507.05.0061.2917−0.1620.01253 (+0.00089)0.01375 (−0.00067)0.05401 (−0.00105)failfail
up80_dn408.04.0061.2598−0.1940.01283 (+0.00119)0.01353 (−0.00089)0.05398 (−0.00108)failfail
ta_p155.05.0+1.561.3389−0.1140.01157 (−0.00007)0.01494 (+0.00052)0.05536 (+0.00030)failfail
ta_pn155.05.0−1.561.0430−0.4100.01256 (+0.00092)0.01417 (−0.00025)0.05520 (+0.00014)failfail
ta_p15_up60dn406.04.0+1.561.4831+0.0300.01149 (−0.00015)0.01441 (−0.00001)0.05526 (+0.00020)fail(mmd 0.00015<0.0003)fail

points 分项(de_score / de_dir / mmd_u / variogram / d2 / occ / scale / nbrhd,八项和=榜分):

configde_scorde_dirmmd_uvariogrd2occscalenbrhd
anchor7.2677.9757.5864.6468.1593.5117.76714.540
up40_dn507.2677.9687.5884.5228.1593.5117.76714.440
up60_dn407.2687.9627.5734.7398.1593.5117.76714.573
up80_dn407.1037.9277.2924.8388.1593.5117.76714.662
ta_p15_up60dn407.2687.9877.6244.6488.1593.5117.76714.518

(坐标三项 d2_shape/occupancy_dice/scale_log_ratio 全程不动——所有机制只改表达,坐标逐位保持。)

为什么判无效(PLAN 方向被证否)

  1. PLAN 的 α_up 下调方向单调劣化:α_up 5→4.5→4.0,board 61.45→61.37→61.22 单调下降;mmd_u 几乎不动 (−0.00001~−0.00005,远低于 GATE1 要求的 0.0003 降幅),而 variogram(+0.00027~+0.00062) 与 neighborhood(+0.00039~+0.00090) 单调恶化。PLAN 自己的 abort 判据("mmd_u 未改善而 neighborhood 恶化 → α 降低方向错误,立即终止")已触发。 DETFIX 的"真值更保守"推论不能通过降低 up-DE 位移兑现为 mmd_u 改善。
  2. 反方向(α_up 上调)只是重找对称 α 峰:α_up↑ 改善 variogram/nbrhood 但加速劣化 mmd_u(与父节点对称 α 扫描同构); 全表最佳 up60_dn40(α_up=6/α_down=4)+0.10,是父节点已测对称 α≈5.5–6 峰(+0.037)的另一种参数化,在 1 分 T2 噪声内, 远低于 GATE2 的 +1.0,B 半不会兑现。
  3. 没有任何非对称点打破 mmd_u↔压缩张力:up-DE 基因占 1512/1664,主导压缩对 variogram/nbrhood 的收益与对 mmd_u 的代价, 非对称缩放只是沿同一前沿移动,不产生净收益。

备选机制(同弱项,亦被证否):per-type 自适应 α

假设:全局 α 对端点已接近的类型(‖Δ_type‖ 小、双峰弱)过度压缩,破坏其自然型内方差 → mmd_u 瓶颈。 按 α_type = α·clip((‖Δ_type‖/median)^p, 0.6, 1.6)(‖Δ_type‖ = DE-thresholded Δ 的 L2 范数,纯数据导出)逐类型缩放。 实测各型范数近乎均匀(r=0.62–1.20,多数 0.95–1.05),故扰动很小:

  • ta_p15(p=+1.5,远端多压):board −0.11,mmd_u −0.00007(flat);
  • ta_pn15(p=−1.5,远端少压):board −0.41,mmd_u +0.00092(恶化);
  • ta_p15_up60dn40(p=+1.5 叠最佳非对称):board +0.03,mmd_u −0.00015(改善但仅 GATE1 阈值一半),净仍噪声内。

备选机制同样落在噪声内,无可交的正收益版本。

--ablate 对照

--ablate mechanism 强制 α_up=α_down=α、TYPEADAPT_P=0、SPREAD_KAPPA=0、DETFIX_FRAC=0, 输出与父节点 24 逐位相同(array_equal 验证 X 与 spatial_3D)。提交默认即此状态 → mechanism_active = no(诚实:机制被证否、默认不激活)。

知识来源

无。本节点是纯参数/机制搜索,只使用从视图输入现场计算的量(type_means、Δ=μ_b−μ_a、‖Δ_type‖、相对时间 t), 不写入任何保留阶段/基因型的测量值、细胞类型清单、比例或表达量;不使用文献/检索/记忆中的发育数值。

结论与给后续节点的建议

  • 非对称收敛强度(up-DE α 拆分,双向)与 per-type 自适应 α 均判无效:13 组同日 A 半查分,全部在锚点 ±0.4 内, 最佳 +0.10(噪声)。这是 mix 家族在 embryo:val_interp 上 cell_state/variogram 弱项的第 6/7 次证伪 (父节点已列选择侧 5 连败、坐标侧 5 连败、数值侧 variance_restore/recolor/DETFIX/对称α/β 均失败)。
  • 62.5 大概率是本榜 mix 家族平台。mmd_u 瓶颈是 mix 固有的型内端点双峰:位移幅度类机制(对称/非对称/自适应 α、β) 无法在不做平均(会塌 variogram/mmd_u)的前提下消除双峰。DETFIX 已证"朝插值目标修复统计量"反向恶化。
  • 不建议后续在本榜继续 cell_state/variogram 方向的位移幅度微调;若仍要动,需换结构性机制 (如型内真实细胞的非平均式重排,或完全不同的解码),并必须同日锚点比较 + 多 seed 验证方能区分噪声。
  • 建议把火力转向 heart 两榜(尤其外推榜,需同日锚点,本地尺子已知高估),复用本树 mix+收敛管线作起点。

调研员的计划

名称非对称收敛强度:up-DE 基因 α 下调(DETFIX 反向验证)
动机节点 32 DETFIX 实验(−3.80)证明真实中间阶段在 up-DE 基因上比线性插值目标 (1−t)μ_a+t·μ_b 更'早'(检出频率缺口 0.087→0.023 修复后反而大幅恶化)。当前 α=5 对 up-DE 与 down-DE 基因施加对称位移,系统性高估了 up-DE 基因的中间态表达。mmd_u skill 0.617(raw 0.01123)是表达分布组的主要瓶颈;DETFIX 方向性失败提示减小 up-DE 位移可改善 mmd_u 而不损 neighborhood(α 扫描显示两者此消彼长的根源可能是 up-DE 过冲)。父节点 ANALYSIS 明确建议'α 降到 4–4.5 或减小 up-DE 位移幅度'作为唯一未试方向。
做法在父节点 32 代码(α=5, λ=6, β=0.2, aniso, jitter, RMS 回缩全部保留)的 converge 步骤中,将位移按基因方向拆分:对 Δ_g≥0.25(up-DE)的基因用 α_up,对 Δ_g≤−0.25(down-DE)的基因用 α_down。实现:在计算 w·α·t·Δ 时,按 sign(Δ_g) 选取不同 α。搜索网格:α_up ∈ {3.0, 3.5, 4.0, 4.5},α_down ∈ {5.0, 5.5, 6.0},共 12 组合。先跑 α_up=4.0/α_down=5.0 与 α_up=4.5/α_down=5.0 两个点做同日锚点比较(锚点 = 本节点代码 α_up=α_down=5.0),确认方向后再扩展。判定标准:(1) mmd_u raw 下降 ≥0.0003 且 neighborhood_mmd raw 恶化 <0.001;(2) 净榜分超锚点 +1.0(>噪声)。若 α_up=4.5/α_down=5.0 已满足则不必扫全网格。单输入阶段退路:无括号时 fallback 到 copy_last,机制不触发。vec-score 查分用 A 半,每次查分前确认 α_up=α_down=5 时输出与父节点 24 逐位一致(array_equal)。预计 4–6 次查分。
风险1) α 降低可能同时减弱 neighborhood/variogram 的改善(α 扫描显示它们随 α 单调改善),净效应仍为零——Engineer 应在第一次查分后对比 mmd_u 降幅与 nbrhd 升幅,若 mmd_u 改善 <0.0002 立即停止;2) 改善幅度可能 <1 分噪声,需同日锚点重复验证(跑锚点 2 次确认方差);3) λ=6 的投影加权可能与 α 缩减产生交互(w clip 下界 0.2 使极端细胞仍大幅移动),若首次结果噪声内可试 λ=4 配合。

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

对比:父节点版本 6fa4ef185b。改动的文件:solution/METHOD.md +93 −62、solution/README.md +15 −9、solution/run.py +100 −18

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex a19285d..396891d 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,67 +1,98 @@-NO_CHANGE: 型内质心距离控制交换(κ=0.3–3.0 共 7 种解码全部劣于同日锚点,κ≥3 触发邻域否决线;备选 DETFIX、β 微调同被证否)--## 结论--按 PLAN(T2EI-01:型内表达质心距离控制交换,T2_SPREAD_KAPPA)实现并完成 off/on 对照与 7 种解码查分:机制按设计生效(交换确实压缩型内散布、variogram raw 单调下降),但 variogram 可得收益上限仅约 +0.21 pts,而交换附带的 neighborhood_mmd / de_direction / occupancy_dice 损失更大,全部组合净负或噪声内(+0.013 至 −0.85,同日 A 半锚点 61.453)。随后按 §2 要求试了针对同一弱项(cell_state/variogram)的备选机制与幅度扫描:DETFIX(DE 上调基因检出频率向括号插值目标恢复)被强烈证否(−3.80,并揭示线性插值目标系统性高估真实中间阶段);β 配对收缩 0.3/0.4 净 ≈0;收敛强度 α=5.5/6.0/6.5/8.0 扫描显示 neighborhood_mmd 与 variogram 随 α 单调改善(α=6.5 时 nbrhd raw 0.05387 为全表最好)但 mmd_u 以更快速度劣化,净峰值 α=5.5 仅 +0.037(远低于 ~1 分噪声)。共 15 次查分(含锚点重复 1 次),无一配置超出噪声。**提交默认 SPREAD_KAPPA=0、DETFIX_FRAC=0、α=5、β=0.2,seed 0 输出与父节点 24 逐位相同(array_equal 验证 X 与 spatial_3D),`--ablate mechanism` 同样逐位复现父节点。**--## 实现--在父节点 24 全部管线(mix 分层、procrustes3d、α=5、λ=6、β=0.2、aniso、jitter、RMS 回缩)的 mix_indices 之后、converge shift 之前新增:--1. **SPREAD 交换(PLAN 机制)**:每个共有类型(两侧池 ≥20 细胞)计算插值质心 μ_tgt=(1−t)μ_a+tμ_b(全面板基因);对池内每个细胞算 d_i=‖x_i−μ_tgt‖₂(只用该细胞 nnz 基因,DE 模式下再限制到 |Δ_type|≥0.25 基因);每侧按已抽细胞的 d 中位数 d_med,对 d_i>d_med 者以 p=clip(κ(d_i−d_med)/d_med,0,1) 与同型同侧未抽中且 d_j<d_med 的细胞交换。专用 rng(seed+987654321),不扰动主管线 rng 流 → κ=0 逐位复现父节点。解码变体:`T2_SPREAD_DIST_MODE=de`(距离只看 DE 基因)、`T2_SPREAD_RAD_MULT>0`(空间受限:替换细胞须在 R_max=mult×池内 NN 距离 P90 内,取空间最近者,保护邻域)。-2. **DETFIX(备选机制 1)**:β 步之后,对每个共有类型(输出两侧各 ≥10 细胞)的每个上调 DE 基因(δ≥0.25),按检出频率缺口 f_tgt−f_out(f_tgt=(1−t)f_a+t·f_b,池上现场算)激活 n_add=round(frac·缺口·n_block) 个「最进步」零细胞(按型内 Δ 投影排序),供体值从同型 b 侧已表达值分位匹配,每细胞激活数封顶 10。只翻 0→正,不改已有值、不动坐标。-3. **β 微调(备选机制 2)**:T2_PAIR_BETA 0.3/0.4(父节点 0.2)。--`--ablate <任意名>`:把 SPREAD_KAPPA 与 DETFIX_FRAC 都置 0,其余步骤、seed、输出格式不变。--## 机制生效证据(PLAN mechanism_evidence 各项)--- **交换量**:κ=0.3/0.6/1.0/3.0 → 61/137/222/659 次交换(占 5000 细胞的 1.2%/2.7%/4.4%/13.2%;共有类型内 swap_frac 均值 2.0%/3.8%/5.6%/19.0%;a 侧 108、b 侧 29 @κ=0.6);空间受限 κ=3.0×rad3 → 629 次;DE 模式 κ=1.0 → 212 次。交换为 0 的配置只有 κ=0(默认提交态,此时不算距离、不消费 rng)。-- **型内 RMS 散布(全基因,相对 μ_tgt)**:κ=0.6 → ×0.990(a 0.988 / b 0.991);κ=1.0 → ×0.987;κ=3.0 → ×0.958;κ=3.0×rad3 → ×0.961。机制确实压缩散布,且随 κ 单调。-- **DETFIX**:frac=1.0 时 9 个共有类型、29480 次激活、3005 个细胞、273 个基因被触及;型内 up-DE 检出频率缺口 0.087→0.023;零元 1437473→1407993。-- **四组分变化**见下表(同日 A 半,锚点=本节点代码关闭机制,board 61.453:cell_state 48.93 / expression 60.97 / local 58.16 / shape 77.75)。--## 查分记录(同日 A 半,锚点 61.453;共 11 次查询,含锚点重复 1 次)--| 配置 | board | 净Δ | variogram raw | mmd_u raw | nbrhd raw | de_dir | 判定 |-|---|---:|---:|---:|---:|---:|---:|---|-| off(锚点,=父节点24) | 61.453 | — | 0.01442 | 0.01164 | 0.05506 | 0.3853 | — |-| κ=0.3 all | 61.462 | +0.013 | 0.01435 | 0.01169 | 0.05559 | 0.3846 | 噪声内;增益来自 shape 抽样运气(occup +0.05、d2 +0.03),variogram 仅 +0.014 pts,PLAN 降幅阈值 0.0005 未达(实际 −0.00007) |-| κ=0.6 all | 61.378 | −0.071 | 0.01418 | 0.01154 | 0.05542 | 0.3823 | variogram 降 0.000245 <0.0005 → PLAN 停止线 |-| κ=1.0 all | 61.245 | −0.206 | 0.01398 | 0.01165 | 0.05562 | 0.3793 | 同上,降幅 0.00044 仍 <0.0005,de_dir/occup 继续掉 |-| κ=1.0 de模式 | 61.318 | −0.135 | 0.01422 | 0.01164 | 0.05571 | 0.3848 | DE 距离解码不改变结论 |-| κ=3.0 all | 60.606 | −0.845 | 0.01382 | 0.01212 | 0.05852 | 0.3707 | nbrhd +0.0035 >0.001 → 否决线 |-| κ=3.0 空间受限 rad3 | 61.189 | −0.261 | 0.01346 | 0.01176 | 0.05712 | 0.3636 | variogram 最大增益 +0.208 pts,但 nbrhd +0.0021 仍破否决线,de_dir −0.122、occup −0.091 |-| DETFIX frac=1.0 | 57.649 | −3.804 | 0.02568 | 0.01480 | 0.06695 | 0.3621 | 强烈证否 |-| β=0.3 | 61.459 | +0.004 | 0.01430 | 0.01152 | 0.05556 | 0.3862 | 噪声内 |-| β=0.4 | 61.444 | −0.009 | 0.01417 | 0.01145 | 0.05611 | 0.3864 | cell_state +0.40(49.33,全表最高)但 nbrhd −0.118 抵消 |-| α=5.5(幅度扫描) | 61.487 | +0.037 | 0.01423 | 0.01192 | 0.05447 | 0.3850 | 噪声内;nbrhd +0.065、vari +0.041,被 mmd −0.070 抵消 |-| α=6.0 | 61.447 | −0.004 | 0.01405 | 0.01236 | 0.05408 | 0.3828 | nbrhd +0.110 但 mmd −0.180 |-| α=6.5 | 61.359 | −0.094 | 0.01393 | 0.01290 | 0.05387 | 0.3814 | nbrhd 全表最好(raw 0.05387)但 mmd −0.310 |-| α=8.0 | 60.800 | −0.651 | 0.01367 | 0.01524 | 0.05456 | 0.3771 | mmd 崩塌 −0.823 |--逐项 points 差(对锚点)示例:κ=3.0×rad3:vari +0.208、mmd −0.030、de_dir −0.122、de_score 0、nbrhd −0.228、occup −0.091、d2 +0.001、scale +0.001 → 净 −0.261。κ=0.6:vari +0.052、mmd +0.026、de_dir −0.017、nbrhd −0.040、occup −0.061、d2 −0.032 → 净 −0.071。--## 为什么判无效(结论性认识)--1. **variogram 对压缩的响应太弱**:型内 RMS 压缩 4%(659 次交换)只换来 raw −0.0006~−0.00096(+0.13~+0.21 pts);而任何改变「哪些细胞在哪个坐标上表达什么」的操作,neighborhood_mmd(25 pts + 门住 shape 组)的损失都 ≥ 该收益。κ=0.3 的 +0.013 是坐标抽样噪声(增益全在 occupancy/d2,variogram 贡献 +0.014 pts),低于 T2 噪声阈(约 1 分),不算进步。-2. **DETFIX 揭示了一个新的强事实**:按类型线性插值的检出频率/伪批量目标(f_tgt、pb_tgt)**系统性高估**真实中间阶段——把 up-DE 基因检出频率从 0.096 拉向 0.122 使 variogram raw 从 0.0144 恶化到 0.0257(比父节点差 78%)。即真实 E7.25 的 up-DE 基因表达比 (1−t)A+tB 插值**更靠近早期阶段**(发育转录变化在括号后段加速,或插值高估了中间态成熟度)。父节点管线的「欠收敛」表象(up-gene pb 0.454 < 插值目标 0.576)其实方向正确,任何朝插值目标的恢复(幅度或频率)都应当放弃——这与节点 17/19/21 的失败一致,并给出统一解释。-3. β(DE 基因配对中点收缩)0.2→0.4 单调改善 cell_state(48.93→49.33)但 neighborhood 损失同步单调(−0.118),净 ≈0:表达侧压缩的收益/代价比在本管线当前压缩水平上已经打平。-4. **α(收敛强度)扫描给出一条清晰的结构约束**:随 α 5→6.5,neighborhood_mmd 单调改善(raw 0.05506→0.05387,全表最好)、variogram 单调改善(0.01442→0.01393),但 mmd_u 单调**加速**劣化(0.01164→0.01290→0.01524 @α=8)。原因:α 越大,两侧细胞越向中间态过冲,输出表达分布越窄/越偏离真值中间态(mmd_u 抓整体分布,neighborhood 只看局部配对平滑度)。净分在 α=5.5 处峰值 +0.037(噪声内),α=6 已回到 −0.004。这**验证了父节点 α=5 已近最优**,也说明 neighborhood / variogram 与 mmd_u 之间存在此消彼长的结构性张力:任何靠加大压缩换 neighborhood/variogram 的方向,都会被 mmd_u 的更快劣化吞掉。--## 验证过 / 未验证--- 验证:κ=0 与 `--ablate`(即使 env 开启机制)输出与父节点 24 逐位相同;seed 0 双跑逐位一致、seed 1 不同;vec-check ok;全部 9 个查分配置。-- 未验证:κ∈(1,3) 中间值(趋势单调,无必要);DETFIX 只查了 frac=1.0(−3.8 远超噪声,且方向性结论由 variogram raw +78% 支撑,无需再烧额度);单输入阶段退路与父节点相同(提前 return,机制不执行);伪装视图重跑(代码只依赖视图数据与时间差,t 在时间平移下不变,无绝对时间/路径/文件名分支)。-- 运行:CPU ~1.2 s / ~0.4 GB(EXECUTION.json gpu:false),远低于 limits(28 GB / 30 min)。+NO_CHANGE: 非对称收敛强度(up-DE α 下调/上调共 9 组)+ per-type 自适应 α(备选机制 3 组)全部落在噪声内;最佳 α_up=6/α_down=4 仅 +0.10(≪1 分 T2 噪声),PLAN 的 α_up 下调方向单调劣化并触发其自身 abort 判据。提交默认 α_up=α_down=5.0、TYPEADAPT_P=0,seed 0 输出与父节点 24/32 逐位相同。++- family_id: T2EI-01+- parent: node 32(= node 24,mix + 表达收敛管线,A 半同日锚点 61.4533 / B 半 62.52)+- board: T2:embryo:val_interp(E6.75 + E8.0 → E7.25,t=0.4,A 半查分)++## PLAN 要求与实现++PLAN 假设:DETFIX(node 32)证明真值在 up-DE 基因上比括号线性插值更"早",故对称 α=5 系统性过冲 up-DE,+把 up-DE 基因(Δ_g≥0.25)的收敛强度降到 α_up∈{3,3.5,4,4.5}、down-DE(Δ_g≤−0.25)保持/略增 α_down∈{5,5.5,6},+应改善 mmd_u(cell_state 瓶颈,skill 0.607)而不损 neighborhood。++实现:在 `mix_converge` 的 `_shift` 位移 `c·w·Δ` 上,按 sign(Δ_g) 施加逐基因缩放+`asym[g] = α_up/α(Δ>0)| α_down/α(Δ<0)| 1(Δ=0)`,投影权重 w(λ)仍用真实 Δ 方向。+`α_up=α_down=α` 时 asym≡1,逐位复现父节点(已用 array_equal 验证 X 与 spatial_3D)。+新增 env:`T2_CONVERGE_ALPHA_UP`、`T2_CONVERGE_ALPHA_DOWN`;`--ablate mechanism` 强制二者=α 并关 typeadapt。+证据字段:`disp_up/down_per_cellgene`(up/down-DE 基因上 per-cell 平均位移)、`scale_up/down`、`n_up/down_genes`。++## 机制生效证据(α_up=4.0 vs 锚点 α=5,seed 0)++- up-DE 位移:`disp_up_per_cellgene` 0.429627 → 0.394189(原始 scale 0.8×,clip@0+nnz-only 后实测 −8%);down-DE 位移不变(0.876482)。机制确实只改 up-DE 位移。+- 改动细胞数:3106/5000;坐标逐位不动(表达–位置配对保持)。+- DE 基因数:up-DE 1512、down-DE 152(发育中以 up 为主)。+- 四组分(α_up=4.0):cell_state 48.44(−0.49)、expression_change 60.94(−0.03)、local_spatial 57.76(−0.40)、shape_scale 77.75(+0.00)。++## 全部查分(同日 A 半,seed 0,锚点 = 61.4533;raw Δ 相对锚点;points 见下表)++判据(PLAN):GATE1 = mmd_u raw 降 ≥0.0003 且 neighborhood raw 恶化 <0.001;GATE2 = 净榜分 > 锚点 +1.0。++| config | α_up | α_down | typeadapt_p | board | Δboard | mmd_u raw (Δ) | variogram raw (Δ) | nbrhd raw (Δ) | GATE1 | GATE2 |+|---|---|---|---|---|---|---|---|---|---|---|+| anchor | 5.0 | 5.0 | 0 | 61.4533 | — | 0.01164 | 0.01442 | 0.05506 | — | — |+| up40_dn50 | 4.0 | 5.0 | 0 | 61.2232 | −0.230 | 0.01163 (−0.00001) | 0.01504 (+0.00062) | 0.05596 (+0.00090) | fail(mmd) | fail |+| up45_dn50 | 4.5 | 5.0 | 0 | 61.3658 | −0.087 | 0.01159 (−0.00005) | 0.01469 (+0.00027) | 0.05545 (+0.00039) | fail(mmd) | fail |+| up45_dn55 | 4.5 | 5.5 | 0 | 61.3645 | −0.09 | 0.01170 (+0.00006) | 0.01471 (+0.00029) | 0.05516 (+0.00010) | fail | fail |+| up50_dn60 | 5.0 | 6.0 | 0 | 61.4289 | −0.024 | 0.01192 (+0.00028) | 0.01446 (+0.00004) | 0.05457 (−0.00049) | fail | fail |+| up60_dn50 | 6.0 | 5.0 | 0 | 61.5244 | +0.071 | 0.01195 (+0.00031) | 0.01401 (−0.00041) | 0.05437 (−0.00069) | fail(mmd升) | fail |+| **up60_dn40** | 6.0 | 4.0 | 0 | **61.5540** | **+0.101** | 0.01169 (+0.00005) | 0.01398 (−0.00044) | 0.05476 (−0.00030) | fail | fail |+| up70_dn40 | 7.0 | 4.0 | 0 | 61.3729 | −0.080 | 0.01214 (+0.00050) | 0.01372 (−0.00070) | 0.05422 (−0.00084) | fail | fail |+| up70_dn50 | 7.0 | 5.0 | 0 | 61.2917 | −0.162 | 0.01253 (+0.00089) | 0.01375 (−0.00067) | 0.05401 (−0.00105) | fail | fail |+| up80_dn40 | 8.0 | 4.0 | 0 | 61.2598 | −0.194 | 0.01283 (+0.00119) | 0.01353 (−0.00089) | 0.05398 (−0.00108) | fail | fail |+| ta_p15 | 5.0 | 5.0 | +1.5 | 61.3389 | −0.114 | 0.01157 (−0.00007) | 0.01494 (+0.00052) | 0.05536 (+0.00030) | fail | fail |+| ta_pn15 | 5.0 | 5.0 | −1.5 | 61.0430 | −0.410 | 0.01256 (+0.00092) | 0.01417 (−0.00025) | 0.05520 (+0.00014) | fail | fail |+| ta_p15_up60dn40 | 6.0 | 4.0 | +1.5 | 61.4831 | +0.030 | 0.01149 (−0.00015) | 0.01441 (−0.00001) | 0.05526 (+0.00020) | fail(mmd 0.00015<0.0003) | fail |++points 分项(de_score / de_dir / mmd_u / variogram / d2 / occ / scale / nbrhd,八项和=榜分):++| config | de_scor | de_dir | mmd_u | variogr | d2 | occ | scale | nbrhd |+|---|---|---|---|---|---|---|---|---|+| anchor | 7.267 | 7.975 | 7.586 | 4.646 | 8.159 | 3.511 | 7.767 | 14.540 |+| up40_dn50 | 7.267 | 7.968 | 7.588 | 4.522 | 8.159 | 3.511 | 7.767 | 14.440 |+| up60_dn40 | 7.268 | 7.962 | 7.573 | 4.739 | 8.159 | 3.511 | 7.767 | 14.573 |+| up80_dn40 | 7.103 | 7.927 | 7.292 | 4.838 | 8.159 | 3.511 | 7.767 | 14.662 |+| ta_p15_up60dn40 | 7.268 | 7.987 | 7.624 | 4.648 | 8.159 | 3.511 | 7.767 | 14.518 |++(坐标三项 d2_shape/occupancy_dice/scale_log_ratio 全程不动——所有机制只改表达,坐标逐位保持。)++## 为什么判无效(PLAN 方向被证否)++1. **PLAN 的 α_up 下调方向单调劣化**:α_up 5→4.5→4.0,board 61.45→61.37→61.22 单调下降;mmd_u 几乎不动+   (−0.00001~−0.00005,远低于 GATE1 要求的 0.0003 降幅),而 variogram(+0.00027~+0.00062) 与+   neighborhood(+0.00039~+0.00090) 单调恶化。**PLAN 自己的 abort 判据("mmd_u 未改善而 neighborhood 恶化 → α 降低方向错误,立即终止")已触发。** DETFIX 的"真值更保守"推论不能通过降低 up-DE 位移兑现为 mmd_u 改善。+2. **反方向(α_up 上调)只是重找对称 α 峰**:α_up↑ 改善 variogram/nbrhood 但加速劣化 mmd_u(与父节点对称 α 扫描同构);+   全表最佳 up60_dn40(α_up=6/α_down=4)+0.10,是父节点已测对称 α≈5.5–6 峰(+0.037)的另一种参数化,**在 1 分 T2 噪声内**,+   远低于 GATE2 的 +1.0,B 半不会兑现。+3. **没有任何非对称点打破 mmd_u↔压缩张力**:up-DE 基因占 1512/1664,主导压缩对 variogram/nbrhood 的收益与对 mmd_u 的代价,+   非对称缩放只是沿同一前沿移动,不产生净收益。++## 备选机制(同弱项,亦被证否):per-type 自适应 α++假设:全局 α 对端点已接近的类型(‖Δ_type‖ 小、双峰弱)过度压缩,破坏其自然型内方差 → mmd_u 瓶颈。+按 `α_type = α·clip((‖Δ_type‖/median)^p, 0.6, 1.6)`(‖Δ_type‖ = DE-thresholded Δ 的 L2 范数,纯数据导出)逐类型缩放。+实测各型范数近乎均匀(r=0.62–1.20,多数 0.95–1.05),故扰动很小:+- ta_p15(p=+1.5,远端多压):board −0.11,mmd_u −0.00007(flat);+- ta_pn15(p=−1.5,远端少压):board −0.41,mmd_u +0.00092(恶化);+- ta_p15_up60dn40(p=+1.5 叠最佳非对称):board +0.03,mmd_u −0.00015(改善但仅 GATE1 阈值一半),净仍噪声内。+备选机制同样落在噪声内,无可交的正收益版本。++## --ablate 对照++`--ablate mechanism` 强制 α_up=α_down=α、TYPEADAPT_P=0、SPREAD_KAPPA=0、DETFIX_FRAC=0,+输出与父节点 24 逐位相同(array_equal 验证 X 与 spatial_3D)。提交默认即此状态 → **mechanism_active = no**(诚实:机制被证否、默认不激活)。  ## 知识来源 -无外部生物学知识条目:质心、Δ、频率、尺度全部由程序从视图 manifest 给出的两个括号输入现场计算(与父节点一致)。PLAN sources=[],本节点未新增。+无。本节点是纯参数/机制搜索,只使用从视图输入现场计算的量(type_means、Δ=μ_b−μ_a、‖Δ_type‖、相对时间 t),+不写入任何保留阶段/基因型的测量值、细胞类型清单、比例或表达量;不使用文献/检索/记忆中的发育数值。 -## 给后续节点的建议+## 结论与给后续节点的建议 -- 型内散布压缩(选择侧或数值侧)路线关闭:variogram 可得收益上限实测 ≈ +0.2 pts,恒被 neighborhood/de 附带损失吞掉(节点 15/17/19/21/32 五次独立证伪)。-- **不要**把任何统计量朝「括号线性插值目标」方向修(DETFIX −3.8 实证):真实中间阶段在 up-DE 基因上比线性插值更「早」。反方向(比父节点更多压缩/更早状态)没有测过——若要继续动 cell_state,可试把 α 提到 6–8 或 β 提到 0.5 同时监控 nbrhd 否决线,但预期同样是净 ≈0。-- occupancy_dice(skill 0.42)与坐标侧继续判死(节点 13/21/22/24/32)。-- 本榜 62.5 平台大概率是 mix 家族的真实上限;建议把火力转向 heart 榜(外推本地尺子高估,需同日锚点比较)。+- **非对称收敛强度(up-DE α 拆分,双向)与 per-type 自适应 α 均判无效**:13 组同日 A 半查分,全部在锚点 ±0.4 内,+  最佳 +0.10(噪声)。这是 mix 家族在 embryo:val_interp 上 cell_state/variogram 弱项的第 6/7 次证伪+  (父节点已列选择侧 5 连败、坐标侧 5 连败、数值侧 variance_restore/recolor/DETFIX/对称α/β 均失败)。+- **62.5 大概率是本榜 mix 家族平台**。mmd_u 瓶颈是 mix 固有的型内端点双峰:位移幅度类机制(对称/非对称/自适应 α、β)+  无法在不做平均(会塌 variogram/mmd_u)的前提下消除双峰。DETFIX 已证"朝插值目标修复统计量"反向恶化。+- **不建议**后续在本榜继续 cell_state/variogram 方向的位移幅度微调;若仍要动,需换结构性机制+  (如型内真实细胞的非平均式重排,或完全不同的解码),并必须同日锚点比较 + 多 seed 验证方能区分噪声。+- **建议**把火力转向 heart 两榜(尤其外推榜,需同日锚点,本地尺子已知高估),复用本树 mix+收敛管线作起点。diff --git a/solution/README.md b/solution/README.mdindex 1f4bf10..13d4e59 100644--- a/solution/README.md+++ b/solution/README.md@@ -1,14 +1,20 @@-# mix + 表达收敛管线 + 各向异性PCA坐标整形(T2:embryo:val_interp)+# mix + 表达收敛管线(T2:embryo:val_interp)— node 33 NO_CHANGE -继承父节点 24 的全部管线(mix 分层混抽、procrustes3d 对齐、α=5 类型级收敛位移、λ=6 投影加权、+继承父节点 24/32 的全部管线(mix 分层混抽、procrustes3d 对齐、α=5 类型级收敛位移、λ=6 投影加权、 β=0.2 型内配对中点收缩、aniso 坐标整形、jitter、RMS 回缩)。本节点按 PLAN(T2EI-01)新增两个 默认关闭的机制开关,均被同日 A 半查分证否(详见 METHOD.md): -- `T2_SPREAD_KAPPA`(型内质心距离控制交换,含 `T2_SPREAD_DIST_MODE=de`、`T2_SPREAD_RAD_MULT`-  空间受限解码):7 种解码全部净负(+0.013 至 −0.85,锚点 61.453);variogram 收益上限 +0.21 pts,-  被 neighborhood/de_direction 损失吞掉。-- `T2_DETFIX_FRAC`(up-DE 基因检出频率向括号插值目标恢复):净 −3.80,variogram raw 恶化 78%;-  证明线性插值目标系统性高估真实中间阶段。+- `T2_CONVERGE_ALPHA_UP` / `T2_CONVERGE_ALPHA_DOWN`(**非对称收敛强度**:up-DE 基因 Δ≥0.25 用 α_up,+  down-DE Δ≤−0.25 用 α_down,逐基因缩放位移,w/λ 投影仍用真实 Δ):PLAN 假设降 α_up 改善 mmd_u。+  实测 9 组(α_up 3–8 × α_down 4–6):α_up 下调单调劣化(board 61.45→61.22,mmd_u flat,+  variogram/nbrhood 恶化,触发 PLAN abort 判据);α_up 上调只重找对称 α≈5.5–6 峰,最佳+  α_up=6/α_down=4 仅 +0.10(≪1 分噪声)。全部 GATE1/GATE2 fail。+- `T2_TYPEADAPT_P`(**备选机制:per-type 自适应 α**,按 ‖Δ_type‖/median 缩放各型 α):3 组+  (p=±1.5、p=1.5 叠最佳非对称)全部噪声内,最佳 +0.03。 -提交默认两开关均为 0,seed 0 输出与父节点 24 逐位相同;`--ablate mechanism`(任意名)同样逐位-复现父节点。METHOD.md 首行为 NO_CHANGE。+提交默认 `ALPHA_UP=ALPHA_DOWN=5.0`、`TYPEADAPT_P=0`(另 `SPREAD_KAPPA=0`、`DETFIX_FRAC=0` 继承父节点),+seed 0 输出与父节点 24/32 逐位相同;`--ablate mechanism`(任意名)强制该状态,同样逐位复现父节点+(mechanism_active = no)。METHOD.md 首行为 NO_CHANGE。++坐标三项(d2_shape/occupancy_dice/scale_log_ratio)全程不动——所有机制只改表达。程序视图无关+(t 由 interp_bracket 相对时间导出,无绝对时间/视图检测/硬编码阶段名),seed 确定。diff --git a/solution/run.py b/solution/run.pyindex 38aff2f..9337896 100644--- a/solution/run.py+++ b/solution/run.py@@ -74,6 +74,34 @@ CONVERGE_NNZ_ONLY = os.environ.get("T2_CONVERGE_NNZ_ONLY", "1") == "1" # it. λ = 0 gives w ≡ 1 and reproduces the constant-shift parent bit-for-bit. CONVERGE_LAMBDA = float(os.environ.get("T2_CONVERGE_LAMBDA", "6.0")) CONVERGE_EPS = float(os.environ.get("T2_CONVERGE_EPS", "1.0"))+# Asymmetric convergence strength by gene temporal direction (family T2EI-01, this+# node): the DETFIX experiment (node 32) showed the true intermediate stage is+# MORE CONSERVATIVE than the bracket-linear target on up-DE genes, so a symmetric+# α over-shoots them. Split the per-gene convergence magnitude: up-DE genes+# (Δ_g ≥ +CONVERGE_MIN_DELTA) get α_up, down-DE genes (Δ_g ≤ −MIN_DELTA) get+# α_down, mid genes (Δ_g = 0) are untouched either way. Implemented as a per-gene+# scale on the Δ used in the displacement (α_up/α, α_down/α), so the projection+# weight w (λ) and the pairing (β) still operate on the true Δ direction. When+# α_up = α_down = α the scale is exactly 1 everywhere and the parent node 24 is+# reproduced bit-for-bit. --ablate mechanism forces α_up = α_down = α.+CONVERGE_ALPHA_UP = float(os.environ.get("T2_CONVERGE_ALPHA_UP", "5.0"))+CONVERGE_ALPHA_DOWN = float(os.environ.get("T2_CONVERGE_ALPHA_DOWN", "5.0"))+# Per-type adaptive convergence strength (ALTERNATE mechanism, family T2EI-01,+# this node): a single global α over-compresses types whose two endpoints are+# already close (small temporal change ‖Δ_type‖, little endpoint bimodality) and+# under-compresses types whose endpoints are far apart. Over-compressing an+# already-intermediate type collapses its natural within-type variance toward a+# point, which the truth's distribution does not have — a plausible driver of the+# mmd_u bottleneck (skill 0.61). Scale each type's α by its measured endpoint+# separation relative to the median over shared types:+#   α_type = α · clip((‖Δ_type‖ / median‖Δ‖)^p, lo, hi)+# with p = TYPEADAPT_P (0 → uniform, reproduces the parent). ‖Δ_type‖ is the L2+# norm of the DE-thresholded Δ (the direction the shift already moves along), so+# no held-out information is used. Applied on top of the direction split above+# (α_type replaces α in scale_up/scale_down per type).+TYPEADAPT_P = float(os.environ.get("T2_TYPEADAPT_P", "0.0"))+TYPEADAPT_LO = float(os.environ.get("T2_TYPEADAPT_LO", "0.6"))+TYPEADAPT_HI = float(os.environ.get("T2_TYPEADAPT_HI", "1.6")) # Within-type NN pairing midpoint shrinkage (family T2EI-01 refine, this node): # after the λ-weighted displacement, for every shared type with ≥PAIR_MIN_CELLS # cells on both output sides, greedily match each a-side cell to its nearest@@ -1014,9 +1042,17 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float):     xa = as_dense(stage_a.X, ia) if ia.size else np.zeros((0, len(stage_a.genes)), np.float32)     xb = as_dense(stage_b.X, ib) if ib.size else np.zeros((0, len(stage_b.genes)), np.float32) +    scale_up = CONVERGE_ALPHA_UP / alpha if alpha != 0.0 else 1.0+    scale_down = CONVERGE_ALPHA_DOWN / alpha if alpha != 0.0 else 1.0     conv = {"alpha": alpha, "n_shared_types_converged": 0, "within_type_std_rel": None,             "between_type_mean_dist_rel": None, "lambda": CONVERGE_LAMBDA,-            "weight_mean": None, "weight_std": None}+            "weight_mean": None, "weight_std": None,+            "alpha_up": CONVERGE_ALPHA_UP, "alpha_down": CONVERGE_ALPHA_DOWN,+             "scale_up": scale_up, "scale_down": scale_down,+             "disp_up_per_cellgene": None, "disp_down_per_cellgene": None,+             "n_up_genes": 0, "n_down_genes": 0,+             "typeadapt_p": TYPEADAPT_P, "typeadapt_min": None,+             "typeadapt_max": None, "typeadapt_mean": None}     if alpha != 0.0 and ia.size and ib.size:         if not shared:             means_a, means_b, shared, delta = compute_delta(stage_a, stage_b, 10)@@ -1025,10 +1061,28 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float):             labs_a = np.asarray(stage_a.labels).astype(str)[ia]             labs_b = np.asarray(stage_b.labels).astype(str)[ib]             all_w = []--            def _shift(block, c, d, mu, wsign):+            # asymmetric-α evidence accumulators: total |applied displacement| on+            # up-DE (Δ_g>0) and down-DE (Δ_g<0) genes, over all shifted cells.+            disp = {"up_sum": 0.0, "up_cnt": 0, "down_sum": 0.0, "down_cnt": 0,+                    "n_up": 0, "n_down": 0}+            # Per-type adaptive α (ALTERNATE mechanism): scale each type's α by its+            # endpoint separation ‖Δ_type‖ relative to the median over shared types.+            # tadapt = 1 for every type when TYPEADAPT_P = 0 (bit-identical).+            type_tadapt = {}+            if TYPEADAPT_P != 0.0:+                norms = {lab: float(np.linalg.norm(delta[lab].astype(np.float64))) for lab in shared}+                nvals = list(norms.values())+                med = float(np.median(nvals)) if nvals else 0.0+                for lab in shared:+                    r = (norms[lab] / med) if med > 0.0 else 1.0+                    type_tadapt[lab] = float(np.clip(r ** TYPEADAPT_P, TYPEADAPT_LO, TYPEADAPT_HI))++            def _shift(block, c, d, mu, wsign, d_scaled, up_mask, down_mask):                 # Per-cell weighted displacement: scale each cell's shift by how-                # far it already sits along Δ from its own side's type mean.+                # far it already sits along Δ from its own side's type mean. The+                # magnitude is split per gene direction: d_scaled = d · asym, with+                # asym = α_up/α on up-DE genes, α_down/α on down-DE genes (this+                # node's mechanism). w (λ projection) still uses the true Δ.                 if CONVERGE_LAMBDA != 0.0:                     m = d != 0                     if m.any():@@ -1041,23 +1095,44 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float):                 else:                     w = np.ones(block.shape[0])                 all_w.append(w)-                out = np.clip(block + (np.float32(c) * w.astype(np.float32))[:, None] * d, 0.0, None)+                out = np.clip(block + (np.float32(c) * w.astype(np.float32))[:, None] * d_scaled, 0.0, None)                 if CONVERGE_NNZ_ONLY:-                    return np.where(block > 0, out, block)-                return out+                    applied = np.where(block > 0, out, block)+                else:+                    applied = out+                diff = np.abs(applied.astype(np.float64) - block.astype(np.float64))+                nb = int(block.shape[0])+                disp["up_sum"] += float(diff[:, up_mask].sum()); disp["up_cnt"] += int(up_mask.sum()) * nb+                disp["down_sum"] += float(diff[:, down_mask].sum()); disp["down_cnt"] += int(down_mask.sum()) * nb+                return applied              for lab in shared:                 d = delta[lab]+                up_mask = d > 0+                down_mask = d < 0+                disp["n_up"] += int(up_mask.sum()); disp["n_down"] += int(down_mask.sum())+                tad = float(type_tadapt.get(lab, 1.0))+                asym = np.ones_like(d, dtype=np.float32)+                asym[up_mask] = np.float32(scale_up * tad)+                asym[down_mask] = np.float32(scale_down * tad)+                d_scaled = (d * asym).astype(np.float32)                 ma = labs_a == lab                 if ma.any():-                    xa[ma] = _shift(xa[ma], alpha * t, d, means_a[lab], -1.0)+                    xa[ma] = _shift(xa[ma], alpha * t, d, means_a[lab], -1.0, d_scaled, up_mask, down_mask)                 mb = labs_b == lab                 if mb.any():-                    xb[mb] = _shift(xb[mb], -alpha * (1.0 - t), d, means_b[lab], +1.0)+                    xb[mb] = _shift(xb[mb], -alpha * (1.0 - t), d, means_b[lab], +1.0, d_scaled, up_mask, down_mask)             if all_w:                 wcat = np.concatenate(all_w)                 conv["weight_mean"] = float(wcat.mean())                 conv["weight_std"] = float(wcat.std())+            conv["disp_up_per_cellgene"] = (disp["up_sum"] / disp["up_cnt"]) if disp["up_cnt"] else None+            conv["disp_down_per_cellgene"] = (disp["down_sum"] / disp["down_cnt"]) if disp["down_cnt"] else None+            conv["n_up_genes"] = disp["n_up"]; conv["n_down_genes"] = disp["n_down"]+            if type_tadapt:+                tv = list(type_tadapt.values())+                conv["typeadapt_min"] = float(min(tv)); conv["typeadapt_max"] = float(max(tv))+                conv["typeadapt_mean"] = float(np.mean(tv))             after = np.vstack([xa, xb]).astype(np.float64)             # mechanism evidence: within-type std and between-type mean distance             labs = np.concatenate([labs_a, labs_b])@@ -1242,12 +1317,15 @@ def main() -> None:     args = parser.parse_args()      if args.ablate is not None:-        # Mechanism-off control: disable this node's new mechanisms (the-        # centroid-distance swap and the detection-frequency restoration; any-        # name is treated as this node's main mechanism), leaving every other-        # step, the seed and the output format untouched so the output is-        # bit-identical to parent node 24.-        global SPREAD_KAPPA, DETFIX_FRAC+        # Mechanism-off control (PLAN mechanism_off_control): force the symmetric+        # convergence α_up = α_down = α so the per-gene scale is exactly 1 and the+        # asymmetric split is skipped, leaving every other step, the seed and the+        # output format untouched. Any name is treated as this node's mechanism.+        # Output is bit-identical to parent node 24 (verified via array_equal).+        global CONVERGE_ALPHA_UP, CONVERGE_ALPHA_DOWN, SPREAD_KAPPA, DETFIX_FRAC, TYPEADAPT_P+        CONVERGE_ALPHA_UP = CONVERGE_ALPHA+        CONVERGE_ALPHA_DOWN = CONVERGE_ALPHA+        TYPEADAPT_P = 0.0         SPREAD_KAPPA = 0.0         DETFIX_FRAC = 0.0 @@ -1265,9 +1343,13 @@ def main() -> None:     params = board_params(manifest, "mix", PARAMS, args.seed)     expr, coords, info = mix_converge(stage_a, stage_b, t, params, CONVERGE_ALPHA)     keep = {k: info.get(k) for k in ("t", "n", "rms_a", "rms_b", "out_rms", "n_shared_types", "z_dot", "z_flipped",-                                     "align", "alpha", "n_shared_types_converged", "within_type_std_rel",-                                     "between_type_mean_dist_rel", "n_from_a", "n_from_b",-                                      "lambda", "weight_mean", "weight_std",+                                      "align", "alpha", "n_shared_types_converged", "within_type_std_rel",+                                      "between_type_mean_dist_rel", "n_from_a", "n_from_b",+                                       "lambda", "weight_mean", "weight_std",+                                       "alpha_up", "alpha_down", "scale_up", "scale_down",+                                       "disp_up_per_cellgene", "disp_down_per_cellgene",+                                       "n_up_genes", "n_down_genes",+                                       "typeadapt_p", "typeadapt_min", "typeadapt_max", "typeadapt_mean",                                        "pair_beta", "n_paired_types", "n_pairs", "pair_within_std_rel",                                        "pair_orth_var_rel", "pair_dist_over_diam",                                         "aniso_enable", "aniso_damp", "aniso_boost", "aniso_gamma", "aniso_spread_a",

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

用到的知识库条目

编号标题出处
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
k027Joint expression-geometry generation with relative geometrynotes/competition/03_solution_landscape.md

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

改了什么在父节点 32 的 mix+收敛管线上实现了按基因时间方向的非对称收敛强度(up-DE 基因用 α_up、down-DE 用 α_down,逐基因缩放位移)及备选的 per-type 自适应 α(按 ‖Δ_type‖/median 缩放),共同日 A 半查分 13 组;全部证否后提交默认 α_up=α_down=5.0、TYPEADAPT_P=0,seed 0 输出与父节点 24/32 逐位相同(NO_CHANGE)。
各组分数的变化cell_state:噪声内(+0.00,50.31 不变;mmd_u 0.01123/skill 0.617、variogram 0.01392/skill 0.389 不变)。实验期间:α_up 下调 mmd_u raw 仅动 −0.00001~−0.00005(远低于 GATE1 的 0.0003),variogram/nbrhood 单调恶化;最佳非对称点 up60_dn40 board +0.10,在 1 分噪声内
expression_change:噪声内(+0.00,62.11 不变;de_score 0.3103/skill 0.600、de_direction 0.3986/skill 0.642 均与父节点相同——默认提交即父节点输出)
local_spatial:噪声内(+0.00,60.34 不变;neighborhood_mmd 0.05112/skill 0.603 不变)
shape_scale:噪声内(+0.00,77.31 不变;所有机制只改表达,坐标三项逐位不动)
family_idT2EI-01
假设是否成立否
经验
  1. 在 mix+收敛管线上按 sign(Δ_g) 拆分 α(α_up 3–8 × α_down 4–6 共 9 组),mmd_u raw 几乎不动(≤0.0003),只沿 variogram/nbrhood↔mmd_u 的同一前沿移动:非对称缩放不产生净收益,最佳 +0.10(≪1 分 T2 噪声)
  2. DETFIX 揭示的'真值在 up-DE 上比线性插值更早'不能通过降低 up-DE 位移兑现:α_up 5→4.5→4.0 board 单调降(61.45→61.22)且 variogram/nbrhood 恶化,触发 PLAN 自身 abort 判据——幅度类机制无法把'更保守'的方向性结论转为 mmd_u 改善
  3. per-type 自适应 α(按 ‖Δ_type‖/median 缩放)实测各型范数近乎均匀(r=0.62–1.20),机制扰动太小,3 组全部噪声内(最佳 +0.03):用数据导出的型间异质性做调制前,先测该异质性是否真实存在
  4. mmd_u 瓶颈(skill 0.617)是 mix 家族固有的型内端点双峰:位移幅度类机制(对称/非对称/自适应 α、β、DETFIX)已累计 6–7 次证伪,62.5 大概率是本榜该平台的上限
  5. 同日 A 半锚点 + 逐位复现验证(α_up=α_down=5 时 array_equal 父节点)让 13 次查分全部可信可归因,是低成本证伪的正确做法
mechanism_active否
下一步建议
  1. 停止在 embryo:val_interp 上做位移幅度微调(cell_state/variogram 方向已 6–7 次证伪);把搜索火力转向 heart 两榜(尤其外推榜,本地尺子已知高估,必须用同日锚点比较),复用本树 mix+收敛管线作起点
  2. 若仍要动本榜 cell_state(mmd_u skill 0.617 瓶颈),需换结构性机制而非幅度缩放:例如非平均式的型内真实细胞重排/子群比例调整,或完全不同的解码方案,并用同日锚点 + 多 seed 区分 1 分噪声
  3. occupancy_dice(skill 0.424)与坐标侧继续判死(节点 13/21/22/24/32/33 累计证伪),不要再投入

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数51
工具调用共 55 次:bash 26、read 12、edit 11、todowrite 3、write 3
用时31 分
token 数输入 145,320 · 输出 23,140 · 思考 42,109
任务(第一行)按计划修改程序:非对称收敛强度:up-DE 基因 α 下调(DETFIX 反向验证)
最后的回答(摘录)
## 完成总结

**做了什么**:按 PLAN 实现非对称收敛强度(up-DE 基因 α_up、down-DE 基因 α_down,逐基因缩放位移,λ 投影仍用真实 Δ),加 `--ablate mechanism` 对照与证据字段;证否后又实现同弱项备选机制 per-type 自适应 α(按 ‖Δ_type‖/median 缩放)。全部默认关闭,seed 0 输出与父节点 24/32 逐位相同,通过 vec-check,视图无关(t 由相对时间导出)、seed 确定。

**查分结果**(同日 A 半,锚点 61.4533,用 14/20 次):
- PLAN 的 α_up 下调方向**单调劣化**:5→4.5→4.0,board 61.45→61.37→61.22,mmd_u 几乎不动(−0.00001~−0.00005,远低于 GATE1 要求的 0.0003),variogram/nbrhood 单调恶化——**触发 PLAN 自身 abort 判据**。
- 反方向 α_up 上调只重找对称 α≈5.5–6 峰,全表最佳 up60_dn40 **+0.10(≪1 分噪声)**,GATE2(+1.0) fail。
- 备选 per-type 自适应 α 3 组全部噪声内(最佳 +0.03)。
- 坐标三项全程不动;提交默认 mechanism_active=no(诚实:机制被证否)。

**结论**:NO_CHANGE。非对称 α(双向)与 per-type 自适应 α 均判无效,是 mix 家族在本榜 cell_state/variogram 弱项的第 6/7 次证伪。mmd_u 瓶颈是 mix 固有的型内端点双峰,位移幅度类机制无法在不做平均(会塌 variogram/mmd_u)的前提下消除它。

**下一步最值得试**:停止在 embryo:val_interp 上做位移幅度微调;把火力转向 heart 两榜(尤其外推榜,需同日锚点、本地尺子已知高估),复用本树 mix+收敛管线作起点。若仍要动本榜 cell_state,需换结构性机制(非平均式的型内真实细胞重排,或完全不同的解码),且必须同日锚点+多 seed 才能区分噪声。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/33/engineer.jsonl 394 KB
/home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/33/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时1 分
token 数输入 20,151 · 输出 1,242 · 思考 2,589
任务(第一行)为节点 n33(改进,父节点 n32)写改进计划 PLAN.json
最后的回答(摘录)
'(检出频率缺口 0.087→0.023 修复后反而大幅恶化)。当前 α=5 对 up-DE 与 down-DE 基因施加对称位移,系统性高估了 up-DE 基因的中间态表达。mmd_u skill 0.617(raw 0.01123)是表达分布组的主要瓶颈;DETFIX 方向性失败提示减小 up-DE 位移可改善 mmd_u 而不损 neighborhood(α 扫描显示两者此消彼长的根源可能是 up-DE 过冲)。父节点 ANALYSIS 明确建议'α 降到 4–4.5 或减小 up-DE 位移幅度'作为唯一未试方向。",
  "approach": "在父节点 32 代码(α=5, λ=6, β=0.2, aniso, jitter, RMS 回缩全部保留)的 converge 步骤中,将位移按基因方向拆分:对 Δ_g≥0.25(up-DE)的基因用 α_up,对 Δ_g≤−0.25(down-DE)的基因用 α_down。实现:在计算 w·α·t·Δ 时,按 sign(Δ_g) 选取不同 α。搜索网格:α_up ∈ {3.0, 3.5, 4.0, 4.5},α_down ∈ {5.0, 5.5, 6.0},共 12 组合。先跑 α_up=4.0/α_down=5.0 与 α_up=4.5/α_down=5.0 两个点做同日锚点比较(锚点 = 本节点代码 α_up=α_down=5.0),确认方向后再扩展。判定标准:(1) mmd_u raw 下降 ≥0.0003 且 neighborhood_mmd raw 恶化 <0.001;(2) 净榜分超锚点 +1.0(>噪声)。若 α_up=4.5/α_down=5.0 已满足则不必扫全网格。单输入阶段退路:无括号时 fallback 到 copy_last,机制不触发。vec-score 查分用 A 半,每次查分前确认 α_up=α_down=5 时输出与父节点 24 逐位一致(array_equal)。预计 4–6 次查分。",
  "expected_groups": ["cell_state", "expression_change"],
  "risks": "1) α 降低可能同时减弱 neighborhood/variogram 的改善(α 扫描显示它们随 α 单调改善),净效应仍为零——Engineer 应在第一次查分后对比 mmd_u 降幅与 nbrhd 升幅,若 mmd_u 改善 <0.0002 立即停止;2) 改善幅度可能 <1 分噪声,需同日锚点重复验证(跑锚点 2 次确认方差);3) λ=6 的投影加权可能与 α 缩减产生交互(w clip 下界 0.2 使极端细胞仍大幅移动),若首次结果噪声内可试 λ=4 配合。",
  "family_id": "T2EI-01",
  "mechanism": "将 per-type 收敛位移按基因时间变化方向拆分为非对称强度:up-DE 基因(Δ≥0.25)用较小 α_up(3–4.5),down-DE 基因(Δ≤−0.25)保持或略增 α_down(5–6)。依据:DETFIX 实验证明真值在 up-DE 方向上比线性插值更保守,当前对称 α=5 系统性过冲。",
  "vs_constant_shift": "不是每型一个常向量:位移仍是逐细胞的(λ 投影加权)、逐基因方向异号的,且本次新增按 sign(Δ_g) 的非对称缩放——同一类型内 up-DE 基因和 down-DE 基因走不同步长,这不是全局组成重加权能实现的。",
  "mechanism_evidence": "Engineer 应记录:(1) up-DE 基因子集上的 per-cell 平均位移量(α_up=4 vs 5 应缩减 ~20%);(2) mmd_u raw 变化(预期下降,因为过冲减少);(3) neighborhood_mmd raw 变化(预期微升或不变,因为坐标未动);(4) de_direction raw(预期不变或微升,排序未变、幅度更准);(5) 四组分各自变化。若 mmd_u 未改善而 neighborhood 恶化,说明 α 降低方向错误,立即终止。",
  "mechanism_off_control": "设 α_up=α_down=5.0(即 T2_CONVERGE_ALPHA_UP=5.0, T2_CONVERGE_ALPHA_DOWN=5.0),代码路径完全相同但不产生非对称性,输出应与父节点 24 逐位一致(array_equal 验证 X 与 spatial_3D)。--ablate mechanism 同样置两 α 为 5 并跳过非对称逻辑,预期差别为零。",
  "sources": []
}
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/33/researcher.jsonl 5 KB
/home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/33/researcher.stderr