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

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

节点 n31

按 PLAN T2EI-05 实现逐细胞型 z σ 匹配(TYPE_Z_MATCH,λ∈{1,0.85}):诊断 r_c 跨型差 0.434(机制非惰性)但代理查分证伪——local_spatial 仅回收 +0.16/+0.18(门槛 ≥+0.3),λ=0.85 另失 shape;提交态 = 父节点 25(TYPE_Z_MATCH=0,逐位一致)。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-043412-search-t2-embryo-interp-g24-D-s1
父节点n25
子节点—
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 62.26(+0.0) · proxy 62.26(+0.0) · 3 次复测均分 62.20
审查通过 检查1(越界读取):未发现问题——run.py 仅通过 --data 参数经 src.task2_spatial.view_io 读取视图数据(run.py:418-430),无绝对路径/..//mnt//home/打分器路径,无联网下载。; 检查2(硬编码目标统计量):未发现问题——代码中只有方法超参数(KAPPA=0.65、scale_damp=0.5、SPREAD_CAP=1.15、TYPE_Z_MIN=5 等,run.py:101-136),所有 σ、质心、配额均从输入现场计算(run.py:442, 566-592);METHOD.md/PLAN.json 中的 r_c 数值仅是诊…
用时?从运行开始到结束(或到现在)的挂钟时间。14 分
程序版本47330099882cc1c13d70dd1617f5dba078b6eddd (programs.git)

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

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

按 PLAN T2EI-05 实现逐细胞型 z σ 匹配(TYPE_Z_MATCH,λ∈{1,0.85}):诊断 r_c 跨型差 0.434(机制非惰性)但代理查分证伪——local_spatial 仅回收 +0.16/+0.18(门槛 ≥+0.3),λ=0.85 另失 shape;提交态 = 父节点 25(TYPE_Z_MATCH=0,逐位一致)。

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

父流程完整保留:interp_bracket → procrustes3d 对齐 → scale_damp=0.5 目标 RMS → κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_SIDE=b)→ jitter → 整云 z 轴 σ 匹配(fac≈0.918)→ scale_to_rms。

本节点新增(run.py 环境变量开关,默认关):

  1. PLAN 机制(逐型 z σ 匹配,TYPE_Z_MATCH=1):jitter 后对输出云中每个细胞型 c, 参考 σ_ref_z(c)=(1−t)·σ_a_z(c)+t·σ_b_z(c)(σ 取自对齐且 RMS 缩放后的完整括号云 ca/cb 中该型细胞的 z 标准差), 输出云内该型 z 展宽 σ_out_z(c),因子 f_c=1+λ(r_c−1)、r_c=σ_ref_z(c)/σ_out_z(c),绕该型在输出云中的 z 质心做仿射缩放; 输出细胞 <5 个、或在任一括号中缺失(无法两括号插值)的型回退到父节点的全局因子 fac_glob(绕全局 μ_z)。随后 scale_to_rms 恢复全局 RMS。 无 RNG,全部 σ 现场从 view 数据计算,无硬编码统计量、无绝对时间/视图判断。
  2. 诊断(TYPE_Z_DIAG=1):打印逐型 r_c、匹配前后 z-std、σ_ref_z(c)。

单输入退路不变(无括号 → 分层抽最后阶段 early return,不触及任何新代码)。

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

  • 逐型 r_c 跨型差 0.434 ≫ 0.05:机制非惰性(PLAN 预注册的惰性判据未触发)。r_c:EXE-Endoderm 0.954、 ExEM-2 0.870、Unknown 0.826、Allantois 0.822、ExEM-1 0.807、HEM-Endoth 0.795、SOM 0.755、 Primitive Streak 0.722、Caudal Epiblast 0.711、LPM 0.682、pSE 1.116。
  • 关键发现:逐型内 r_c(0.68–0.95)系统性低于全局比值 0.918 的含义完全不同——全局 σ 含型间质心分离, 逐型匹配的是型内 z 展宽,压缩远强于全局因子(大细胞型 fac_c≈0.7–0.95)。匹配后逐型 z-std 精确落到 σ_ref_z(c) (如 Caudal Epiblast 79.2→56.3),1679/5000 细胞回退全局因子。
  • 四组分变化(λ=1 vs 父 A 半 seed 0):cell_state 52.84→52.84、expression_change 60.50→60.50(坐标未动表达,符合预期)、 shape_scale 74.20→74.13(d2_shape 0.00945→0.00865 改善,occupancy_dice 0.7862→0.7780 变差,互相抵消)、 local_spatial 58.47→58.63(neighborhood_mmd 0.05436→0.05402 改善,回收 0.16/0.56 的损失)。

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

