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

总览 · ← 返回运行 20261003-043412-search-t2-embryo-interp-g24-D-s1

节点 n25 在终选来历上

b 侧 xy 各向异性膨胀证伪(两轴比值差仅 2%);改为整云逐轴 σ 匹配:把输出云 z 轴匹配到括号插值 σ_ref_z(fac≈0.92)再恢复 RMS,膨胀关闭。3 种子 A 半 61.38→61.77,shape +1.6~2.7。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-043412-search-t2-embryo-interp-g24-D-s1
父节点n23
子节点n29、n31
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 62.26(+0.1) · proxy 62.26(+0.1) · 3 次复测均分 62.20
审查通过 1 越界读取:未发现——run.py 只通过 load_manifest/read_stage 读 --data 视图内路径(run.py:410-422),imports 为 src.task2_spatial 框架库(run.py:95-99),无绝对路径/`..`/打分器路径/联网。; 2 硬编码目标统计量:未发现——σ_ref 逐轴参考扩展在运行时从对齐后的两括号输入现场计算(run.py:434 s_ref_axes;run.py:560-562 匹配因子),KAPPA=0.65、SPREAD_CAP=1.15 等为调参超参而非目标阶段测量值,无写死的类型比例/细胞数/基因列表。;…
用时?从运行开始到结束(或到现在)的挂钟时间。23 分
程序版本57e3463ae35446138eac670da5c6888af9af2ee5 (programs.git)

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

来自 programs.git 57e3463ae3:solution/METHOD.md

b 侧 xy 各向异性膨胀证伪(两轴比值差仅 2%);改为整云逐轴 σ 匹配:把输出云 z 轴匹配到括号插值 σ_ref_z(fac≈0.92)再恢复 RMS,膨胀关闭。3 种子 A 半 61.38→61.77,shape +1.6~2.7。

方法(family T2EI-05,improve over node 23;提交态 = ANISO_FULL=1, ANISO_AXES=z, ANISO_LAMBDA=1, SPREAD_ALPHA=0)

父流程完整保留:interp_bracket → procrustes3d 对齐 → scale_damp=0.5 目标 RMS → κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_SIDE=b)→ jitter。 本节点改动(run.py 环境变量开关):

  1. PLAN 机制(b 侧逐轴各向异性膨胀,ANISO_BETA):γ_axis=clip(1.15·(σ_ref_axis/σ_out_axis)^β, 1, ANISO_CAP),σ_ref 由对齐后的两括号全云逐轴 std 按 t 线性插值,绕输出云质心只作用于 b 侧被选细胞 xy。已实现并查分,证伪(见下)。
  2. 提交机制(整云逐轴 σ 匹配,ANISO_FULL/ANISO_AXES/ANISO_LAMBDA):jitter 后对整个输出云逐轴 x'←μ+(x−μ)·[1+λ(σ_ref_axis/σ_out_axis−1)],随后 scale_to_rms 恢复全局 RMS(保持比例结构)。σ_ref 在任何膨胀修改 cb 之前从原始对齐云计算(s_ref_axes),λ=1 为完全匹配。提交只开 z 轴:诊断显示输出云 z 比参考宽 8.8%(早端主导混合、σ_a_z=123 vs σ_ref_z=102),收缩 z 是 shape 增益的主来源。
  3. b 侧膨胀在提交态关闭(SPREAD_ALPHA=0):膨胀+z 匹配(61.38)< z 匹配单独(61.50),膨胀把 b 细胞 z 压到 μ_z 后匹配因子只能回扩(0.969),净 shape 增益变小。

单输入退路不变(无括号 → 分层抽最后阶段,early return,不触及任何新代码)。 无 RNG 参与新机制,对 seed 确定;σ_ref/σ_out 全部现场从 view 数据计算,无硬编码统计量,无绝对时间/视图判断(只用 t 与坐标)。

机制证据(mechanism_evidence,A 半,E6.75+E8.0→E7.25,t=0.4,seed 0)

  • 诊断比值:σ_ref/σ_out = x 1.0265、y 1.0469、z 0.9179;xy 两轴比值相对差 2.0% < 5% → 触发 PLAN 自带的"机制无实际差异"提前终止判据。γ_x/γ_y(β=0.5)= 1.1651/1.1767,膨胀前后 b 云逐轴 spread 仅变化 ~1.5%。
  • 提交机制实际改变:全部 5000 个细胞的 z 坐标乘 fac_z=0.918(绕 μ_z),xy 不变;shape_scale 72.18→74.20(d2_shape 0.01234→0.00945,occupancy_dice 0.7716→0.7862),local_spatial 59.03→58.47(neighborhood_mmd 0.05314→0.05436),expression/cell_state 两组不变(表达未动)。

机制对照(mechanism_off_control)与查分全表

off 对照 = ANISO_FULL=0 SPREAD_ALPHA=0.3(父配置),输出与父节点 h5py 逐数组比对 True(seed 0)。全部 A 半查分(10 次,余 6):

配置(seed 0)榜分shapelocalocc_diced2_shapenbhd_mmd
off 对照(=父)61.1472.1859.030.77160.012340.05314
PLAN β=0.5, cap1.2561.2072.4459.010.77350.011950.05319
b 侧保 z(SPREAD_ZPRES)~59.970.3258.480.75780.015410.05435
整云匹配 xyz λ1(无膨胀)61.4974.1058.520.77100.007980.05426
整云匹配 xy λ161.1172.6958.420.79450.014120.05448
整云匹配 z λ0.5 / λ0.7561.14 / 61.2672.81/73.2658.40/58.420.7917/0.7834——
膨胀+z 匹配 λ161.3873.1559.040.77500.010470.05313
z 匹配 λ1(提交)61.5074.2058.470.78620.009450.05436

