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

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

节点 n24

体素占据插值引导坐标再分布(T2EI-06)已实现并对照:η>0 占据 L1 降、occupancy_dice 仅 +0.005,邻域 mmd +0.0013 破否决线,净负;提交默认 η=0,与父节点逐位一致。

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

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

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

体素占据插值引导坐标再分布(T2EI-06)已实现并对照:η>0 占据 L1 降、occupancy_dice 仅 +0.005,邻域 mmd +0.0013 破否决线,净负;提交默认 η=0,与父节点逐位一致。

方法(family T2EI-06,PLAN:occupancy-guided coordinate redistribution)

父节点 21 全部管线不动(mix 分层混抽、procrustes3d、α=5 收敛位移、λ=6 投影加权、β=0.2 配对收缩、各向异性坐标整形 damp=1.25、jitter、RMS 回缩;表达侧 recolor/varrest/prog 开关保持父节点默认的关闭态)。在 RMS 回缩之后、写出之前新增坐标再分布步骤(T2_OCCUP_ETA,默认 0=整体跳过):

  1. 评分器同款归一化(_dice_normalize):去质心、PCA 对齐(第三矩定向各轴,强制 det=+1)、除以 RMS 半径。对输出云和括号两侧全部原始细胞(align_pair 对齐后的 aligned_a / aligned_b)分别做同样归一化。
  2. 体素占据:±3 范围内 16³ 均匀网格(与 occupancy_dice 评分器一致),统计 a 侧、b 侧、输出侧每体素计数并归一化为概率密度。
  3. 目标占据:P_tgt(v) = (1−t)·P_a(v) + t·P_b(v),t 与 mix 相同(本代理 = 0.4)。
  4. 限幅位移:输出细胞所在体素若 P_out > P_tgt(过密),朝最近欠密体素(P_out < P_tgt)中心方向位移 η·(P_out−P_tgt)/P_out,限幅 0.3 个网格步长(=0.1125 归一化单位);P_out ≤ P_tgt 的细胞不动。
  5. 回缩:位移加在归一化坐标上,逆归一化(×rms、@Vᵀ、+质心)回输出帧,再 scale_to_rms 均匀回缩到原 target_rms(scale_log_ratio 保持)。表达矩阵逐位不动;细胞移动时携带自己的表达,表达-位置配对不变。
  6. 单输入阶段退路:无括号时 main() 提前 return,机制不执行(与父节点一致)。
  7. 机制不消费 rng,η=0 时不建网格、不改坐标。

知识来源:只用视图内两个括号阶段自身的坐标测量与 t 线性插值假设;16³/±3RMS 网格与归一化方式来自任务书公开的 occupancy_dice 评分规则说明,无保留阶段/基因型信息,无外部文献数值。

机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4)

  • 实际改变的细胞:η=0.3/0.6/1.0 均移动 3242/5000 个细胞(过密体素内全部细胞);平均位移 0.093/0.106/0.109 归一化单位(≈14–16 µm),最大 0.1125(限幅值,多数细胞被限幅饱和);表达矩阵与细胞数逐位不变,输出 RMS 149.2 不变。
  • 占据 L1 距离(|P_out−P_tgt| 总和):0.680 → 0.472(η=0.3)/ 0.514(η=0.6)/ 0.522(η=1.0),下降,机制按其设计目标生效;对插值占据集的 self-dice 0.781 → 0.826。
  • occupancy_dice raw(A 半,同日锚点 0.8066):η=0.3 → 0.8113(+0.0047,points 3.511→3.591)。
  • neighborhood_mmd raw:锚点 0.05506 → η=0.3 0.05636(+0.0013,> PLAN 0.001 否决线),points 14.54→14.40。
  • d2_shape raw:锚点 0.0047 → 0.00542(劣化,points 8.159→8.066);scale_log_ratio 0.0162 不变(points 7.767→7.768)。
  • 四组分变化(A 半):expression_change 60.97 不变、cell_state 48.93 不变(不触碰表达)、shape_scale 77.75→77.70、local_spatial 58.16→57.58。净榜分变化 ≈ −0.16(在 ±1 噪声内,但方向为负且触发否决线)。

结论:占据密度重排确实按设计改变了占据(L1 下降、occupancy_dice 微升),但收益(+0.08 points)远小于 neighborhood_mmd 损失(−0.145 points)+ d2_shape 损失(−0.09 points)。邻域项对"细胞位置被搬运"高度敏感——即使表达随细胞一起移动、配对不变,15-NN 邻域的组成仍被打乱。这是树内第四次独立观察到 local_spatial 与形状/状态类改动之间的实测权衡(节点 15、17、21 之后)。

关闭对照(mechanism_off_control)

T2_OCCUP_ETA=0(提交默认):位移步骤整体跳过(不建网格、不改坐标、不消费 rng),本地重跑输出与父节点 21 提交在 seed 0 下 array_equal 验证逐位相同(X 与 spatial_3D 均 True),vec-check ok,n=5000。开启(η>0)后坐标改变 3242 个细胞、表达矩阵逐位不变、细胞数不变(上节),机制生效但净负。

查分结果(A 半,seed 0,共用 3/20 次)

配置shape_scalelocal_spatialoccupancy_dice rawd2_shape rawneighborhood rawscale raw
η=0(锚点,=父节点)77.7558.160.80660.00470.055060.0162
η=0.3, clamp=0.377.7057.580.81130.005420.056360.0162
η=0.6 / 1.0未查分(L1 与 self-dice 均劣于 η=0.3,位移已限幅饱和,判负后未消耗额度)