off 对照 = TYPE_Z_MATCH=0(默认),输出与父节点 25 提交态(本 work 目录 preds/parent_s0.h5ad)h5py 逐数组比对 True(seed 0)。 A 半查分(3 次,余 17):

配置(seed 0)榜分shapelocalcell_stateexprocc_diced2_shapenbhd_mmd
off 对照(=父 25)61.5074.2058.4752.8460.500.78620.009450.05436
逐型 z 匹配 λ=161.5374.1358.6352.8460.500.77800.008650.05402
逐型 z 匹配 λ=0.8561.4273.6658.6552.8460.500.77800.009670.05396

PLAN 预注册门槛判定(FAIL):要求 shape_scale 不丢全局增益 >0.5(≈A 半 ≥73.7)且 local_spatial 回收 ≥0.3 (父 58.47 → 需 ≥58.77)。λ=1:shape 74.13 ✓,local 58.63 只回收 +0.16 ✗;λ=0.85:shape 73.66 ✗(且榜分净负 −0.09)。 λ=1 榜分 +0.02,远小于 T2 噪声(~1),按 PLAN Step 4 判据(2 种子均值 > 父才提交)不再消耗种子确认,提交父配置。

结论与已验证/未验证

  • 逐型 z σ 匹配机制确实运行、确实改变了坐标(逐型 z-std 精确匹配到参考),但在代理上被证伪: local_spatial 的 −0.56 损失主要来自整云 z 收缩本身(邻域在 z 方向被压扁),换成"型内压得更狠、型间质心不动"的 逐型版本只把 neighborhood_mmd 换回一点点,却把 occupancy_dice 打下去(型内强压缩把细胞挤进更少的 z 层),净效应为零。
  • 证伪并记录:λ=0.85 阻尼同时失 shape(逐型压缩本已强于全局,阻尼只削弱 d2_shape 增益、不增 occupancy_dice); λ>1 未试(λ=1 已精确匹配参考,过冲无参考意义);逐型质心的 z 位移(把型间布局也插值)超出本 PLAN 机制范围,未实现。
  • 未验证:真实括号(E7.25→E8.0)上的逐型 r_c 分布与收益方向(代理上 r_c<1 为压缩,真实快增长段方向未知);B 半迁移。
  • 生物学知识来源:无新增外部知识;全部为数据驱动的坐标几何操作。

提交态运行

python run.py --data <view> --out <pred> --seed <s>   # 默认 TYPE_Z_MATCH=0 = 父节点 25 配置,逐位一致

调研员的计划