多种子(A 半):z 匹配 61.50/61.78/62.02(seed 0/1/2,均值 61.77);膨胀+z 匹配 61.38/61.78/61.89(均值 61.68);off 对照 61.14/61.62(seed 0/1,均值 61.38)。提交态默认运行 = z 匹配 seed 0 逐位一致,vec-check ok。

结论与已验证/未验证

  • PLAN 的 b 侧 xy 各向异性膨胀被其自带判据证伪(各向异性缺损仅 2%,β 扫描在噪声内)。同族推广到整云逐轴匹配后,z 轴 8.8% 的过扩展才是真实缺损,收缩 z 一致提升 shape(3 种子 shape +1.6~+2.7,d2_shape −18~−23%),代价是 local −0.5(seed 0)~+0.1(seed 1/2)。
  • 证伪并记录:xy-only 匹配(occ_dice 最高 0.7945 但 d2_shape 恶化、净负)、λ 阻尼(λ=0.5/0.75 反而 local 不恢复、shape 增益缩水,非单调,不再扫)、b 侧保 z(shape −1.9,父节点的 z 压平实际有益)、膨胀+z 匹配(净低于 z 匹配单独)。
  • 未验证:真实括号(E7.25→E8.0 快增长段)的 σ_ref_z/σ_out_z 比值方向——若真实输出云 z 偏窄,fac_z>1 会扩张 z,机制仍按数据驱动执行,但收益方向未在代理上检验;B 半与正式分的迁移(A 半 +0.26~+0.39 属小幅,树内 seed 间 A 半波动 ~0.5);心脏榜(本节点只针对 embryo interp)。
  • 生物学知识来源:无新增外部知识;z 为离散切片轴的注意事项来自方法卡,σ 匹配纯数据驱动。

调研员的计划

名称各向异性xy膨胀:按括号插值的逐轴占据缺损补偿b侧坐标
动机父节点23/13/11提交态62.15,shape_scale=72.48但node2曾达74.43(occupancy_dice 0.84 vs 当前~0.77),说明占据仍有~7%余量。当前b侧膨胀γ=1.15在xy各向同性,但胚胎在xy并非圆形对称;ANALYSIS明确建议'按体素占据缺失方向做非各向同性γ补偿'。local_spatial=60.69为次弱组,也受占据质量影响。节点19已证伪γ_cap≥1.25的均匀膨胀和κ偏移,但从未尝试过按轴分化的γ。
做法在现有b侧均匀xy膨胀(SPREAD_CAP=1.15)的位置替换为逐轴各向异性膨胀:
1. 选胞后、膨胀前,分别计算a括号全部细胞和b括号全部细胞在xy上的逐轴标准差σ_a_x,σ_a_y,σ_b_x,σ_b_y(用对齐后坐标)。
2. 按时间插值计算参考逐轴扩展:σ_ref_axis=(1−t)·σ_a_axis+t·σ_b_axis,t为bracket插值参数(与现有log_interp一致)。
3. 计算当前输出云(a+b选入细胞)的逐轴标准差σ_out_x,σ_out_y。
4. 逐轴膨胀因子:γ_axis=γ_base·(σ_ref_axis/σ_out_axis)^β,其中γ_base=1.15(现有SPREAD_CAP),β=ANISO_BETA(env,默认0),上限ANISO_CAP(默认1.30),下限1.0。
5. 对b侧被选细胞逐轴应用:x'=μ_x+(x−μ_x)·γ_x, y'=μ_y+(y−μ_y)·γ_y(μ仍为输出云质心,与现有SPREAD_MU=global一致);z不动。
6. 后续jitter+终RMS缩放不变。
参数搜索:ANISO_BETA∈{0.3,0.5,0.7,1.0}×ANISO_CAP∈{1.20,1.25,1.30},共12配置,每配置1次vec-score(seed0);最优配置再用seed1确认。预计≤14次查分。
单输入退路:无括号→无b侧→跳过膨胀,与父节点一致。
快速筛选:先跑ANISO_BETA=0.5/ANISO_CAP=1.25,若shape_scale无改善(<+0.5)即放弃,不扫全网格。
风险1. 逐轴σ_ref/σ_out比值可能接近1(各向异性缺损很小),β扫描全在噪声内→Engineer先打印σ_ref/σ_out比值,若两轴比值差<5%则机制无实际作用,提前终止。2. 某轴γ超过1.3导致该方向过度膨胀、occupancy_dice反降→ANISO_CAP硬上限+查分监控。3. 逐轴膨胀破坏xy圆对称假设,若参考形状本身就是各向同性的则无改善→打印诊断即可发现。4. 与终RMS缩放的交互:终缩放会重新归一化总RMS,可能部分抵消逐轴调整→在终缩放前检查逐轴spread,确认调整方向正确。

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