按 PLAN 步骤 7:η=0.3 无净改善且 neighborhood raw 升幅 +0.0013 > 0.001 → 判负,提交 η=0(与父节点 21 逐位一致,B 半预期 62.52)。

未验证

  • η=0.6/1.0 未查分(η=0.3 已触发否决线,PLAN 规定即停;且其占据 L1 更差)。
  • clamp 放宽到 0.5 格未试:occupancy_dice 在 η=0.3 已有变化(非 PLAN 风险 1 的"无变化"分支),且收益量级(+0.08 points)已被证明远小于邻域损失量级,放宽只会加大搬运距离、进一步伤邻域。
  • 更小的 clamp(如 0.15 格)未试:按比例外推 occupancy 收益 ~+0.04、邻域损失 ~−0.07,仍为净负方向,未消耗额度验证。

调研员的计划

名称体素占据插值引导的坐标再分布(occupancy-guided coordinate redistribution)
动机父节点 21 的 occupancy_dice skill 仅 0.424(3.53/8.33),是八项中最大单项提升空间。节点 13 的 PCA 轴展幅整形(damp=1.25)和节点 21/22 的 boost/分型 aniso 均已在展幅维度达到局部最优(双向劣化)。父节点 ANALYSIS 明确指出:'该指标要的是占据形状本身的变化,不是展幅缩放',建议'用括号两侧阶段的体素占据概率做坐标层面的重排/局部搬运(搬细胞不搬表达值)'。当前输出是两侧阶段细胞的混合叠加,其占据模式是两阶段形状的叠加而非插值中间态,这是 occupancy_dice 偏低的结构性原因。
做法在父节点 21 全部管线(mix→converge→λ→β→aniso→jitter→RMS 回缩)之后、写出之前,新增坐标再分布步骤(环境变量 T2_OCCUP_ETA,默认 0=跳过):

1. 归一化:对输出云做与 occupancy_dice 相同的归一化——去质心、PCA 对齐(强制 det=+1,第三矩定向)、除以 RMS 半径,得到单位球内坐标。同时对括号两侧原始细胞(对齐后)做相同归一化。
2. 体素占据计算:在 ±3 范围内建 16³ 均匀网格(与评分器一致),分别统计 a 侧、b 侧、输出侧每体素的占据计数,归一化为概率密度(计数/总细胞数)。
3. 目标占据插值:P_target(v) = (1−t)·P_a(v) + t·P_b(v),t 为插值分数(与 mix 一致)。
4. 位移场计算:对每个输出细胞,找其所在体素 v;若 P_out(v) > P_target(v)(过密),计算该细胞到最近欠密体素(P_out < P_target)的方向向量,乘以强度 η·(P_out(v)−P_target(v))/P_out(v)。位移限幅:单细胞位移 ≤ 0.3 个网格步长(≈0.19 RMS 单位),避免大距离搬运破坏邻域。若 P_out(v) ≤ P_target(v),不移动。
5. 应用与回缩:将位移加到归一化坐标上,逆归一化回原尺度,再均匀缩放到原目标 RMS(保 scale_log_ratio)。表达矩阵逐位不动。
6. 单输入阶段退路:无括号时 main() 提前 return,机制不执行(与父节点一致)。
7. vec-score 筛选:先跑 η=0(锚点,应与父节点逐位一致)确认基线;再跑 η=0.3, 0.6, 1.0 三档,同时报 occupancy_dice、d2_shape、scale_log_ratio、neighborhood_mmd 四项 raw。neighborhood_mmd raw 升幅 >0.001 即停。若 η=0.3 已有改善,细分 0.1–0.5 区间;否则判负、提交 η=0。
8. 关键参数初值与范围:η ∈ {0, 0.3, 0.6, 1.0}(位移缩放因子);位移限幅 0.3 格(固定);网格 16³(与评分器一致)。预计查分 ≤6 次。
风险1. 小位移可能不足以改变 16³ 网格上的占据模式(体素边长约 0.375 RMS,位移限幅 0.19 RMS 可能不够跨体素)——若 η=1.0 时 occupancy_dice 无变化,可放宽限幅到 0.5 格再试一次,若仍无变化则判负。2. 坐标搬动改变邻域组成,可能伤 neighborhood_mmd——用限幅和仅移动过密区细胞来控制;neighborhood_mmd raw 升幅 >0.001 即停。3. 两侧阶段的占据差异可能主要在 PCA 对齐后已消除的方向上(即 aniso 已捕获),剩余差异太小——这会导致机制无效但无害(η=0 提交)。4. 30 分钟内实现风险低:核心是网格统计 + 最近欠密体素搜索,无迭代优化。

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

