总览 · ← 返回运行 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 环境变量开关):
- PLAN 机制(b 侧逐轴各向异性膨胀,ANISO_BETA):γ_axis=clip(1.15·(σ_ref_axis/σ_out_axis)^β, 1, ANISO_CAP),σ_ref 由对齐后的两括号全云逐轴 std 按 t 线性插值,绕输出云质心只作用于 b 侧被选细胞 xy。已实现并查分,证伪(见下)。
- 提交机制(整云逐轴 σ 匹配,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 增益的主来源。
- 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) | 榜分 | 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 |
多种子(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)
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| k007 | Interval staging and held-out-window filtering of external data | notes/official/来件/virtualembryo.ai/rules.md |
| k024 | World-model evaluation dimensions for state-transition predictors | notes/competition/07_biomedical_world_models.md |
| k027 | Joint expression-geometry generation with relative geometry | notes/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_id | T2EI-05 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 是 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、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 |