对比:父节点版本 28ab6cef87。改动的文件:solution/METHOD.md +29 −54、solution/run.py +80 −4

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex aeb5eba..32762f8 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,68 +1,43 @@-按 PLAN T2EI-09 实现 a 侧空间平滑表达微漂移(kNN 平滑的向混合质心漂移,DRIFT_ALPHA/DRIFT_K);机制确实运行,但 α 从 0.3 到 1.2 榜分单调下降(cell_state、local_spatial、de_direction 全恶化),代理上证伪,提交态默认 DRIFT_ALPHA=0,输出与父节点 13/11 逐位一致(seed 0/1 h5py 逐数组比对 True)。+b 侧 xy 各向异性膨胀证伪(两轴比值差仅 2%);改为整云逐轴 σ 匹配:把输出云 z 轴匹配到括号插值 σ_ref_z(fac≈0.92)再恢复 RMS,膨胀关闭。3 种子 A 半 61.38→61.77,shape +1.6~2.7。 -## 方法(family T2EI-09,improve over node 13)+## 方法(family T2EI-05,improve over node 23;提交态 = ANISO_FULL=1, ANISO_AXES=z, ANISO_LAMBDA=1, SPREAD_ALPHA=0)  父流程完整保留:interp_bracket → procrustes3d 对齐 → scale_damp=0.5 目标 RMS →-κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_SIDE=b)→ b 侧 xy 径向膨胀 γ=1.15-→ jitter + 终缩放。单输入退路不变(无括号 → 分层抽最后阶段,无漂移)。+κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_SIDE=b)→ jitter。+本节点改动(run.py 环境变量开关): -本节点新增(`_spatial_drift`,env `DRIFT_ALPHA`=0 默认关,`DRIFT_K`=8):+1. **PLAN 机制(b 侧逐轴各向异性膨胀,ANISO_BETA)**:γ_axis=clip(1.15·(σ_ref_axis/σ_out_axis)^β, 1, ANISO_CAP),σ_ref 由对齐后的两括号全云逐轴 std 按 t 线性插值,绕输出云质心只作用于 b 侧被选细胞 xy。已实现并查分,**证伪**(见下)。+2. **提交机制(整云逐轴 σ 匹配,ANISO_FULL/ANISO_AXES/ANISO_LAMBDA)**:jitter 后对整个输出云逐轴 x'←μ+(x−μ)·[1+λ(σ_ref_axis/σ_out_axis−1)],随后 scale_to_rms 恢复全局 RMS(保持比例结构)。σ_ref 在任何膨胀修改 cb 之前从原始对齐云计算(s_ref_axes),λ=1 为完全匹配。提交只开 z 轴:诊断显示输出云 z 比参考宽 8.8%(早端主导混合、σ_a_z=123 vs σ_ref_z=102),收缩 z 是 shape 增益的主来源。+3. b 侧膨胀在提交态关闭(SPREAD_ALPHA=0):膨胀+z 匹配(61.38)< z 匹配单独(61.50),膨胀把 b 细胞 z 压到 μ_z 后匹配因子只能回扩(0.969),净 shape 增益变小。 -1. a 侧被选细胞中,共有型且该型被选 ≥5 细胞者,在双括号 pooled z-scored 面板空间-   计算到混合质心 (1−t)μ_a+tμ_b 的向量 d_i(μ 用该型**全体**括号细胞,与-   `_type_dists` 的 blend 定义一致);-2. 在对齐后 xy 坐标(z 离散切片不参与)建 cKDTree,取 k=8 空间近邻,-   d_smooth_i = mean(d_j, j∈kNN(i),含自身;非共有型邻居 d=0);-3. z_new = z + α·d_smooth,反 z-score 回表达并 clip≥0,**并保留原稀疏支撑**-   (原为 0 的元素仍为 0);坐标不动。无 RNG,完全确定。+单输入退路不变(无括号 → 分层抽最后阶段,early return,不触及任何新代码)。+无 RNG 参与新机制,对 seed 确定;σ_ref/σ_out 全部现场从 view 数据计算,无硬编码统计量,无绝对时间/视图判断(只用 t 与坐标)。 -工程要点(偏离 PLAN 之处,均有记录):-- PLAN 的 α 网格 {0.04–0.12} 是按未加支撑掩膜的版本标定的。首版反 z-score 把结构零-  填成小正值(nnz 119k→1.33M),α=0.08 即榜分 59.22、cell_state 45.12(−7.7)——-  那是稀疏结构破坏的伪影,不是漂移本身。加支撑掩膜后 α≤0.12 的有效改动仅 ~0.03%-  (面板密度 ~5%),故上探 α∈{0.3, 0.6, 1.2} 使机制真正生效(改动 3%/6%/13%)。+## 机制证据(mechanism_evidence,A 半,E6.75+E8.0→E7.25,t=0.4,seed 0) -## 机制证据(mechanism_evidence,A 半,E6.75+E8.0→E7.25,t=0.4)--- 机制运行:10 个共有型、2642/3700 个 a 侧被选细胞被漂移;到混合质心平均距离-  13.32→13.14(α=0.08,未掩膜版),符合 ~α 比例缩小;-- 平滑生效:相邻细胞漂移向量余弦 0.065 > 0(kNN 平滑非平凡,但邻域间方向相关性弱,-  d_i 由细胞自身噪声主导);-- α=0 时输出与父节点逐位一致(seed 0/1 验证 True),管线无副作用;-- 四组分:随 α 增大 cell_state、local_spatial、expression_change 全部下降(下表),-  与 PLAN 预期方向相反。+- 诊断比值:σ_ref/σ_out = x 1.0265、y 1.0469、z 0.9179;**xy 两轴比值相对差 2.0% < 5%** → 触发 PLAN 自带的"机制无实际差异"提前终止判据。γ_x/γ_y(β=0.5)= 1.1651/1.1767,膨胀前后 b 云逐轴 spread 仅变化 ~1.5%。+- 提交机制实际改变:全部 5000 个细胞的 z 坐标乘 fac_z=0.918(绕 μ_z),xy 不变;shape_scale 72.18→74.20(d2_shape 0.01234→0.00945,occupancy_dice 0.7716→0.7862),local_spatial 59.03→58.47(neighborhood_mmd 0.05314→0.05436),expression/cell_state 两组不变(表达未动)。  ## 机制对照(mechanism_off_control)与查分全表 -off 对照 = `DRIFT_ALPHA=0`(默认),输出与父节点 13/11 逐位一致,A 半 61.14(seed0)/-61.62(seed1),均值 61.38。打开后(seed 0,k=8,掩膜版):--| 配置 | 榜分 | cell_state | expr_change | shape | local | neighborhood_mmd | de_direction |-|---|---:|---:|---:|---:|---:|---:|---:|-| 父/DRIFT_ALPHA=0(**提交**) | **61.14** | 52.84 | 60.50 | 72.18 | 59.03 | 0.05314 | 0.3645 |-| α=0.08(未掩膜,稀疏破坏伪影) | 59.22 | 45.12 | 60.59 | 72.18 | 58.98 | 0.05325 | 0.3685 |-| α=0.3 | 60.94 | 52.52 | 60.37 | 72.18 | 58.69 | 0.05388 | 0.3583 |-| α=0.6 | 60.74 | 52.21 | 60.28 | 72.18 | 58.29 | 0.05476 | 0.3543 |+off 对照 = `ANISO_FULL=0 SPREAD_ALPHA=0.3`(父配置),输出与父节点 h5py 逐数组比对 **True**(seed 0)。全部 A 半查分(10 次,余 6): -结论:**机制被证伪**。榜分随 α 单调下降(61.14→60.94→60.74),触发 PLAN 自带的放弃-判据(cell_state 无改善即放弃)。即使坐标完全不动、漂移经空间平滑且幅度温和,把 a 侧-表达连续地推向混合质心也同时恶化 neighborhood_mmd(局部表达—位置耦合)与-de_direction(a 细胞变得"过中间态",与参考的 a→target DE 方向失配)。这与节点 12-(配对插值 +1.2/−2.0)、节点 13(a 侧换身份 +0.9~1.2/−1.0~−2.2)同型:**在本代理上,-任何把 a 侧表达推向中间态的操作——无论离散换身份还是连续微漂移——都得不偿失**;-中间态偏好只在 b 侧低抽样率(4%)下有效(node 7)。空间平滑没有救回 local_spatial,-因为损失不来自漂移的局部不连续,而来自漂移方向本身(向质心收缩 + 邻域平均抹掉-细胞个性)。+| 配置(seed 0) | 榜分 | shape | local | occ_dice | d2_shape | nbhd_mmd |+|---|---:|---:|---:|---:|---:|---:|+| off 对照(=父) | 61.14 | 72.18 | 59.03 | 0.7716 | 0.01234 | 0.05314 |+| PLAN β=0.5, cap1.25 | 61.20 | 72.44 | 59.01 | 0.7735 | 0.01195 | 0.05319 |+| b 侧保 z(SPREAD_ZPRES) | ~59.9 | 70.32 | 58.48 | 0.7578 | 0.01541 | 0.05435 |+| 整云匹配 xyz λ1(无膨胀) | 61.49 | 74.10 | 58.52 | 0.7710 | 0.00798 | 0.05426 |+| 整云匹配 xy λ1 | 61.11 | 72.69 | 58.42 | 0.7945 | 0.01412 | 0.05448 |+| 整云匹配 z λ0.5 / λ0.75 | 61.14 / 61.26 | 72.81/73.26 | 58.40/58.42 | 0.7917/0.7834 | — | — |+| 膨胀+z 匹配 λ1 | 61.38 | 73.15 | 59.04 | 0.7750 | 0.01047 | 0.05313 |+| **z 匹配 λ1(提交)** | **61.50** | **74.20** | 58.47 | 0.7862 | 0.00945 | 0.05436 | -提交态 = `DRIFT_ALPHA=0`(代码默认),预测与父节点 13/11 逐位一致,预期正式分 62.15。-沿用了本树的既定模式:代理证伪后主动回退,不浪费正式评分。+多种子(A 半):z 匹配 61.50/61.78/62.02(seed 0/1/2,均值 **61.77**);膨胀+z 匹配 61.38/61.78/61.89(均值 61.68);off 对照 61.14/61.62(seed 0/1,均值 61.38)。提交态默认运行 = z 匹配 seed 0 逐位一致,vec-check ok。 -## 验证与未验证+## 结论与已验证/未验证 -- 已验证:off 与父逐位一致(seed 0/1);`vec-check` ok;机制诊断(漂移细胞数、距离-  收缩、邻居余弦);α 单调性(3 点);单输入退路不受影响(漂移在 bracket 分支内)。-- 已验证视图无关性:漂移只依赖表达、标签、对齐坐标与 t(时间差),无绝对时间/路径-  分支;KDTree 查询确定,无 RNG。-- 未验证:k∈{5,12}(α 单调劣化使 k 扫描无意义,省查分额度);α<0.3 的掩膜版-  (改动 <1.5%,必在噪声内);b 侧漂移(b 侧选胞已实现中间态偏好,再漂移是双重收缩)。-- 生物学知识来源:无新增外部知识;混合质心与共有型判定全部由 view 内两括号数据现场计算。+- PLAN 的 b 侧 xy 各向异性膨胀被其自带判据证伪(各向异性缺损仅 2%,β 扫描在噪声内)。同族推广到整云逐轴匹配后,**z 轴 8.8% 的过扩展才是真实缺损**,收缩 z 一致提升 shape(3 种子 shape +1.6~+2.7,d2_shape −18~−23%),代价是 local −0.5(seed 0)~+0.1(seed 1/2)。+- 证伪并记录:xy-only 匹配(occ_dice 最高 0.7945 但 d2_shape 恶化、净负)、λ 阻尼(λ=0.5/0.75 反而 local 不恢复、shape 增益缩水,非单调,不再扫)、b 侧保 z(shape −1.9,父节点的 z 压平实际有益)、膨胀+z 匹配(净低于 z 匹配单独)。+- 未验证:真实括号(E7.25→E8.0 快增长段)的 σ_ref_z/σ_out_z 比值方向——若真实输出云 z 偏窄,fac_z>1 会扩张 z,机制仍按数据驱动执行,但收益方向未在代理上检验;B 半与正式分的迁移(A 半 +0.26~+0.39 属小幅,树内 seed 间 A 半波动 ~0.5);心脏榜(本节点只针对 embryo interp)。+- 生物学知识来源:无新增外部知识;z 为离散切片轴的注意事项来自方法卡,σ 匹配纯数据驱动。diff --git a/solution/run.py b/solution/run.pyindex addcef8..593b46e 100644--- a/solution/run.py+++ b/solution/run.py@@ -63,6 +63,24 @@ seed 0): monotone in alpha (0 -> 61.14, 0.3 -> 60.94, 0.6 -> 60.74) with cell_state, neighborhood_mmd and de_direction all degrading: pushing a-side expression toward the mid-state hurts even when continuous and spatially smooth. Submitted default DRIFT_ALPHA=0, bit-identical to node 13/11.++Change (PLAN T2EI-05, node 25): per-axis anisotropic dilation. The PLAN's+b-side per-axis gamma_axis = 1.15*(sigma_ref/sigma_out)^beta (env ANISO_BETA,+ANISO_CAP) is implemented but falsified by its own pre-registered criteria:+the two xy axis ratios differ by only 2.0% (<5% => inert) and the beta=0.5+quick screen moved shape_scale +0.26 (<+0.5 => abort). The surviving variant+is the same per-axis idea applied to the WHOLE output cloud (env ANISO_FULL,+submitted = 1, ANISO_AXES=z, ANISO_LAMBDA=1): after jitter, each axis of the+stacked cloud is affinely matched to the bracket-interpolated per-axis spread+sigma_ref = (1-t)*sigma_a + t*sigma_b of the aligned input clouds, then the+global RMS is restored. Only the z axis survives: z matching (fac ~0.92, the+output cloud is 8% over-extended in z because the early stage dominates the+mix) lifts shape_scale 72.2 -> 74.2 (d2_shape -23%, occupancy_dice +1.5pp)+while xy-only matching worsens d2_shape and b-cell z-preservation (SPREAD_ZPRES)+destroys shape (70.3). The submitted config turns the node-11 b-side xy+dilation OFF (SPREAD_ALPHA=0): dilation+z-matching nets lower than z-matching+alone (61.38 vs 61.50, A half, seed 0). Mechanism-off control: ANISO_FULL=0+SPREAD_ALPHA=0.3 reproduces the parent bit-for-bit (verified). """  from __future__ import annotations@@ -91,7 +109,7 @@ SEL_A_MODE = os.environ.get("SEL_A_MODE", "spatial").strip().lower()  # plain|sp SEL_A_BINS = int(os.environ.get("SEL_A_BINS", "2")) SEL_C_A = float(os.environ.get("SEL_C_A", "0.0")) MIN_RANK_POOL = 5-SPREAD_ALPHA = float(os.environ.get("SPREAD_ALPHA", "0.3"))+SPREAD_ALPHA = float(os.environ.get("SPREAD_ALPHA", "0.0"))  # submitted: b-side dilation OFF (replaced by z matching) SPREAD_CAP = float(os.environ.get("SPREAD_CAP", "1.15")) SPREAD_MIN_K = int(os.environ.get("SPREAD_MIN_K", "3")) SPREAD_WHEN = os.environ.get("SPREAD_WHEN", "pre").strip().lower()@@ -101,6 +119,13 @@ SPREAD_MU = os.environ.get("SPREAD_MU", "global").strip().lower()  # type|global DRIFT_ALPHA = float(os.environ.get("DRIFT_ALPHA", "0.0")) DRIFT_K = int(os.environ.get("DRIFT_K", "8")) DRIFT_MIN_CELLS = int(os.environ.get("DRIFT_MIN_CELLS", "5"))+# PLAN T2EI-05 (node 25): per-axis anisotropic xy dilation of the b side.+ANISO_BETA = float(os.environ.get("ANISO_BETA", "0.0"))   # 0 = isotropic (parent, bit-identical)+ANISO_CAP = float(os.environ.get("ANISO_CAP", "1.30"))+SPREAD_ZPRES = int(os.environ.get("SPREAD_ZPRES", "0"))   # 1 = keep b-cell z instead of flattening to mu_z+ANISO_FULL = int(os.environ.get("ANISO_FULL", "1"))       # submitted: whole-cloud per-axis sigma matching ON+ANISO_LAMBDA = float(os.environ.get("ANISO_LAMBDA", "1.0"))  # damping of the per-axis matching toward sigma_ref+ANISO_AXES = os.environ.get("ANISO_AXES", "z").strip().lower()  # submitted: match z only (xy falsified, see METHOD)   def _spread_apply(X: np.ndarray, rows: np.ndarray, mu: np.ndarray, f: float) -> None:@@ -405,6 +430,8 @@ def main() -> None:     target_rms = log_interp(rms_a, rms_b, t, PARAMS["scale_damp"])     ca = scale_to_rms(aligned_a, target_rms)     cb = scale_to_rms(aligned_b, target_rms)+    # pristine per-axis reference spread, captured before any dilation edits cb+    s_ref_axes = (1.0 - t) * ca.std(axis=0) + t * cb.std(axis=0)      n = interp_count(stage_a.n, stage_b.n, t, lo, hi)     n_b = int(np.clip(int(round(KAPPA * t * n)), 0, n))@@ -450,10 +477,34 @@ def main() -> None:      spread_plan = []     spread_diag = []+    aniso_diag = {}     if ib.size and SPREAD_ALPHA > 0.0:         if SPREAD_MU == "global":             g = (np.vstack([ca[ia], cb[ib]]) if ia.size else cb[ib]).mean(axis=0)-            spread_plan = [("__global__", None, ib, SPREAD_CAP, int(stage_b.n), int(ib.size))]+            f_use: float | np.ndarray = SPREAD_CAP+            if ANISO_BETA != 0.0 or SPREAD_ZPRES:+                # Per-axis reference spread from the aligned bracket clouds.+                out_cloud = np.vstack([ca[ia], cb[ib]]) if ia.size else cb[ib]+                fv = np.array([SPREAD_CAP, SPREAD_CAP, SPREAD_CAP], dtype=np.float64)+                ratios = {}+                for ax in (0, 1):+                    s_ref = float(s_ref_axes[ax])+                    s_out = float(out_cloud[:, ax].std())+                    r = s_ref / max(s_out, 1e-9)+                    ratios["xy"[ax]] = r+                    fv[ax] = float(min(max(SPREAD_CAP * r ** ANISO_BETA, 1.0), ANISO_CAP))+                if SPREAD_ZPRES:+                    fv[2] = 1.0  # keep each b cell's own z (parent flattens it to mu_z)+                else:+                    fv[2] = 0.0  # dev*0 => z = mu_z, identical to the isotropic parent path+                f_use = fv+                aniso_diag = {+                    "aniso_beta": ANISO_BETA, "aniso_cap": ANISO_CAP,+                    "ratio_ref_out_x": ratios["x"], "ratio_ref_out_y": ratios["y"],+                    "axis_ratio_rel_diff": abs(ratios["x"] - ratios["y"]) / ((ratios["x"] + ratios["y"]) / 2),+                    "gamma_x": float(fv[0]), "gamma_y": float(fv[1]), "zpres": int(SPREAD_ZPRES),+                }+            spread_plan = [("__global__", None, ib, f_use, int(stage_b.n), int(ib.size))]         elif SPREAD_MU == "bcloud":             g = cb[ib].mean(axis=0)             spread_plan = [("__bcloud__", None, ib, SPREAD_CAP, int(stage_b.n), int(ib.size))]@@ -463,8 +514,15 @@ def main() -> None:             cb = cb.copy()             for tname, rows_all, rows_sel, f, n_c, k_c in spread_plan:                 mu = g if rows_all is None else cb[rows_all].mean(axis=0)-                _spread_apply(cb, rows_sel, mu, f)-                spread_diag.append({"type": tname, "n_c": n_c, "k_c": k_c, "f": f})+                dev = cb[rows_sel] - mu+                if np.isscalar(f):+                    if SPREAD_AXES == "xy":+                        dev[:, 2] = 0.0+                    cb[rows_sel] = mu + dev * f+                else:+                    cb[rows_sel] = mu + dev * f+                spread_diag.append({"type": tname, "n_c": n_c, "k_c": k_c,+                                    "f": f if np.isscalar(f) else f.tolist()})      parts = []     coord_parts = []@@ -490,6 +548,23 @@ def main() -> None:             rows = off + np.flatnonzero(lab_sel == tname)             coords[rows] = mu_f + (coords[rows] - mu_f) * f             spread_diag.append({"type": tname, "n_c": n_c, "k_c": k_c, "f": f})+    elif ANISO_FULL:+        # Whole-cloud per-axis sigma matching (extension of the PLAN family):+        # match each axis of the output cloud to the bracket-interpolated+        # per-axis spread of the aligned inputs, then restore the global RMS.+        mu0 = coords.mean(axis=0)+        fac = np.ones(3)+        for ax in range(3):+            if "xyz"[ax] not in ANISO_AXES:+                continue+            s_ref = float(s_ref_axes[ax])+            s_out = float(coords[:, ax].std())+            fac[ax] = 1.0 + ANISO_LAMBDA * (s_ref / max(s_out, 1e-9) - 1.0)+        coords = mu0 + (coords - mu0) * fac+        coords = scale_to_rms(coords, target_rms)+        aniso_diag = {"aniso_full": 1, "aniso_lambda": ANISO_LAMBDA, "aniso_axes": ANISO_AXES,+                      "full_fac_x": float(fac[0]),+                      "full_fac_y": float(fac[1]), "full_fac_z": float(fac[2])}     else:         coords = scale_to_rms(coords, target_rms) @@ -503,6 +578,7 @@ def main() -> None:         "spread_when": SPREAD_WHEN if SPREAD_ALPHA > 0 else "off",         "spread_scope": SPREAD_SCOPE, "n_spread_types": len(spread_diag),         "spread": spread_diag, "sel_side": SEL_SIDE, **a_diag, **drift_diag,+        **aniso_diag,     }, default=float), file=sys.stderr)     write_t2(args.out, expr, coords.astype(np.float32), genes, seed=args.seed) 

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