对比:父节点版本 d4132aa7d7。改动的文件:solution/METHOD.md +31 −34、solution/run.py +122 −1

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 23a84fe..762293e 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,49 +1,46 @@-型内基因共变重着色(PLAN T2EI-01)已实现并对照:η>0 时相关矩阵反而离目标更远、variogram 与 neighborhood 均劣化;另测坐标各向异性 boost(±)也劣化 occupancy_dice。提交默认 η=0、boost=0,输出与父节点 13/15/17 逐位相同。+体素占据插值引导坐标再分布(T2EI-06)已实现并对照:η>0 占据 L1 降、occupancy_dice 仅 +0.005,邻域 mmd +0.0013 破否决线,净负;提交默认 η=0,与父节点逐位一致。 -## 方法(family T2EI-01,PLAN:whitening-recolor 修共变结构)+## 方法(family T2EI-06,PLAN:occupancy-guided coordinate redistribution) -父节点 17 全部管线不动(mix 分层混抽、procrustes3d、α=5 收敛位移、λ=6 投影加权、β=0.2 配对收缩、各向异性坐标整形 damp=1.25、jitter、RMS 回缩)。在 β/varrest 之后、写出表达之前新增机制(`T2_RECOLOR_ETA`,默认 0=跳过):+父节点 21 全部管线不动(mix 分层混抽、procrustes3d、α=5 收敛位移、λ=6 投影加权、β=0.2 配对收缩、各向异性坐标整形 damp=1.25、jitter、RMS 回缩;表达侧 recolor/varrest/prog 开关保持父节点默认的关闭态)。在 RMS 回缩之后、写出之前新增坐标再分布步骤(`T2_OCCUP_ETA`,默认 0=整体跳过): -1. 对每个共有类型(原始括号两侧各 ≥10 细胞、输出侧 ≥4 细胞,实测 10 个型):取在两侧与输出侧 nnz 比例都 ≥0.03 的基因子集(实测中位 70.5 个基因)。-2. `C_a`、`C_b` = 两侧原始细胞的基因-基因协方差;`C_target = (1−t)·C_a + t·C_b`;`C_out` = 输出侧该型细胞绕 μ_out 的协方差。-3. 传输映射 `W`:`sym`(默认)用 Bures/Wasserstein 映射 `C_out^{-1/2}(C_out^{1/2} C_target C_out^{1/2})^{1/2} C_out^{-1/2}`(满足 `Wᵀ C_out W = C_target`),`plan` 用 PLAN 原文的 `C_target^{1/2} C_out^{-1/2}`;`C_out` 加 5% 迹脊正则,偏离单位阵的部分截断到 `C_out` 前 k=50 个特征方向(低秩)。-4. 型内偏差 `d = x − μ_out` → `d·(I + η·(W − I))`,只覆写原本 >0 的条目(零模式不变),clip ≥0,再按该基因 nnz 条目数摊回重居中(沿用节点 17 的修正),型均值/pseudobulk/DE 不动。-5. 不消费 rng、不改细胞选择、不改坐标;单输入阶段退路不变(main() 提前 return 分层复制,机制不执行)。+1. **评分器同款归一化**(`_dice_normalize`):去质心、PCA 对齐(第三矩定向各轴,强制 det=+1)、除以 RMS 半径。对输出云和括号两侧全部原始细胞(`align_pair` 对齐后的 aligned_a / aligned_b)分别做同样归一化。+2. **体素占据**:±3 范围内 16³ 均匀网格(与 occupancy_dice 评分器一致),统计 a 侧、b 侧、输出侧每体素计数并归一化为概率密度。+3. **目标占据**:P_tgt(v) = (1−t)·P_a(v) + t·P_b(v),t 与 mix 相同(本代理 = 0.4)。+4. **限幅位移**:输出细胞所在体素若 P_out > P_tgt(过密),朝最近欠密体素(P_out < P_tgt)中心方向位移 η·(P_out−P_tgt)/P_out,限幅 0.3 个网格步长(=0.1125 归一化单位);P_out ≤ P_tgt 的细胞不动。+5. **回缩**:位移加在归一化坐标上,逆归一化(×rms、@Vᵀ、+质心)回输出帧,再 `scale_to_rms` 均匀回缩到原 target_rms(scale_log_ratio 保持)。表达矩阵逐位不动;细胞移动时携带自己的表达,表达-位置配对不变。+6. **单输入阶段退路**:无括号时 main() 提前 return,机制不执行(与父节点一致)。+7. 机制不消费 rng,η=0 时不建网格、不改坐标。 -另加坐标侧对照开关 `T2_ANISO_BOOST`(默认 0):`factor = (target/cur)^(1+boost)`,把主轴展幅沿括号指示的方向进一步推离/推近各向同性,用于检验父节点建议的 occupancy_dice 整形方向。--知识来源:只用视图内两个括号阶段自身的测量(型内协方差);「中间态共变按时间线性插值」是通用插值假设,无文献数值,无保留阶段/基因型信息。+知识来源:只用视图内两个括号阶段自身的坐标测量与 t 线性插值假设;16³/±3RMS 网格与归一化方式来自任务书公开的 occupancy_dice 评分规则说明,无保留阶段/基因型信息,无外部文献数值。  ## 机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4) -- 实际改变的细胞:10 个型、3150/5000 个细胞、42666 个 nnz 条目(=该子集全部 nnz 条目,entries_frac 1.0);nnz 总数 206427→206431/206438/206448(η=0.1/0.25/0.5,clip 归零 <0.01%,稀疏结构保持)。-- 型均值最大漂移 0.00048(η=0.1)/0.0047(η=0.5),单条目最大改动 1.36/6.80;DE 两项 raw 完全不动(de_score 0.25、de_direction 0.3853)。-- **机制未达其设计目标**:型内相关矩阵到 `C_target` 的 Frobenius 距离随 η **增大**(相对值 1.0034 / 1.0092 / 1.0210,>1 表示更远),不满足 PLAN 预期的单调下降。原因是重着色作用于连续偏差,而输出矩阵的相关结构由保留下来的零模式(dropout 掩码)主导:nnz-only 覆写后实测相关并不跟随 `W`。-- 四组分变化(A 半,同日锚点 η=0:cell_state 48.93 / expression_change 60.97 / local_spatial 58.16 / shape_scale 77.31,与节点 17 锚点一致):η=0.25 → cell_state 49.06(mmd_u 0.01164→0.01151 改善,但 variogram 0.01442→0.01443 略劣)、local_spatial 57.84(neighborhood_mmd 0.05506→0.05577)、expression_change 与 shape_scale 不变(不触碰均值与坐标)。--## 关闭对照(mechanism_off_control)+- **实际改变的细胞**:η=0.3/0.6/1.0 均移动 3242/5000 个细胞(过密体素内全部细胞);平均位移 0.093/0.106/0.109 归一化单位(≈14–16 µm),最大 0.1125(限幅值,多数细胞被限幅饱和);表达矩阵与细胞数逐位不变,输出 RMS 149.2 不变。+- **占据 L1 距离**(|P_out−P_tgt| 总和):0.680 → 0.472(η=0.3)/ 0.514(η=0.6)/ 0.522(η=1.0),下降,机制按其设计目标生效;对插值占据集的 self-dice 0.781 → 0.826。+- **occupancy_dice raw**(A 半,同日锚点 0.8066):η=0.3 → 0.8113(+0.0047,points 3.511→3.591)。+- **neighborhood_mmd raw**:锚点 0.05506 → η=0.3 0.05636(**+0.0013,> PLAN 0.001 否决线**),points 14.54→14.40。+- **d2_shape raw**:锚点 0.0047 → 0.00542(劣化,points 8.159→8.066);scale_log_ratio 0.0162 不变(points 7.767→7.768)。+- **四组分变化**(A 半):expression_change 60.97 不变、cell_state 48.93 不变(不触碰表达)、shape_scale 77.75→77.70、local_spatial 58.16→57.58。净榜分变化 ≈ **−0.16**(在 ±1 噪声内,但方向为负且触发否决线)。 -`T2_RECOLOR_ETA=0`(提交默认)+ `T2_ANISO_BOOST=0`:重着色步骤整体跳过、各向异性因子退化为父节点表达式(`x**1.0 == x`),输出与父节点 17 提交在相同 seed 下逐位相同(结构上无 rng 消费、无坐标/选择改动;本地重跑两次 X 与 spatial_3D array_equal,`vec-check` ok,n=5000)。开启后(η>0 / boost≠0)输出确实改变(上节条目数与 raw 变化),机制生效但未获益。+结论:占据密度重排确实按设计改变了占据(L1 下降、occupancy_dice 微升),但收益(+0.08 points)远小于 neighborhood_mmd 损失(−0.145 points)+ d2_shape 损失(−0.09 points)。邻域项对"细胞位置被搬运"高度敏感——即使表达随细胞一起移动、配对不变,15-NN 邻域的组成仍被打乱。这是树内第四次独立观察到 local_spatial 与形状/状态类改动之间的实测权衡(节点 15、17、21 之后)。 -## 查分结果(A 半,seed 0,共用 5/20 次)+## 关闭对照(mechanism_off_control) -| 配置 | cell_state | local_spatial | shape_scale | variogram raw | mmd_u raw | neighborhood raw | occupancy_dice | d2_shape |-|---|---:|---:|---:|---:|---:|---:|---:|---:|-| η=0(锚,=父节点) | 48.93 | 58.16 | 77.31 | 0.01442 | 0.01164 | 0.05506 | 0.8086 | 0.00661 |-| η=0.1 | – | – | – | – | – | 0.05534 | – | – |-| η=0.25 | 49.06 | 57.84 | 77.75 | 0.01443 | 0.01151 | 0.05577 | – | – |-| aniso boost +0.4 | 48.93 | 58.21 | 76.27 | – | – | 0.05494 | 0.7897 | 0.00556 |-| aniso boost +0.8 | 48.93 | 58.16 | 75.48 | – | – | 0.05505 | 0.7917 | 0.00737 |-| aniso boost −0.5 | 48.93 | 58.17 | 76.54 | – | – | 0.05502 | 0.7898 | 0.00505 |+`T2_OCCUP_ETA=0`(提交默认):位移步骤整体跳过(不建网格、不改坐标、不消费 rng),本地重跑输出与父节点 21 提交在 seed 0 下 `array_equal` 验证逐位相同(X 与 spatial_3D 均 True),`vec-check` ok,n=5000。开启(η>0)后坐标改变 3242 个细胞、表达矩阵逐位不变、细胞数不变(上节),机制生效但净负。 -结论:(1) 共变重着色触发 PLAN 的一票否决——variogram 未按预期下降(+0.00001),neighborhood_mmd 随 η 劣化(+0.00028@0.1、+0.00071@0.25),组分净负;η=0.5 未查(趋势单调,预期更差)。mmd_u 的微改善(−0.00013)在 25 分权重的邻域损失面前不成立。(2) 坐标各向异性两个方向都降低 occupancy_dice(0.8086→0.79),说明父节点 damp=1.25 已在该指标局部最优,`ANISO_BOOST` 无收益(d2_shape 在 boost<0 时略好、在 boost>0 时略差,但组分被 occupancy 主导)。+## 查分结果(A 半,seed 0,共用 3/20 次) -## 提交+| 配置 | shape_scale | local_spatial | occupancy_dice raw | d2_shape raw | neighborhood raw | scale raw |+|---|---:|---:|---:|---:|---:|---:|+| η=0(锚点,=父节点) | 77.75 | 58.16 | 0.8066 | 0.0047 | 0.05506 | 0.0162 |+| η=0.3, clamp=0.3 | 77.70 | 57.58 | 0.8113 | 0.00542 | 0.05636 | 0.0162 |+| η=0.6 / 1.0 | 未查分(L1 与 self-dice 均劣于 η=0.3,位移已限幅饱和,判负后未消耗额度) | | | | | | -默认 η=0、boost=0,与父节点 17 逐位一致(预期榜分 62.52 不变)。代码、开关与诊断保留供后续节点复用。+按 PLAN 步骤 7:η=0.3 无净改善且 neighborhood raw 升幅 +0.0013 > 0.001 → 判负,提交 η=0(与父节点 21 逐位一致,B 半预期 62.52)。 -## 给后续节点的建议+## 未验证 -- 共变路线在「nnz-only 覆写」约束下走不通:输出的基因-基因相关主要由零模式决定,连续偏差的线性重着色改不动它(实测相关距离随 η 上升)。若要真改共变,必须允许改变零模式(新增/删除非零条目),而节点 5 的教训是密集化会崩 variogram/mmd_u;因此建议**放弃表达侧型内变换**(方差幅度 node17、共变结构 node21 两条都已证伪)。-- occupancy_dice(skill 0.42)是最大单项空间,但沿主轴展幅的一维整形(damp 与 boost 两个方向)已在局部最优。下一步值得试的是**改变占据的形状而非展幅**:例如按括号阶段的体素占据概率做坐标层面的重排/局部搬运(保表达-坐标配对:搬细胞不搬值),或用 z 离散切片结构(层间距/层内密度)向目标插值——两者都不改表达值,因而不受 neighborhood_mmd 的表达侧惩罚,只承担坐标抽样噪声。-- 任何表达侧改动先在 A 半用同日关闭态锚点对比(本节点锚点四组分 48.93/60.97/58.16/77.31 与节点 17 一致),把 neighborhood_mmd raw 列为一票否决。+- η=0.6/1.0 未查分(η=0.3 已触发否决线,PLAN 规定即停;且其占据 L1 更差)。+- clamp 放宽到 0.5 格未试:occupancy_dice 在 η=0.3 已有变化(非 PLAN 风险 1 的"无变化"分支),且收益量级(+0.08 points)已被证明远小于邻域损失量级,放宽只会加大搬运距离、进一步伤邻域。+- 更小的 clamp(如 0.15 格)未试:按比例外推 occupancy 收益 ~+0.04、邻域损失 ~−0.07,仍为净负方向,未消耗额度验证。diff --git a/solution/run.py b/solution/run.pyindex e886ed2..3c7e744 100644--- a/solution/run.py+++ b/solution/run.py@@ -202,6 +202,117 @@ ANISO_DAMP = float(os.environ.get("T2_ANISO_DAMP", "1.25")) ANISO_BOOST = float(os.environ.get("T2_ANISO_BOOST", "0.0")) ANISO_CLIP = (float(os.environ.get("T2_ANISO_CLIP_LO", "0.3")),               float(os.environ.get("T2_ANISO_CLIP_HI", "3.0")))+# Occupancy-guided coordinate redistribution (family T2EI-06, this node): the mix+# output is a superposition of the two bracketing clouds, so its voxel occupancy+# pattern is the UNION of both stages' shapes rather than an intermediate state —+# the structural reason occupancy_dice sits at 0.8086 (skill 0.424). After the+# full pipeline (aniso → jitter → RMS rescale) and before writing, re-normalise+# the output cloud exactly like the occupancy_dice metric (centroid, PCA with+# det=+1 and third-moment orientation, RMS → 1), build the scorer's ±3 RMS 16³+# grid, and compute voxel probability densities for the a-side, b-side and the+# output. Target occupancy P_tgt = (1−t)·P_a + t·P_b. Every output cell in an+# OVER-dense voxel (P_out > P_tgt) is displaced toward the centre of its nearest+# UNDER-dense voxel (P_out < P_tgt) by η·(P_out−P_tgt)/P_out (clamped to+# OCCUP_CLAMP grid steps), then the cloud is de-normalised and uniformly+# rescaled to the same target RMS (scale_log_ratio untouched). Cells carry their+# expression with them, so expression–position pairing is preserved and the+# expression matrix is bit-identical. η = 0 (default) skips the step entirely and+# reproduces the parent bit-for-bit.+OCCUP_ETA = float(os.environ.get("T2_OCCUP_ETA", "0.0"))+OCCUP_CLAMP = float(os.environ.get("T2_OCCUP_CLAMP", "0.3"))  # grid steps+OCCUP_GRID = int(os.environ.get("T2_OCCUP_GRID", "16"))+OCCUP_RANGE = float(os.environ.get("T2_OCCUP_RANGE", "3.0"))+++def _dice_normalize(c):+    """occupancy_dice-style normalisation: centroid, PCA (det=+1, third-moment+    orientation), divide by RMS radius. Returns (p_unit, mu, V, rms)."""+    c = np.asarray(c, dtype=np.float64)+    mu = c.mean(axis=0)+    p = c - mu+    cov = p.T @ p / max(len(p) - 1, 1)+    w, V = np.linalg.eigh(cov)+    V = V[:, np.argsort(w)[::-1]]+    p = p @ V+    for j in range(p.shape[1]):+        if (p[:, j] ** 3).mean() < 0.0:+            p[:, j] = -p[:, j]+            V[:, j] = -V[:, j]+    if np.linalg.det(V) < 0.0:+        p[:, -1] = -p[:, -1]+        V[:, -1] = -V[:, -1]+    rms = float(np.sqrt((p ** 2).sum(axis=1).mean()))+    return p / max(rms, 1e-12), mu, V, rms+++def _voxel_probs(p, G, R):+    """Voxel probability density on a G³ uniform grid over [−R, R]³, plus indices."""+    idx = np.floor((p + R) * (G / (2.0 * R))).astype(np.int64)+    np.clip(idx, 0, G - 1, out=idx)+    flat = (idx[:, 0] * G + idx[:, 1]) * G + idx[:, 2]+    counts = np.bincount(flat, minlength=G ** 3).astype(np.float64)+    return counts / max(counts.sum(), 1.0), idx, flat+++def occupancy_redistribute(coords, aligned_a, aligned_b, t: float, eta: float):+    """See OCCUP_ETA comment. Modifies coordinates only; no rng consumed."""+    G, R = OCCUP_GRID, OCCUP_RANGE+    step = 2.0 * R / G+    pn, mu, V, rms = _dice_normalize(coords)+    pa, _, _, _ = _dice_normalize(aligned_a)+    pb, _, _, _ = _dice_normalize(aligned_b)+    P_out, idx_out, flat_out = _voxel_probs(pn, G, R)+    P_a, _, _ = _voxel_probs(pa, G, R)+    P_b, _, _ = _voxel_probs(pb, G, R)+    P_tgt = (1.0 - float(t)) * P_a + float(t) * P_b+    excess = P_out - P_tgt+    info = {"occup_eta": eta, "occup_clamp": OCCUP_CLAMP, "occup_grid": G,+            "occup_l1_before": float(np.abs(excess).sum()),+            "occup_l1_after": None, "occup_moved": 0, "occup_n_cells": int(pn.shape[0]),+            "occup_disp_mean": None, "occup_disp_max": None,+            "occup_dice_self_before": None, "occup_dice_self_after": None,+            "occup_tgt_voxels": int((P_tgt > 0).sum()),+            "occup_out_voxels": int((P_out > 0).sum())}++    def _occ(p):+        pr, _, _ = _voxel_probs(p, G, R)+        return pr > 0.0++    occ_tgt = P_tgt > 0.0  # occupied set implied by the interpolated density+    occ_out_before = _occ(pn)+    info["occup_dice_self_before"] = float(+        2.0 * np.logical_and(occ_out_before, occ_tgt).sum()+        / max(occ_out_before.sum() + occ_tgt.sum(), 1))++    deficit = np.flatnonzero(P_out < P_tgt)+    sel = np.flatnonzero(excess[flat_out] > 0.0)+    if deficit.size == 0 or sel.size == 0:+        info["occup_l1_after"] = info["occup_l1_before"]+        info["occup_dice_self_after"] = info["occup_dice_self_before"]+        return coords, info+    gx = (np.arange(G) + 0.5) * step - R+    centers = np.stack(np.meshgrid(gx, gx, gx, indexing="ij"), axis=-1).reshape(-1, 3)+    dc = centers[deficit]+    pos = pn[sel]+    d2 = ((pos[:, None, :] - dc[None, :, :]) ** 2).sum(axis=-1)+    nearest = dc[np.argmin(d2, axis=1)]+    dirv = nearest - pos+    dirv /= np.maximum(np.linalg.norm(dirv, axis=1, keepdims=True), 1e-12)+    ratio = excess[flat_out[sel]] / np.maximum(P_out[flat_out[sel]], 1e-12)+    mag = np.minimum(eta * ratio, OCCUP_CLAMP * step)+    pn_new = pn.copy()+    pn_new[sel] = pos + dirv * mag[:, None]+    info.update({"occup_moved": int(sel.size),+                 "occup_disp_mean": float(mag.mean()),+                 "occup_disp_max": float(mag.max())})+    P_new, _, _ = _voxel_probs(pn_new, G, R)+    info["occup_l1_after"] = float(np.abs(P_new - P_tgt).sum())+    occ_new = P_new > 0.0+    info["occup_dice_self_after"] = float(+        2.0 * np.logical_and(occ_new, occ_tgt).sum()+        / max(occ_new.sum() + occ_tgt.sum(), 1))+    out = (pn_new * rms) @ V.T + mu+    return out, info   def aniso_reshape(coords, aligned_a, aligned_b, t: float, damp: float):@@ -795,7 +906,13 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float):         aniso_info.update(ai)     coords = _jitter(coords, rng)     coords = scale_to_rms(coords, target_rms)+    occup_info = {"occup_eta": OCCUP_ETA if OCCUP_ETA != 0.0 else 0.0}+    if OCCUP_ETA != 0.0 and coords.shape[0] >= 10:+        coords, oi = occupancy_redistribute(coords, aligned_a, aligned_b, t, OCCUP_ETA)+        coords = scale_to_rms(coords, target_rms)+        occup_info = oi     info.update(aniso_info)+    info.update(occup_info)     info.update(         t=t, n=int(expr.shape[0]), rms_a=rms_a, rms_b=rms_b, target_rms=target_rms,         out_rms=rms_radius(coords), n_from_a=int(ia.size), n_from_b=int(ib.size), **conv, **pair_info,@@ -846,7 +963,11 @@ def main() -> None:                                           "recolor_cells_total", "recolor_entries_changed",                                           "recolor_entries_frac", "recolor_rel_corr_dist",                                           "recolor_max_entry_change", "recolor_max_mean_drift",-                                          "recolor_zero_before", "recolor_zero_after")}+                                           "recolor_zero_before", "recolor_zero_after",+                                           "occup_eta", "occup_clamp", "occup_l1_before", "occup_l1_after",+                                           "occup_moved", "occup_n_cells", "occup_disp_mean", "occup_disp_max",+                                           "occup_dice_self_before", "occup_dice_self_after",+                                           "occup_tgt_voxels", "occup_out_voxels")}     print(json.dumps({"bracket": [a["stage"], b["stage"]], **keep}, 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
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:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。

