总览 · ← 返回运行 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 环境变量开关,默认关):
- 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 数据计算,无硬编码统计量、无绝对时间/视图判断。
- 诊断(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) | 榜分 | 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 |
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
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| k007 | Interval staging and held-out-window filtering of external data | notes/official/来件/virtualembryo.ai/rules.md |
| k027 | Joint expression-geometry generation with relative geometry | notes/competition/03_solution_landscape.md |
| k026 | Canonicalise predicted 3D coordinates before submission | notes/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_id | T2EI-05 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、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 |