用到的知识库条目

编号标题出处
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:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。

改了什么实现了 PLAN 的 b 侧逐轴各向异性 xy 膨胀(ANISO_BETA/ANISO_CAP),但被其预注册判据证伪(xy 两轴 σ_ref/σ_out 比值差仅 2.0%,β=0.5 快筛 shape 仅 +0.26);实际提交的是同族推广——整云逐轴 σ 匹配且只开 z 轴(ANISO_FULL=1, ANISO_AXES=z, ANISO_LAMBDA=1):jitter 后把输出云 z 轴仿射匹配到括号插值参考 σ_ref_z(fac≈0.92,输出云 z 偏宽 ~8.8%)再恢复全局 RMS,同时关闭父节点的 b 侧膨胀(SPREAD_ALPHA=0)。
各组分数的变化cell_state:噪声内(+0.00,54.35→54.35)
expression_change:噪声内(+0.00,61.08→61.08,表达未改动,符合预期)
local_spatial:轻微变坏/噪声内(−0.59,60.69→60.10,与 A 半 seed0 的 −0.56 一致,z 收缩使 neighborhood_mmd 略恶化)
overall:榜分 +0.11(62.15→62.26),在 T2 约 1 分噪声内;shape 增益被 local 损失大半抵消
shape_scale:变好(+1.03,72.48→73.51,约在 T2 噪声边缘但方向与 A 半证据一致:d2_shape −18~−23%、occupancy_dice +1.5pp、3 种子 shape +1.6~+2.7)
family_idT2EI-05
假设是否成立否
经验
  1. 在 embryo interp 代理上,输出云的逐轴扩展缺损集中在 z 轴(σ_out_z 比括号插值参考宽 ~9%,因早端主导混合),xy 两轴比值差仅 2%:任何逐轴形状补偿应先打印 σ_ref/σ_out 逐轴比值再选轴,否则会在近各向同性的轴上空扫参数。
  2. 整云 z 轴 σ 匹配到 (1−t)σ_a+tσ_b 再恢复全局 RMS,可稳定换来 shape_scale 增益(A 半 d2_shape −18~−23%、occ_dice +1.5pp、3 种子同向),代价是 local_spatial ~−0.5:z 压扁(父节点 b 侧膨胀把 z 压到 μ_z)方向上其实有益,保留 b 细胞自身 z(SPREAD_ZPRES)反而 shape −1.9。
  3. 引入新的形状修正后必须重测旧组件的净贡献:b 侧 xy 膨胀 γ=1.15 与 z 匹配叠加(61.38)低于 z 匹配单独(61.50),父节点保留的膨胀在提交态应关闭。
  4. PLAN 里预注册的终止判据(两轴比值差 <5% 即机制无效、快筛 shape <+0.5 即放弃)有效省查分:本节点 10 次查分内完成证伪+找到替代机制。
  5. xy-only 匹配即使 occupancy_dice 最高(0.7945)也净负(d2_shape 恶化):占据类指标不能单独作为 shape_scale 的代理,要看 d2_shape 综合。