改了什么实现了体素占据插值引导的坐标再分布(T2_OCCUP_ETA:评分器同款归一化 + 16³/±3RMS 网格 + P_tgt=(1−t)P_a+tP_b + 过密细胞朝最近欠密体素的限幅位移),但 A 半查分判负后提交默认 η=0,输出与父节点 21 逐位相同(array_equal 验证)。
各组分数的变化cell_state:不变(+0.00,提交与父节点逐位相同)
expression_change:不变(+0.00,提交与父节点逐位相同;表达矩阵在任何 η 下都不动)
local_spatial:不变(+0.00)。机制开启时(A 半 η=0.3,未提交):neighborhood_mmd raw 0.05506→0.05636(+0.0013,破 PLAN 0.001 否决线,−0.145 pts),组分 58.16→57.58
shape_scale:不变(+0.00)。机制开启时(A 半 η=0.3,未提交):occupancy_dice raw 0.8066→0.8113(+0.08 pts),但 d2_shape 0.0047→0.00542(−0.09 pts),组分 77.75→77.70 净微负
family_idT2EI-06
假设是否成立否
经验
  1. 在 T2 embryo 插值上,即使细胞携带自己的表达一起移动(配对不变),坐标搬运仍会打乱 15-NN 邻域组成:η=0.3 移动 3242/5000 细胞,neighborhood_mmd raw +0.0013,损失 −0.145 pts,超过 occupancy_dice 的 +0.08 pts 收益。
  2. 直接按 occupancy_dice 的归一化与网格优化占据(占据 L1 0.680→0.472、self-dice 0.781→0.826),occupancy_dice raw 也只升 +0.0047(+0.08 pts)——该指标的可得收益上限远小于任何坐标重排对邻域项的损伤,坐标再分布提升形状组的路线可判死(节点 13/21/22/24 四次独立证伪展幅整形与占据重排)。
  3. 机制按设计目标生效(占据 L1 下降、dice 微升)不等于净收益为正:25 分权重且门住形状组的 neighborhood_mmd 对坐标扰动极度敏感,任何坐标侧改动必须先过'邻域 raw 升幅 ≤0.001'的否决线。
  4. 关闭态对照(η=0 与父节点逐位 array_equal)+ 判负即停(3/20 次查分)的流程有效:失败尝试零成本回退,不消耗榜分。