名称Per-type z sigma matching for local_spatial recovery
动机Node 25's global z sigma-matching (fac~0.92) lifted shape_scale 72.48->73.51 (+1.03) but cost local_spatial -0.59 (60.69->60.10; neighborhood_mmd 0.0531->0.0544). The single global factor compresses every cell type's z-spread identically, but the z over-extension is early-stage-dominated (sigma_a_z=123 vs sigma_ref_z=102): types with different z-distributions are squashed by the same factor, disrupting within-type z-neighborhoods. cell_state (54.35) is the weakest group but every expression modification attempted (nodes 12,13,17,21,23) was falsified; the actionable, documented loss is local_spatial. ANALYSIS next_suggestion #3 explicitly proposes per-type z matching as untested.
做法Step 0 (diagnostic, 0 queries): for each cell type c in the output cloud, compute sigma_out_z(c)=std(z_c) and sigma_ref_z(c)=(1-t)sigma_a_z(c)+tsigma_b_z(c) from the aligned bracket clouds. Print ratio r_c=sigma_ref_z(c)/sigma_out_z(c) per type plus the global ratio (~0.918). Pre-registered abort: if max(r_c)-min(r_c)<0.05, per-type factors are effectively identical to global; submit parent unchanged. Step 1 (implement, env TYPE_Z_MATCH=1): after jitter, for each type c with >=5 cells, z_i <- mu_z(c)+(z_i-mu_z(c))[1+lambda(r_c-1)] where mu_z(c) is the type's z-centroid in the output. Types with <5 cells get the global factor. Then scale_to_rms restores global RMS. lambda=1 initially. Step 2 (vec-score, 1-2 queries): seed 0, compare to parent A-half 61.50. Gate: shape_scale>=73.0 (must not lose >0.5 of the global gain) AND local_spatial>=60.4 (recover >=0.3 of the 0.59 loss). If either fails, abort, submit parent. Step 3 (if gate passes, 1-2 queries): try lambda=0.85 as damping; run seed 1 to confirm direction (T2 noise ~1). Step 4: submit best config if 2-seed mean > parent; else submit parent. Budget: ~5 of 20 queries. Single-input fallback: no bracket -> no matching, parent'…
风险1) Per-type z-spreads may be near-uniform (ratio spread <5%), making the mechanism inert like node 25's xy finding; diagnostic catches this pre-query. 2) Per-type matching could lose global shape gain if d2_shape depends on the overall z-envelope rather than per-type spread; caught by the shape>=73.0 gate on first query. 3) Small types (<5 cells) get the global factor, limiting per-type coverage; the guard prevents noisy estimates. 4) T2 noise ~1 means a +0.5 local recovery may not register as significant; 2-seed confirmation required before submitting. 5) Engineer should abort immediately if diagnostic shows uniform ratios rather than spending queries on a dead mechanism.

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