mechanism_active是
下一步建议
  1. 在真实括号(如 E7.25→E8.0 快增长段)和心脏榜上先跑诊断打印 σ_ref_z/σ_out_z:若比值 >1(输出云 z 偏窄),fac_z>1 的扩张方向收益未在代理上验证,不要直接迁移 z 匹配(针对 shape_scale 组)。
  2. 针对 local_spatial 的 −0.5 损失,试 κ(组成阻尼 0.65)× ANISO_LAMBDA(z) 的小网格(κ∈{0.55,0.65,0.75}×λ∈{0.85,1.0}):更多 b 侧细胞可能减轻 z 收缩对邻域耦合的破坏;λ<0.8 已证非单调,不再下探。
  3. z 匹配可试在 jitter 前应用或按型分别匹配 z(而非整云单因子),检查 d2_shape 是否进一步下降而不伤 neighborhood_mmd(针对 shape_scale + local_spatial)。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数46
工具调用共 51 次:bash 28、edit 18、read 3、write 2
用时19 分
token 数输入 86,529 · 输出 15,821 · 思考 19,204
任务(第一行)按计划修改程序:各向异性xy膨胀:按括号插值的逐轴占据缺损补偿b侧坐标
最后的回答(摘录)
完成。总结:

**做了什么**:按 PLAN T2EI-05 实现 b 侧逐轴各向异性膨胀(ANISO_BETA/ANISO_CAP),诊断显示 xy 两轴 σ_ref/σ_out 比值差仅 2.0%(<5% 预注册终止判据),β=0.5 快筛 shape 仅 +0.26(<+0.5)→ PLAN 机制证伪。同族推广到**整云逐轴 σ 匹配**发现真实缺损在 z 轴(输出云比括号插值参考宽 8.8%):提交态为 jitter 后把输出云 z 轴仿射匹配到 σ_ref_z=(1−t)σ_a+tσ_b(fac≈0.92)再恢复全局 RMS,b 侧膨胀关闭。off 对照(ANISO_FULL=0 SPREAD_ALPHA=0.3)与父节点 h5py 逐数组比对 True;默认运行确定、vec-check 通过。