mechanism_active否
下一步建议
  1. 放弃坐标侧改动(occupancy_dice skill 0.424 的收益上限已实测 ~+0.1 pts),不要再尝试任何搬动细胞坐标的方案(针对 shape_scale / local_spatial)。
  2. 剩余最大空间在 variogram(skill 0.389):表达侧型内数值变换已三连败(节点 17/19/21),改在'选哪些真实细胞'层面动手——保持父节点坐标抽样流不变,只调整进入输出的真实细胞子集(如按基因共变结构分层选细胞),并仍以 neighborhood_mmd raw 升幅 ≤0.001 为一票否决(针对 cell_state)。
  3. 若细胞选择路线也无收益,接受本榜 62.52 平台,把改进火力转到 T2 heart 外推榜(注意其本地尺子高估,需用同日锚点对比而非绝对分判断收益)。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数23
工具调用共 26 次:bash 18、edit 6、read 1、write 1
用时11 分
token 数输入 66,970 · 输出 8,966 · 思考 10,273
任务(第一行)按计划修改程序:体素占据插值引导的坐标再分布(occupancy-guided coordinate redistribution)
最后的回答(摘录)
完成。总结:

**做了什么**:按 PLAN(T2EI-06)在父节点 21 管线的 RMS 回缩后新增体素占据插值引导的坐标再分布(`T2_OCCUP_ETA`,评分器同款归一化 + 16³/±3 网格 + P_tgt=(1−t)P_a+tP_b + 过密细胞朝最近欠密体素的限幅位移 + RMS 回缩),表达逐位不动。