对比:父节点版本 57e3463ae3。改动的文件:solution/METHOD.md +45 −28、solution/run.py +50 −0

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 32762f8..2ef7cea 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,43 +1,60 @@-b 侧 xy 各向异性膨胀证伪(两轴比值差仅 2%);改为整云逐轴 σ 匹配:把输出云 z 轴匹配到括号插值 σ_ref_z(fac≈0.92)再恢复 RMS,膨胀关闭。3 种子 A 半 61.38→61.77,shape +1.6~2.7。+按 PLAN T2EI-05 实现逐细胞型 z σ 匹配(TYPE_Z_MATCH,λ∈{1,0.85}):诊断 r_c 跨型差 0.434(机制非惰性)但代理查分证伪——local_spatial 仅回收 +0.16/+0.18(门槛 ≥+0.3),λ=0.85 另失 shape;提交态 = 父节点 25(TYPE_Z_MATCH=0,逐位一致)。 -## 方法(family T2EI-05,improve over node 23;提交态 = ANISO_FULL=1, ANISO_AXES=z, ANISO_LAMBDA=1, SPREAD_ALPHA=0)+## 方法(family T2EI-05,improve over node 25;提交态 = 父配置 ANISO_FULL=1, ANISO_AXES=z, ANISO_LAMBDA=1, SPREAD_ALPHA=0, TYPE_Z_MATCH=0) -父流程完整保留:interp_bracket → procrustes3d 对齐 → scale_damp=0.5 目标 RMS →-κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_SIDE=b)→ jitter。-本节点改动(run.py 环境变量开关):+父流程完整保留:interp_bracket → procrustes3d 对齐 → scale_damp=0.5 目标 RMS → κ=0.65 组成阻尼 →+b 侧型内中间态偏好选胞(SEL_SIDE=b)→ jitter → 整云 z 轴 σ 匹配(fac≈0.918)→ scale_to_rms。 -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 增益变小。+本节点新增(run.py 环境变量开关,默认关): -单输入退路不变(无括号 → 分层抽最后阶段,early return,不触及任何新代码)。-无 RNG 参与新机制,对 seed 确定;σ_ref/σ_out 全部现场从 view 数据计算,无硬编码统计量,无绝对时间/视图判断(只用 t 与坐标)。+1. **PLAN 机制(逐型 z σ 匹配,TYPE_Z_MATCH=1)**:jitter 后对输出云中每个细胞型 c,+   参考 σ_ref_z(c)=(1−t)·σ_a_z(c)+t·σ_b_z(c)(σ 取自对齐且 RMS 缩放后的**完整**括号云 ca/cb 中该型细胞的 z 标准差),+   输出云内该型 z 展宽 σ_out_z(c),因子 f_c=1+λ(r_c−1)、r_c=σ_ref_z(c)/σ_out_z(c),绕该型在输出云中的 z 质心做仿射缩放;+   输出细胞 <5 个、或在任一括号中缺失(无法两括号插值)的型回退到父节点的全局因子 fac_glob(绕全局 μ_z)。随后 scale_to_rms 恢复全局 RMS。+   无 RNG,全部 σ 现场从 view 数据计算,无硬编码统计量、无绝对时间/视图判断。+2. **诊断(TYPE_Z_DIAG=1)**:打印逐型 r_c、匹配前后 z-std、σ_ref_z(c)。++单输入退路不变(无括号 → 分层抽最后阶段 early return,不触及任何新代码)。  ## 机制证据(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 两组不变(表达未动)。+- **逐型 r_c 跨型差 0.434 ≫ 0.05**:机制非惰性(PLAN 预注册的惰性判据未触发)。r_c:EXE-Endoderm 0.954、+  ExEM-2 0.870、Unknown 0.826、Allantois 0.822、ExEM-1 0.807、HEM-Endoth 0.795、SOM 0.755、+  Primitive Streak 0.722、Caudal Epiblast 0.711、LPM 0.682、pSE 1.116。+- **关键发现**:逐型内 r_c(0.68–0.95)系统性低于全局比值 0.918 的含义完全不同——全局 σ 含型间质心分离,+  逐型匹配的是**型内** z 展宽,压缩远强于全局因子(大细胞型 fac_c≈0.7–0.95)。匹配后逐型 z-std 精确落到 σ_ref_z(c)+  (如 Caudal Epiblast 79.2→56.3),1679/5000 细胞回退全局因子。+- 四组分变化(λ=1 vs 父 A 半 seed 0):cell_state 52.84→52.84、expression_change 60.50→60.50(坐标未动表达,符合预期)、+  shape_scale 74.20→74.13(d2_shape 0.00945→0.00865 改善,occupancy_dice 0.7862→0.7780 变差,互相抵消)、+  local_spatial 58.47→58.63(neighborhood_mmd 0.05436→0.05402 改善,回收 0.16/0.56 的损失)。  ## 机制对照(mechanism_off_control)与查分全表 -off 对照 = `ANISO_FULL=0 SPREAD_ALPHA=0.3`(父配置),输出与父节点 h5py 逐数组比对 **True**(seed 0)。全部 A 半查分(10 次,余 6):+off 对照 = `TYPE_Z_MATCH=0`(默认),输出与父节点 25 提交态(本 work 目录 `preds/parent_s0.h5ad`)h5py 逐数组比对 **True**(seed 0)。+A 半查分(3 次,余 17): -| 配置(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 |+| 配置(seed 0) | 榜分 | shape | local | cell_state | expr | occ_dice | d2_shape | nbhd_mmd |+|---|---:|---:|---:|---:|---:|---:|---:|---:|+| off 对照(=父 25) | 61.50 | 74.20 | 58.47 | 52.84 | 60.50 | 0.7862 | 0.00945 | 0.05436 |+| 逐型 z 匹配 λ=1 | 61.53 | 74.13 | 58.63 | 52.84 | 60.50 | 0.7780 | 0.00865 | 0.05402 |+| 逐型 z 匹配 λ=0.85 | 61.42 | 73.66 | 58.65 | 52.84 | 60.50 | 0.7780 | 0.00967 | 0.05396 | -多种子(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 预注册门槛判定(FAIL)**:要求 shape_scale 不丢全局增益 >0.5(≈A 半 ≥73.7)且 local_spatial 回收 ≥0.3+(父 58.47 → 需 ≥58.77)。λ=1:shape 74.13 ✓,local 58.63 只回收 +0.16 ✗;λ=0.85:shape 73.66 ✗(且榜分净负 −0.09)。+λ=1 榜分 +0.02,远小于 T2 噪声(~1),按 PLAN Step 4 判据(2 种子均值 > 父才提交)不再消耗种子确认,**提交父配置**。  ## 结论与已验证/未验证 -- 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 为离散切片轴的注意事项来自方法卡,σ 匹配纯数据驱动。+- 逐型 z σ 匹配机制确实运行、确实改变了坐标(逐型 z-std 精确匹配到参考),但在代理上被证伪:+  local_spatial 的 −0.56 损失主要来自整云 z 收缩本身(邻域在 z 方向被压扁),换成"型内压得更狠、型间质心不动"的+  逐型版本只把 neighborhood_mmd 换回一点点,却把 occupancy_dice 打下去(型内强压缩把细胞挤进更少的 z 层),净效应为零。+- 证伪并记录:λ=0.85 阻尼同时失 shape(逐型压缩本已强于全局,阻尼只削弱 d2_shape 增益、不增 occupancy_dice);+  λ>1 未试(λ=1 已精确匹配参考,过冲无参考意义);逐型质心的 z 位移(把型间布局也插值)超出本 PLAN 机制范围,未实现。+- 未验证:真实括号(E7.25→E8.0)上的逐型 r_c 分布与收益方向(代理上 r_c<1 为压缩,真实快增长段方向未知);B 半迁移。+- 生物学知识来源:无新增外部知识;全部为数据驱动的坐标几何操作。++## 提交态运行++```bash+python run.py --data <view> --out <pred> --seed <s>   # 默认 TYPE_Z_MATCH=0 = 父节点 25 配置,逐位一致+```diff --git a/solution/run.py b/solution/run.pyindex 593b46e..5f31997 100644--- a/solution/run.py+++ b/solution/run.py@@ -126,6 +126,14 @@ SPREAD_ZPRES = int(os.environ.get("SPREAD_ZPRES", "0"))   # 1 = keep b-cell z in 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)+# PLAN T2EI-05 (node 31): per-cell-type z sigma matching. Each type's z-spread+# is independently affine-matched to its bracket-interpolated reference spread+# around the type's own output z-centroid; types with < TYPE_Z_MIN cells or+# without a two-bracket reference get the global factor around the global mean.+TYPE_Z_MATCH = int(os.environ.get("TYPE_Z_MATCH", "0"))+TYPE_Z_LAMBDA = float(os.environ.get("TYPE_Z_LAMBDA", "1.0"))+TYPE_Z_MIN = int(os.environ.get("TYPE_Z_MIN", "5"))+TYPE_Z_DIAG = int(os.environ.get("TYPE_Z_DIAG", "0"))   def _spread_apply(X: np.ndarray, rows: np.ndarray, mu: np.ndarray, f: float) -> None:@@ -548,6 +556,48 @@ 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 TYPE_Z_MATCH:+        # Per-cell-type z sigma matching (PLAN T2EI-05, node 31): each type's+        # z-spread is affinely matched to its own bracket-interpolated+        # reference spread (1-t)*sigma_a_z(c) + t*sigma_b_z(c) around the+        # type's z-centroid in the output cloud; the global RMS is restored+        # afterwards. Types with < TYPE_Z_MIN output cells or missing from one+        # bracket fall back to the global factor (parent node-25 behaviour).+        mu0 = coords.mean(axis=0)+        s_out_z = float(coords[:, 2].std())+        fac_glob = 1.0 + TYPE_Z_LAMBDA * (float(s_ref_axes[2]) / max(s_out_z, 1e-9) - 1.0)+        lab_out = np.concatenate([p.astype(str) for p in+                                  ([la[ia]] if ia.size else []) + ([lb[ib]] if ib.size else [])])+        per_type = []+        touched = np.zeros(coords.shape[0], dtype=bool)+        for tname in sorted(set(lab_out.tolist())):+            rows = np.flatnonzero(lab_out == tname)+            ra = np.flatnonzero(la == tname) if ia.size else np.array([], dtype=int)+            rb = np.flatnonzero(lb == tname) if ib.size else np.array([], dtype=int)+            if rows.size >= TYPE_Z_MIN and ra.size >= 2 and rb.size >= 2:+                s_ref_c = (1.0 - t) * float(ca[ra, 2].std()) + t * float(cb[rb, 2].std())+                r_c = s_ref_c / max(float(coords[rows, 2].std()), 1e-9)+                f_c = 1.0 + TYPE_Z_LAMBDA * (r_c - 1.0)+                mu_zc = float(coords[rows, 2].mean())+                z_before = float(coords[rows, 2].std())+                coords[rows, 2] = mu_zc + (coords[rows, 2] - mu_zc) * f_c+                per_type.append({"type": tname, "n_out": int(rows.size), "r_c": r_c,+                                 "f_c": f_c, "zstd_before": z_before,+                                 "zstd_after": float(coords[rows, 2].std()),+                                 "s_ref_c": s_ref_c})+                touched[rows] = True+        rows_rest = np.flatnonzero(~touched)+        if rows_rest.size:+            coords[rows_rest, 2] = mu0[2] + (coords[rows_rest, 2] - mu0[2]) * fac_glob+        coords = scale_to_rms(coords, target_rms)+        aniso_diag = {"type_z_match": 1, "type_z_lambda": TYPE_Z_LAMBDA,+                      "type_z_min": TYPE_Z_MIN, "fac_glob_z": fac_glob,+                      "n_types_matched": len(per_type),+                      "n_cells_rest": int(rows_rest.size),+                      "r_c_spread": (max((d["r_c"] for d in per_type), default=float("nan"))+                                     - min((d["r_c"] for d in per_type), default=float("nan")))}+        if TYPE_Z_DIAG:+            aniso_diag["per_type"] = per_type     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

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

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k027Joint expression-geometry generation with relative geometrynotes/competition/03_solution_landscape.md
k026Canonicalise predicted 3D coordinates before submissionnotes/pitfalls/04_scorer_invariance.md

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