**查分**(10/20 次,A 半):提交态 z 匹配 61.50/61.78/62.02(seed 0/1/2,均值 61.77)vs off 对照 61.14/61.62;shape_scale 72.2→73.8~74.9(d2_shape −18~−23%,occupancy_dice +1.5pp),local −0.5~+0.1。证伪并记录:xy-only 匹配(净负)、λ 阻尼(非单调)、b 侧保 z(shape −1.9)、膨胀+z 匹配(低于 z 匹配单独)。

**下一步**:z 匹配在真实括号(快增长段)的方向未验证,值得在心脏榜/真实任务上诊断 σ_ref_z/σ_out_z;occupancy_dice 已到 0.786,剩余余量可能需要 z 匹配与 b 侧中间态选胞的联合调参(κ×z-fac 网格)。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/25/engineer.jsonl 248 KB
/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/25/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时2 分
token 数输入 13,477 · 输出 1,188 · 思考 6,005
任务(第一行)为节点 n25(改进,父节点 n23)写改进计划 PLAN.json
最后的回答(摘录)
{
  "name": "各向异性xy膨胀:按括号插值的逐轴占据缺损补偿b侧坐标",
  "motivation": "父节点23/13/11提交态62.15,shape_scale=72.48但node2曾达74.43(occupancy_dice 0.84 vs 当前~0.77),说明占据仍有~7%余量。当前b侧膨胀γ=1.15在xy各向同性,但胚胎在xy并非圆形对称;ANALYSIS明确建议'按体素占据缺失方向做非各向同性γ补偿'。local_spatial=60.69为次弱组,也受占据质量影响。节点19已证伪γ_cap≥1.25的均匀膨胀和κ偏移,但从未尝试过按轴分化的γ。",
  "approach": "在现有b侧均匀xy膨胀(SPREAD_CAP=1.15)的位置替换为逐轴各向异性膨胀:\n1. 选胞后、膨胀前,分别计算a括号全部细胞和b括号全部细胞在xy上的逐轴标准差σ_a_x,σ_a_y,σ_b_x,σ_b_y(用对齐后坐标)。\n2. 按时间插值计算参考逐轴扩展:σ_ref_axis=(1−t)·σ_a_axis+t·σ_b_axis,t为bracket插值参数(与现有log_interp一致)。\n3. 计算当前输出云(a+b选入细胞)的逐轴标准差σ_out_x,σ_out_y。\n4. 逐轴膨胀因子:γ_axis=γ_base·(σ_ref_axis/σ_out_axis)^β,其中γ_base=1.15(现有SPREAD_CAP),β=ANISO_BETA(env,默认0),上限ANISO_CAP(默认1.30),下限1.0。\n5. 对b侧被选细胞逐轴应用:x'=μ_x+(x−μ_x)·γ_x, y'=μ_y+(y−μ_y)·γ_y(μ仍为输出云质心,与现有SPREAD_MU=global一致);z不动。\n6. 后续jitter+终RMS缩放不变。\n参数搜索:ANISO_BETA∈{0.3,0.5,0.7,1.0}×ANISO_CAP∈{1.20,1.25,1.30},共12配置,每配置1次vec-score(seed0);最优配置再用seed1确认。预计≤14次查分。\n单输入退路:无括号→无b侧→跳过膨胀,与父节点一致。\n快速筛选:先跑ANISO_BETA=0.5/ANISO_CAP=1.25,若shape_scale无改善(<+0.5)即放弃,不扫全网格。",
  "expected_groups": ["shape_scale", "local_spatial"],
  "risks": "1. 逐轴σ_ref/σ_out比值可能接近1(各向异性缺损很小),β扫描全在噪声内→Engineer先打印σ_ref/σ_out比值,若两轴比值差<5%则机制无实际作用,提前终止。2. 某轴γ超过1.3导致该方向过度膨胀、occupancy_dice反降→ANISO_CAP硬上限+查分监控。3. 逐轴膨胀破坏xy圆对称假设,若参考形状本身就是各向同性的则无改善→打印诊断即可发现。4. 与终RMS缩放的交互:终缩放会重新归一化总RMS,可能部分抵消逐轴调整→在终缩放前检查逐轴spread,确认调整方向正确。",
  "family_id": "T2EI-05",
  "mechanism": "将b侧xy膨胀从各向同性γ改为逐轴各向异性γ:按括号插值的参考逐轴扩展与输出云实际逐轴扩展的比值,分方向施加不同膨胀因子,使输出云在x和y方向分别匹配目标形状的期望扩展。",
  "vs_constant_shift": "常数位移对每个细胞加同一向量,不改变云的形状;本机制按轴施加不同倍率的径向缩放(乘法而非加法),且倍率由数据驱动的逐轴占据缺损计算得出,不同轴、不同配置下γ_x≠γ_y,改变的是云的纵横比而非位置。",
  "mechanism_evidence": "Engineer应打印:(1) σ_ref_x/σ_out_x 与 σ_ref_y/σ_out_y 的比值(若两轴比值差<5%则机制无实际差异);(2) 实际γ_x和γ_y值;(3) 膨胀前后逐轴spread变化;(4) 四组分变化,重点看shape_scale和local_spatial是否同向改善;(5) 与β=0(各向同性γ=1.15)的差值。",
  "mechanism_off_control": "ANISO_BETA=0时(σ_ref/σ_out)^0=1,γ_x=γ_y=γ_base=1.15,退化为现有各向同性膨胀,输出与父节点逐位一致。Engineer用seed 0验证ANISO_BETA=0的输出与父节点h5py逐数组比对为True。"
}
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/25/researcher.jsonl 5 KB
/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/25/researcher.stderr

审查员

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