**查分结果**(A 半,用 2/20 次):η=0 锚点组分 60.97/48.93/77.75/58.16;η=0.3 移动 3242/5000 细胞、占据 L1 0.680→0.472、occupancy_dice 0.8066→0.8113(+0.08 pts),但 neighborhood_mmd 0.05506→0.05636(+0.0013,破 PLAN 0.001 否决线,−0.145 pts)且 d2_shape 劣化(−0.09 pts),净 ≈ −0.16。按 PLAN 判负,**提交默认 η=0**,与父节点 21 逐位一致(array_equal 验证),vec-check ok,seed 0 双跑确定,B 半预期 62.52。

**下一步最值得试**:occupancy_dice 的收益上限(~+0.1 pts)已被证明远小于任何坐标搬运对 neighborhood_mmd 的损伤——形状组的坐标再分布方向可判死。剩余最大空间在 variogram(skill 0.389),但型内数值变换三连败(节点 17/19/21);建议转向"选哪些真实细胞"层面且不触发坐标重抽样噪声的方案(如保持父节点坐标抽样流、只换表达配对的细胞选择),或接受 62.52 平台、把改进火力转到心脏外推榜(本地尺子高估已知,前 10 在 55–62)。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/24/engineer.jsonl 207 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/24/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时1 分
token 数输入 18,418 · 输出 1,479 · 思考 2,756
任务(第一行)为节点 n24(改进,父节点 n21)写改进计划 PLAN.json
最后的回答(摘录)
 相同的归一化——去质心、PCA 对齐(强制 det=+1,第三矩定向)、除以 RMS 半径,得到单位球内坐标。同时对括号两侧原始细胞(对齐后)做相同归一化。\n2. **体素占据计算**:在 ±3 范围内建 16³ 均匀网格(与评分器一致),分别统计 a 侧、b 侧、输出侧每体素的占据计数,归一化为概率密度(计数/总细胞数)。\n3. **目标占据插值**:P_target(v) = (1−t)·P_a(v) + t·P_b(v),t 为插值分数(与 mix 一致)。\n4. **位移场计算**:对每个输出细胞,找其所在体素 v;若 P_out(v) > P_target(v)(过密),计算该细胞到最近欠密体素(P_out < P_target)的方向向量,乘以强度 η·(P_out(v)−P_target(v))/P_out(v)。位移限幅:单细胞位移 ≤ 0.3 个网格步长(≈0.19 RMS 单位),避免大距离搬运破坏邻域。若 P_out(v) ≤ P_target(v),不移动。\n5. **应用与回缩**:将位移加到归一化坐标上,逆归一化回原尺度,再均匀缩放到原目标 RMS(保 scale_log_ratio)。表达矩阵逐位不动。\n6. **单输入阶段退路**:无括号时 main() 提前 return,机制不执行(与父节点一致)。\n7. **vec-score 筛选**:先跑 η=0(锚点,应与父节点逐位一致)确认基线;再跑 η=0.3, 0.6, 1.0 三档,同时报 occupancy_dice、d2_shape、scale_log_ratio、neighborhood_mmd 四项 raw。neighborhood_mmd raw 升幅 >0.001 即停。若 η=0.3 已有改善,细分 0.1–0.5 区间;否则判负、提交 η=0。\n8. **关键参数初值与范围**:η ∈ {0, 0.3, 0.6, 1.0}(位移缩放因子);位移限幅 0.3 格(固定);网格 16³(与评分器一致)。预计查分 ≤6 次。",
  "expected_groups": ["shape_scale"],
  "risks": "1. 小位移可能不足以改变 16³ 网格上的占据模式(体素边长约 0.375 RMS,位移限幅 0.19 RMS 可能不够跨体素)——若 η=1.0 时 occupancy_dice 无变化,可放宽限幅到 0.5 格再试一次,若仍无变化则判负。2. 坐标搬动改变邻域组成,可能伤 neighborhood_mmd——用限幅和仅移动过密区细胞来控制;neighborhood_mmd raw 升幅 >0.001 即停。3. 两侧阶段的占据差异可能主要在 PCA 对齐后已消除的方向上(即 aniso 已捕获),剩余差异太小——这会导致机制无效但无害(η=0 提交)。4. 30 分钟内实现风险低:核心是网格统计 + 最近欠密体素搜索,无迭代优化。",
  "family_id": "T2EI-06",
  "mechanism": "在评分器同款归一化(质心+PCA+RMS)下,把括号两侧体素占据概率按 t 线性插值得到目标占据,对过密体素中的细胞施加朝最近欠密体素的限幅位移,使输出云的占据形状从两阶段叠加态向插值中间态靠拢。表达随细胞移动,配对不变。",
  "vs_constant_shift": "常数位移对每个型的所有细胞施加相同向量,不改变占据形状;本机制的位移是逐细胞、位置依赖的(取决于所在体素的过密程度和最近欠密体素的方向),目的是重排占据模式而非平移整体。全局组成重加权改变型比例但不改坐标;本机制不改型比例、不改表达,只改坐标分布。",
  "mechanism_evidence": "Engineer 应报告:(1) 被移动的细胞数和平均/最大位移;(2) 移动前后各体素占据计数与目标占据的 L1 距离(应下降);(3) occupancy_dice raw 变化(应从 0.8086 上升);(4) neighborhood_mmd raw 变化(应 < +0.001);(5) d2_shape、scale_log_ratio raw(应基本不变);(6) 四组分变化。若被移动细胞数为 0 或占据 L1 距离不变,说明机制未生效。",
  "mechanism_off_control": "T2_OCCUP_ETA=0 时,位移步骤整体跳过(不计算网格、不修改坐标),输出与父节点 21(η=0, boost=0,即节点 13 管线)在相同 seed 下逐位相同(array_equal 验证)。开启后(η>0),坐标改变但表达矩阵不变,细胞数不变。",
  "sources": []
}
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/24/researcher.jsonl 6 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/24/researcher.stderr