改了什么实现了逐细胞型 z σ 匹配(TYPE_Z_MATCH 开关 + 逐型诊断),A 半代理查分 λ=1/λ=0.85 后触发 PLAN 预注册门槛 FAIL(local 仅回收 +0.16 < +0.3),最终提交父节点 25 配置(TYPE_Z_MATCH=0,输出与父逐位一致),故榜分与四组分完全不变。
各组分数的变化cell_state:噪声内(+0.00,54.35,提交态=父)
expression_change:噪声内(+0.00,61.08,提交态=父,逐位一致)
local_spatial:噪声内(+0.00,60.10,提交态=父)
shape_scale:噪声内(+0.00,73.51,提交态=父)
family_idT2EI-05
假设是否成立否
经验
  1. 代理查分显示逐型 r_c(0.68–0.95)系统性低于全局比值 0.918,因为全局 σ 含型间质心分离而逐型匹配的是型内展宽——逐型仿射匹配的实际压缩远强于全局因子,1679/5000 细胞只能回退全局因子。
  2. node 25 全局 z 收缩造成的 local_spatial −0.56 损失主要来自整云 z 压扁邻域本身,换成型内更强的逐型压缩只把 neighborhood_mmd 换回一点(0.05436→0.05402),却把 occupancy_dice 打下去(0.7862→0.7780),净效应为零:局部几何损失不能靠改变压缩的'归属层级'(全局→逐型)回收。
  3. λ 阻尼对已精确匹配参考的逐型因子无效:λ=0.85 只削弱 d2_shape 增益(0.00865→0.00967)、不恢复 occupancy_dice,shape 掉到 73.66 且榜分净负。
  4. 预注册门槛(shape 不丢 >0.5 且 local 回收 ≥0.3)+ 0 查分诊断的流程有效:3 次查分即证伪并回退父配置,未浪费预算,Engineer 报告与变化量表一致(提交态=父,故 +0.00)。
mechanism_active否
下一步建议
  1. 针对 local_spatial:放弃重组压缩归属,改试'z 收缩 + occupancy 补偿'——在全局 z 匹配后对 xy 做小幅(1–3%)占据扩张以恢复 occupancy_dice,用 A 半单次查分验证 occ_dice 能否回到 ≥0.786 且 d2_shape 不劣化超 10%。
  2. 针对 shape_scale/local_spatial:z 匹配的收益依赖括号方向,先在真实括号(E7.25→E8.0 快增长段)跑 0 查分诊断 σ_ref_z/σ_out_z 的方向和幅度,若 fac_z≥1(需扩张)再决定是否保留/调整该机制。
  3. cell_state(54.35)仍是最弱组但表达修改已五次证伪(nodes 12,13,17,21,23);若再攻此组应换机制族(如选胞策略 SEL_SIDE/κ 组成的重新扫描),而非继续表达插值改造。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数14
工具调用共 17 次:bash 12、read 2、edit 2、write 1
用时7 分
token 数输入 52,122 · 输出 7,127 · 思考 6,628
任务(第一行)按计划修改程序:Per-type z sigma matching for local_spatial recovery
最后的回答(摘录)
Done. Submission is final and verified.

**做了什么**:按 PLAN T2EI-05 实现逐细胞型 z σ 匹配(TYPE_Z_MATCH 开关 + 逐型诊断),先跑 0 查分诊断:r_c 跨型差 0.434(机制非惰性,逐型 r_c 0.68–0.95,型内压缩远强于全局 0.918)。实现后 A 半查分 λ=1 / λ=0.85(共 3 次查分,余 17)。

**查分结果**:λ=1 榜分 61.53 vs 父 61.50(+0.02,噪声内):local 只回收 +0.16(门槛 ≥+0.3,FAIL),nbhd_mmd 改善但 occupancy_dice 变差互相抵消;λ=0.85 净负 61.42 且 shape 73.66 失增益。触发 PLAN 预注册门槛 → 提交父配置。off 对照(默认 TYPE_Z_MATCH=0)与父节点输出 h5py 逐数组比对 True,vec-check ok。

**下一步最值得试**:逐型匹配证明 local_spatial 损失来自整云 z 收缩本身而非型间布局;建议改试"z 匹配 + occupancy 补偿"(收缩后对 xy 做小幅占据扩张以恢复 occupancy_dice),或按父节点 next_suggestion 在真实括号上先诊断 σ_ref_z/σ_out_z 方向再决定是否保留 z 匹配。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/31/engineer.jsonl 138 KB
/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/31/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时6 分
token 数输入 14,904 · 输出 9,218 · 思考 8,192
任务(第一行)为节点 n31(改进,父节点 n25)写改进计划 PLAN.json
最后的回答(摘录)
) Engineer should abort immediately if diagnostic shows uniform ratios rather than spending queries on a dead mechanism.",
 "family_id": "T2EI-05",
 "mechanism": "Replace the single global z-axis compression factor with per-cell-type factors: each type's z-spread is independently affine-matched to its bracket-interpolated reference spread around the type's own z-centroid, then global RMS is restored. Types already correctly spread get factor ~1; only over-extended types are compressed, preserving within-type z-neighborhood structure that global matching disrupts.",
 "vs_constant_shift": "A constant z-shift or single global scale factor compresses all cells identically regardless of type identity. Per-type matching computes a separate compression factor for each type from its own z-variance vs its own bracket-interpolated reference, so the transform is type-conditional: a correctly-spread type is untouched while an over-extended type is compressed. The result cannot be reproduced by any single global affine transform of z.",
 "mechanism_evidence": "Engineer should log: (1) per-type r_c values showing cross-type variance (if uniform, mechanism is inert by the pre-registered <0.05 spread criterion); (2) per-type z-std before vs after, confirming each type's spread moves toward its reference; (3) neighborhood_mmd and occupancy_dice separately to attribute local_spatial recovery to preserved within-type z-neighborhoods; (4) d2_shape to confirm shape is maintained. Compare all four group scores against parent's 54.35/61.08/60.10/73.51.",
 "mechanism_off_control": "Set TYPE_Z_MATCH=0 (default): code falls back to parent's global z-matching (ANISO_FULL=1, ANISO_AXES=z, ANISO_LAMBDA=1), producing bit-identical output to node 25 (verify by h5py array comparison). Expected difference when on: local_spatial +0.3..+0.6 (neighborhood_mmd returns toward 0.0531), shape_scale within +/-0.5 of 73.51, cell_state and expression_change unchanged (coordinates only).",
 "sources": []}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/31/researcher.jsonl 36 KB
/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/31/researcher.stderr

审查员

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