总览 · ← 返回运行 20261003-094241-search-t2-heart-interp-g24-D-s2
节点 n29
收缩后径向分位数匹配:各细胞沿径向朝两侧 log 插值目标剖面位移(clip±25%,只动坐标);代理上 d2_shape 单调劣化、occupancy_dice 无改善,按预注册规则提交 λ=0(逐位同父 27)。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-094241-search-t2-heart-interp-g24-D-s2 |
|---|---|
| 父节点 | n27 |
| 子节点 | — |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 66.58(+0.0) · proxy 66.58(+0.0) |
| 审查 | 未审查 |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 11 分 |
| 程序版本 | 1f8fa982ab584f118c98d1db52acb4511cd9a08a (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 1f8fa982ab:solution/METHOD.md
收缩后径向分位数匹配:各细胞沿径向朝两侧 log 插值目标剖面位移(clip±25%,只动坐标);代理上 d2_shape 单调劣化、occupancy_dice 无改善,按预注册规则提交 λ=0(逐位同父 27)。
方法族与机制(PLAN T2HI-05,family T2HI-05)
在父 27(procrustes 对齐 → logit 配额混抽 → 同型 kNN 收缩 k=20 α=1.25 → β=1.3 逐类型逐轴方差恢复 → ganiso(λ=0))坐标链末端、jitter/scale_to_rms 之前插入径向分位数匹配(只动坐标,表达全程不触碰):
- 混抽前两侧全部对齐+缩放到 target_rms 的细胞云 ca / cb,各围绕自身质心计算径向距离的 100 点等分分位函数 r_a(q)、r_b(q);
- 目标剖面 log 时间插值:r_target(q) = exp((1−t)·ln r_a(q) + t·ln r_b(q));
- 预测云每个细胞围绕预测云质心取半径 r_i,经验分位 q_i = (rank+0.5)/n(stable argsort,确定性),r_tgt_i = interp(q_i, r_target);
- 径向位移 r_i' = r_i + λ·(r_tgt_i − r_i),位移量 clip 到 ±CLIP·r_i,方向不变(x_i' = c + (r_i'/r_i)(x_i − c));
- 照常 jitter + scale_to_rms(最终 RMS 被钉住,本步只改径向分布形状)。
环境变量:T2HI_RADIAL_LAM(默认 0.0 = 关闭,早退,逐位无操作)、T2HI_RADIAL_CLIP(默认 0.25)、T2HI_RADIAL_MIN(默认 20,任一侧或预测云细胞数不足即跳过)。单输入阶段 / 无括号走既有 copy_last 分支,本步不执行。视图无关:只用时间差 t 与坐标,不读 board / 路径 / 阶段名 / 绝对时间。生物学先验:未使用(PLAN sources 为空)。
机制生效证据(proxy E8.25+E9.5→E8.75,t=0.4,seed 0)
- 校正前预测云径向剖面确实偏离目标(收缩压缩了外围):q=0.76 处 pre=383.6 vs r_t=412.8(−7%),q=0.91 处 468.3 vs 482.3;内圈 q=0.10 处 pre=201.8 vs r_t=186.0(预测云内圈偏胖)。
- 位移确实发生且非零:λ=0.5 平均绝对径向位移 6.26,λ=1.0 为 12.44(RMS≈340 尺度下约 2–4%);λ=1.0 时 post 剖面精确到达 r_t(q=0.76: 412.7≈412.8;q=0.91: 482.3=482.3;q=0.25: 246.6≈246.5),clip 基本未触发。
- 径向 CDF 五点以上对比(λ=1.0,pre→post):q=0.00: 11.6→13.5;q=0.10: 201.8→186.3;q=0.25: 244.7→246.6;q=0.51: 311.1→315.2;q=0.76: 383.6→412.7;q=0.91: 468.3→482.3;q=1.00: 674.8→685.3。
- 四组分变化(A 半,对照 λ=0 → λ=0.5 → λ=1.0):expression_change 72.08→72.08→72.08(机制不触碰表达,.X 逐位不变);cell_state 71.56→71.56→71.56;local_spatial 69.96→≈69.96→70.01(nbd raw 0.04145→0.04140→0.04134,变化 <0.3%,远低于 5% 放弃阈,再次确认结构门余量充足);shape_scale 52.51→≈51.9→51.51(劣化)。
- 排名指标方向:d2_shape raw 0.03915→0.04130→0.04358 随 λ 单调劣化;occupancy_dice raw 0.8246→0.8208→0.8235,两个 λ 都低于对照(skill 0.5246→0.5178/0.5226)。
关闭机制对照与网格(全部 vec-score A 半,同会话,seed 0,共 3 次查分 / 额度 20)
对照 λ=0:与父 27(=父 17/19/24 管线)默认输出 .X 与 obsm 均 np.array_equal = True,A 半总分 66.53,八项 raw 与父会话逐位一致(d2 0.03915 / occ 0.8246 / nbd 0.04145),基座复现确认。
| 配置 | 总分 | d2_shape raw | occupancy_dice raw | nbd raw | shape_scale |
|---|---|---|---|---|---|
| λ=0(提交默认) | 66.53 | 0.03915 | 0.8246 | 0.04145 | 52.51 |
| λ=0.5, clip=0.25 | ≈66.36 | 0.04130 | 0.8208 | 0.04140 | ≈51.9 |
| λ=1.0, clip=0.25 | 66.29 | 0.04358 | 0.8235 | 0.04134 | 51.51 |
预注册放弃规则触发:λ=0.5 时 occupancy_dice raw 改善 <0.005(实际 −0.0038,劣化)且 d2_shape raw 恶化 >0.002(实际 +0.00215)→ 按 PLAN 提交 λ=0,不再扫 λ=0.3/0.7(d2_shape 损失随 λ 单调,两点趋势已定)。
结论与教训(本节点验证了什么、没验证什么)
- 证伪(本节点核心负结果):"收缩压缩径向剖面导致 occupancy_dice 踩地板"的假设方向不成立:把径向剖面校正到两侧 log 插值目标后 occupancy_dice 不升反微降,d2_shape 显著单调劣化。原因分析:(1) 两侧云都被缩放到 target_rms=346,而真值 E8.75 的 RMS≈217(scale_log_ratio raw 0.467 说明预测已经过大),向两侧径向剖面匹配等于进一步向外扩张,把质量推向真值不占据的外围壳层,d2_shape(尺度归一距离分布)随之变差;(2) occupancy_dice 对 ±3RMS 网格做 RMS 归一后比较,scale_to_rms 已钉住 RMS,径向重排在归一化后净效应接近形状噪声;(3) 与节点 27 相同的教训再次出现:收缩+aniso restore 后的云在形状指标上已处在比"括号插值目标"更优的位置,收缩的系统性压缩对 d2/occupancy 反而有利(真值比两侧更小更致密)。
- 未验证:λ∈{0.3,0.7}(放弃规则触发后未扫)、clip 更小值、以真值方向(向内收而非向外扩)为目标的径向匹配(本代理上两侧剖面目标就是向外扩,方向由数据决定,无法在不引入保留阶段信息的前提下反转)、外推榜与胚榜。
- 已验证:λ=0 输出与父逐位相同(np.array_equal .X/obsm)、vec-check ok(λ=0/0.5/1.0 三个文件)、程序 1.6s 跑完、单 seed 确定。
下一步建议
- shape_scale 组至此已连续三轮证伪全局几何校正(节点 17/19/21 平台、27 轴比、本节点径向剖面):二阶矩与径向一阶剖面子空间均已挖尽。代理数据表明预测云相对真值整体过大(RMS 346 vs 217),但 scale_to_rms 的目标来自两侧 log 插值,是管线里唯一直接控制绝对尺度的量——若还要挖 shape_scale,唯一未试的杠杆是让 target_rms 小于两侧 log 插值(等价于 scale_damp<1 的变体),但方法卡注明代理两端 RMS 都大、damp 在心脏榜几乎不动分,且这属于方法卡已扫过的 scale_damp 参数空间,预期收益低。
- 表达侧维持关闭(节点 15/22/24 三次证伪"修正 dp");de_score 提升需 Δ 之外的信息源(prior/ 通路注释或 external/ MOSTA E9.5),属新机制族 draft 节点。
- 坐标机制的结构门预算依然充足(本节点 ±4% 径向位移下 nbd raw 变化 <0.3%),但连续两轮的结果提示:在该管线上任何"向括号插值目标靠拢"的全局坐标变换都劣于现状,后续空间机制应转向类型间相对布局等更高阶结构,或直接停止在 shape_scale 上投入。
调研员的计划
| 名称 | 收缩后径向密度剖面校正(分位数匹配恢复占据结构) |
|---|---|
| 动机 | shape_scale 组 51.86 为四组最弱,其中 occupancy_dice skill 0.507、scale_log_ratio skill 0.512 均几乎踩地板。节点 17/19/21/27 已证伪二阶矩类全局校正(轴比、RMS、质心),ANALYSIS 明确建议下一步需'占据结构层面机制(径向密度剖面校正)'。kNN 收缩(k=20,α=1.25)将细胞向型质心拉拢,系统性压缩细胞到全局质心的径向分布;aniso restore 只恢复型内方差,不修复型间径向压缩。这使预测云在 RMS 归一化后过于中心集中,外围体素空缺→occupancy_dice 踩地板。节点 27 证实 ±6% 全局坐标变形下 neighborhood_mmd raw 变化 <0.2%,门余量充足。 |
| 做法 | 在父管线坐标链(收缩→aniso restore)之后、jitter+scale_to_rms 之前插入径向分位数匹配: 1. 计算预测云每个细胞到全局质心的距离 r_i,排序得经验分位 q_i; 2. 分别取 a/b 两侧全部对齐后细胞的径向距离,计算各侧径向分位函数 r_a(q)、r_b(q)(对 100 个等分分位点线性插值); 3. 目标 r_target(q)=exp((1−t)·ln r_a(q)+t·ln r_b(q)); 4. 位移 r_i'=r_i+λ·(r_target(q_i)−r_i),方向不变(x_i'=centroid+(r_i'/r_i)(x_i−centroid)),径向位移量 clip 到 ±CLIP·r_i(T2HI_RADIAL_CLIP 默认 0.25); 5. 照常 jitter + scale_to_rms(最终 RMS 由 scale_to_rms 钉住,本步只改径向分布形状)。 环境变量:T2HI_RADIAL_LAM(默认 0.0=关闭,逐位无操作)、T2HI_RADIAL_CLIP(默认 0.25)、T2HI_RADIAL_MIN(最少 20 细胞才执行,否则跳过)。 搜索:先 λ=0 验证逐位一致(1 次查分)→λ=0.5→λ=1.0;若 0.5 时 occupancy_dice raw 改善≥0.005 且 d2_shape raw 不恶化>0.002,加测 λ=0.3/0.7 找最优;否则按预注册规则提交 λ=0。总查分≤5 次。单输入阶段/无括号走 copy_last 分支,本步不执行。视图无关:只用 t 和坐标。 |
| 风险 | 1) 收缩后的径向压缩可能恰好接近真值(收缩有未知正则化效果),校正反而拉远——Engineer 在 λ=0.5 时若 occupancy_dice raw 降>0.005 且 d2_shape raw 无改善即止损;2) 径向展开改变邻域覆盖半径→nbd 恶化——但节点 27 证明 ±6% 坐标变动 nbd 变化<0.2%,本机制径向位移量级类似,风险低;若 nbd raw 恶化>5% 即放弃;3) 分位数估计在细胞数少时不稳——设 MIN=20 门槛。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 9fee5fce6c。改动的文件:solution/METHOD.md +25 −28、solution/run.py +98 −1
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex d5e3071..46b92da 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,48 +1,45 @@-全云各向异性轴比时间插值(固定 SVD 参考轴上 σ 做 log 插值目标,混抽+坐标链后逐轴缩放):代理上 λ=0.5/1.0 的 occupancy_dice 均劣化且快于 d2_shape 改善,总分单调低于对照,按预注册放弃规则提交 λ=0,输出与父 17/19/24 管线逐位相同。+收缩后径向分位数匹配:各细胞沿径向朝两侧 log 插值目标剖面位移(clip±25%,只动坐标);代理上 d2_shape 单调劣化、occupancy_dice 无改善,按预注册规则提交 λ=0(逐位同父 27)。 ## 方法族与机制(PLAN T2HI-05,family T2HI-05) -在父 24(=父 17/19 管线:procrustes 对齐 → logit 配额混抽 → 同型 kNN 收缩 k=20 α=1.25 → β=1.3 逐类型逐轴方差恢复 → jitter + scale_to_rms)的**坐标链末端、jitter/scale_to_rms 之前**插入全云各向异性缩放(只动坐标,表达全程不触碰):+在父 27(procrustes 对齐 → logit 配额混抽 → 同型 kNN 收缩 k=20 α=1.25 → β=1.3 逐类型逐轴方差恢复 → ganiso(λ=0))坐标链末端、jitter/scale_to_rms 之前插入径向分位数匹配(只动坐标,表达全程不触碰): -1. 混抽前:取 procrustes 对齐 + 缩放到 target_rms 后的**全部** a 侧 + b 侧细胞坐标,计算全云质心 c0,对去质心联合云做 SVD,取前 3 个右奇异向量为固定参考轴 V(3×3);-2. 分别计算 a、b 两侧全云在 V 各轴上的投影标准差 σ_a[3]、σ_b[3];-3. 目标轴标准差(log 空间时间插值):σ_t[j] = exp((1−t)·ln σ_a[j] + t·ln σ_b[j]);-4. 配额混抽与既有坐标链(收缩 / aniso restore / centroid restore)照常执行,不改动;-5. 坐标链末端:预测云在**同一 c0、同一 V** 下计算投影标准差 σ_p[3];-6. 逐轴缩放因子 s[j] = 1 + λ·(σ_t[j]/σ_p[j] − 1),clip 到 [1−C, 1+C](C = T2HI_GANISO_CLIP,默认 0.25);-7. x' = c0 + V·diag(s)·Vᵀ·(x − c0),随后照常 jitter + scale_to_rms(等比,不改轴比)。+1. 混抽前两侧**全部**对齐+缩放到 target_rms 的细胞云 ca / cb,各围绕自身质心计算径向距离的 100 点等分分位函数 r_a(q)、r_b(q);+2. 目标剖面 log 时间插值:r_target(q) = exp((1−t)·ln r_a(q) + t·ln r_b(q));+3. 预测云每个细胞围绕预测云质心取半径 r_i,经验分位 q_i = (rank+0.5)/n(stable argsort,确定性),r_tgt_i = interp(q_i, r_target);+4. 径向位移 r_i' = r_i + λ·(r_tgt_i − r_i),位移量 clip 到 ±CLIP·r_i,方向不变(x_i' = c + (r_i'/r_i)(x_i − c));+5. 照常 jitter + scale_to_rms(最终 RMS 被钉住,本步只改径向分布形状)。 -环境变量:`T2HI_GANISO_LAM`(默认 **0.0** = 关闭,早退,逐位无操作)、`T2HI_GANISO_CLIP`(默认 0.25)。单输入阶段 / 无括号走既有 copy_last 分支,本步不执行。视图无关:只用时间差 t、坐标数据;不读 board / 路径 / 阶段名 / 绝对时间。生物学先验:未使用(PLAN sources 为空)。+环境变量:`T2HI_RADIAL_LAM`(默认 **0.0** = 关闭,早退,逐位无操作)、`T2HI_RADIAL_CLIP`(默认 0.25)、`T2HI_RADIAL_MIN`(默认 20,任一侧或预测云细胞数不足即跳过)。单输入阶段 / 无括号走既有 copy_last 分支,本步不执行。视图无关:只用时间差 t 与坐标,不读 board / 路径 / 阶段名 / 绝对时间。生物学先验:未使用(PLAN sources 为空)。 -## 机制生效证据(proxy E8.25+E9.5→E8.75,t=0.4,seed 0,λ=1.0)+## 机制生效证据(proxy E8.25+E9.5→E8.75,t=0.4,seed 0) -- σ_a = [238.5, 202.6, 148.4],σ_b = [250.9, 169.5, 168.2],σ_t = [243.4, 188.6, 156.0];轴比 σ_b/σ_a = [1.052, 0.837, 1.133]——第 2 轴偏离 10% 以上(−16%),机制有非平凡作用空间(PLAN 提前终止条件不触发)。-- V 的方向余弦:第 1 轴 ≈ (0.08, −0.99, −0.11)、第 2 轴 ≈ (−0.98, −0.06, −0.20)、第 3 轴 ≈ (0.20, 0.12, −0.97)——三轴近似与坐标轴对齐(第 3 轴 ≈ z 切片方向),参考系稳定、由全云主导。-- 实际缩放因子 s = [1.011, 1.064, 1.008](λ=1):第 2 轴 +6.4%,非全 1,机制确实在改变坐标(λ=0.5 时 s = [1.0055, 1.0320, 1.0039])。-- 缩放前后投影标准差:σ_p = [240.7, 177.3, 154.8] → σ_post = [243.4, 188.6, 156.0](λ=1 时精确到达 σ_t,clip 未触发)。-- 四组分变化(A 半):expression_change 72.08 → 72.08(+0.00,机制不触碰表达,de_score 0.5435 / de_direction 0.6619 逐位不变);cell_state 71.56 → 71.56(+0.00,mmd_u 0.02386 / variogram 0.022669 不变);local_spatial 69.96 → 69.96(nbd 0.04145 → 0.04145/0.04140,λ=0.5/1 变化 <0.2%,远低于 10% 恶化阈);shape_scale 52.51 → 52.23(λ=0.5)/ 51.99(λ=1)——组内 d2_shape raw 0.03915 → 0.03810 → 0.03725(改善),但 occupancy_dice raw 0.8246 → 0.8159 → 0.8080(劣化,skill 0.5246 → 0.4959 跌破地板),净效应为负。+- 校正前预测云径向剖面确实偏离目标(收缩压缩了外围):q=0.76 处 pre=383.6 vs r_t=412.8(−7%),q=0.91 处 468.3 vs 482.3;内圈 q=0.10 处 pre=201.8 vs r_t=186.0(预测云内圈偏胖)。+- 位移确实发生且非零:λ=0.5 平均绝对径向位移 6.26,λ=1.0 为 12.44(RMS≈340 尺度下约 2–4%);λ=1.0 时 post 剖面精确到达 r_t(q=0.76: 412.7≈412.8;q=0.91: 482.3=482.3;q=0.25: 246.6≈246.5),clip 基本未触发。+- 径向 CDF 五点以上对比(λ=1.0,pre→post):q=0.00: 11.6→13.5;q=0.10: 201.8→186.3;q=0.25: 244.7→246.6;q=0.51: 311.1→315.2;q=0.76: 383.6→412.7;q=0.91: 468.3→482.3;q=1.00: 674.8→685.3。+- 四组分变化(A 半,对照 λ=0 → λ=0.5 → λ=1.0):expression_change 72.08→72.08→72.08(机制不触碰表达,.X 逐位不变);cell_state 71.56→71.56→71.56;local_spatial 69.96→≈69.96→70.01(nbd raw 0.04145→0.04140→0.04134,变化 <0.3%,远低于 5% 放弃阈,再次确认结构门余量充足);shape_scale 52.51→≈51.9→51.51(**劣化**)。+- 排名指标方向:d2_shape raw 0.03915→0.04130→0.04358 随 λ **单调劣化**;occupancy_dice raw 0.8246→0.8208→0.8235,两个 λ 都低于对照(skill 0.5246→0.5178/0.5226)。 -## 关闭机制对照与网格(全部 vec-score A 半,同会话,seed 0,共 5 次查分 / 额度 20)+## 关闭机制对照与网格(全部 vec-score A 半,同会话,seed 0,共 3 次查分 / 额度 20) -对照 λ=0:与父 24(=父 17/19 管线)默认输出 `.X` 与 `obsm` 均 np.array_equal = **True**,A 半总分 **66.53**,八项 raw 与父会话逐位一致,基座复现确认。+对照 λ=0:与父 27(=父 17/19/24 管线)默认输出 `.X` 与 `obsm` 均 np.array_equal = **True**,A 半总分 **66.53**,八项 raw 与父会话逐位一致(d2 0.03915 / occ 0.8246 / nbd 0.04145),基座复现确认。 | 配置 | 总分 | d2_shape raw | occupancy_dice raw | nbd raw | shape_scale | |---|---:|---:|---:|---:|---:| | **λ=0(提交默认)** | **66.53** | 0.03915 | 0.8246 | 0.04145 | 52.51 |-| λ=0.5, clip=0.25 | 66.48 | 0.03810 | 0.8159 | 0.04140 | 52.23 |-| λ=1.0, clip=0.25 | 66.40 | 0.03725 | 0.8080 | 0.04145 | 51.99 |+| λ=0.5, clip=0.25 | ≈66.36 | 0.04130 | 0.8208 | 0.04140 | ≈51.9 |+| λ=1.0, clip=0.25 | 66.29 | 0.04358 | 0.8235 | 0.04134 | 51.51 | -**预注册放弃规则触发**:λ=1 时 occupancy_dice raw 改善 <0.005(实际 −0.0166,劣化)→ 提交 λ=0。未再扫 λ=0.3/0.7:d2_shape 收益与 occupancy_dice 损失均随 λ 单调,λ=0.5 已是两点内插且仍低于对照,无内部极大值迹象(与节点 24 相同的止损逻辑)。+**预注册放弃规则触发**:λ=0.5 时 occupancy_dice raw 改善 <0.005(实际 −0.0038,劣化)且 d2_shape raw 恶化 >0.002(实际 +0.00215)→ 按 PLAN 提交 λ=0,不再扫 λ=0.3/0.7(d2_shape 损失随 λ 单调,两点趋势已定)。 ## 结论与教训(本节点验证了什么、没验证什么) -- **证伪(本节点核心负结果)**:"混抽云的全云轴比偏离两侧 log 插值目标"这一结构假设在代理上部分成立(轴比确被拉向 σ_t),但**把轴比校正到 log 插值目标不是 occupancy_dice 的改善方向**:occupancy_dice 在 ±3 RMS 的 16³ 网格上比较占据体素,对径向质量分布(壳层/空隙结构)敏感,而不仅是各轴二阶矩;沿第 2 轴拉伸 6.4% 使 d2_shape(尺度归一距离分布)变好的同时把占据体素推离真值网格。混抽 + 逐类型 aniso restore 后的全云轴比已经处在比 log 插值目标更优的位置。-- d2_shape 与 occupancy_dice 可以朝相反方向走(本节点实测),shape_scale 组内不存在"轴比对齐即全组改善"的单一杠杆。-- 未验证:λ∈{0.3, 0.7}、clip 更小值、"保体积各向异性"(s 归一化到 det=1)、只在 z 轴或只在 xy 内校正(放弃规则触发后未扫);外推榜与胚榜(本节点只做 heart:val_interp)。-- 已验证:λ=0 输出与父逐位相同(np.array_equal .X/obsm)、vec-check ok(seed 0 与 seed 1)、单 seed 复跑确定。+- **证伪(本节点核心负结果)**:"收缩压缩径向剖面导致 occupancy_dice 踩地板"的假设方向不成立:把径向剖面校正到两侧 log 插值目标后 occupancy_dice 不升反微降,d2_shape 显著单调劣化。原因分析:(1) 两侧云都被缩放到 target_rms=346,而真值 E8.75 的 RMS≈217(scale_log_ratio raw 0.467 说明预测已经过大),向两侧径向剖面匹配等于进一步向外扩张,把质量推向真值不占据的外围壳层,d2_shape(尺度归一距离分布)随之变差;(2) occupancy_dice 对 ±3RMS 网格做 RMS 归一后比较,scale_to_rms 已钉住 RMS,径向重排在归一化后净效应接近形状噪声;(3) 与节点 27 相同的教训再次出现:收缩+aniso restore 后的云在形状指标上已处在比"括号插值目标"更优的位置,收缩的系统性压缩对 d2/occupancy 反而有利(真值比两侧更小更致密)。+- 未验证:λ∈{0.3,0.7}(放弃规则触发后未扫)、clip 更小值、以真值方向(向内收而非向外扩)为目标的径向匹配(本代理上两侧剖面目标就是向外扩,方向由数据决定,无法在不引入保留阶段信息的前提下反转)、外推榜与胚榜。+- 已验证:λ=0 输出与父逐位相同(np.array_equal .X/obsm)、vec-check ok(λ=0/0.5/1.0 三个文件)、程序 1.6s 跑完、单 seed 确定。 ## 下一步建议 -- shape_scale 组的二阶矩类全局校正(RMS 缩放、轴比插值)已两轮证伪(节点 17/19/21 平台 + 本节点),若再挖需要**占据结构**层面的机制(径向密度剖面校正),且必须同时监控 d2_shape 与 occupancy_dice 的反向风险。-- 表达侧"修正 dp"方向维持关闭(节点 15/22/24 三次证伪);de_score 提升需 Δ 之外的信息源(prior/ 或 external/ MOSTA E9.5),属新机制族 draft。-- neighborhood_mmd(skill 0.700,25 分权重最大)对坐标扰动极稳健(本节点 ±6% 轴缩放下 raw 变化 <0.2%),说明温和的全局坐标变形不消耗结构门余量——后续坐标机制可以把门风险预算花在别处。+- shape_scale 组至此已连续三轮证伪全局几何校正(节点 17/19/21 平台、27 轴比、本节点径向剖面):二阶矩与径向一阶剖面子空间均已挖尽。代理数据表明预测云相对真值**整体过大**(RMS 346 vs 217),但 scale_to_rms 的目标来自两侧 log 插值,是管线里唯一直接控制绝对尺度的量——若还要挖 shape_scale,唯一未试的杠杆是让 target_rms 小于两侧 log 插值(等价于 scale_damp<1 的变体),但方法卡注明代理两端 RMS 都大、damp 在心脏榜几乎不动分,且这属于方法卡已扫过的 scale_damp 参数空间,预期收益低。+- 表达侧维持关闭(节点 15/22/24 三次证伪"修正 dp");de_score 提升需 Δ 之外的信息源(prior/ 通路注释或 external/ MOSTA E9.5),属新机制族 draft 节点。+- 坐标机制的结构门预算依然充足(本节点 ±4% 径向位移下 nbd raw 变化 <0.3%),但连续两轮的结果提示:在该管线上任何"向括号插值目标靠拢"的全局坐标变换都劣于现状,后续空间机制应转向类型间相对布局等更高阶结构,或直接停止在 shape_scale 上投入。diff --git a/solution/run.py b/solution/run.pyindex 9172c75..7c0175e 100644--- a/solution/run.py+++ b/solution/run.py@@ -10,7 +10,24 @@ T2HI_COMPOSITION=linear). Shared types split their quota between the sides as (1-t, t); single-side types draw from that side only, capped by availability with proportional redistribution. -Addition in this node (T2HI-05, global anisotropic axis-ratio time interpolation):+Addition in this node (T2HI-05, post-contraction radial density profile correction):+- env T2HI_RADIAL_LAM (default 0.0 = off, early-return bit-for-bit no-op),+ T2HI_RADIAL_CLIP (default 0.25), T2HI_RADIAL_MIN (default 20): after the+ contraction/aniso/centroid/ganiso chain and BEFORE jitter+scale_to_rms, each+ prediction cell is moved radially (direction unchanged) toward the+ log-time-interpolated radial quantile profile of the two full aligned side+ clouds: r_target(q) = exp((1-t) ln r_a(q) + t ln r_b(q)) over 100 equispaced+ quantiles; r_i' = r_i + lam*(r_target(q_i) - r_i), displacement clipped to+ +-clip*r_i, q_i = (rank+0.5)/n (stable sort, deterministic). MEASURED HARMFUL+ on proxy (A-half, seed 0): lam=0.5 -> ~66.36, lam=1.0 -> 66.29 vs control+ 66.53; d2_shape raw 0.03915 -> 0.04130 -> 0.04358 monotonically worse,+ occupancy_dice raw 0.8246 -> 0.8208/0.8235 (no improvement), nbd raw change+ <0.3%. Both sides are scaled to target_rms=346 while the truth is ~217, so+ matching the bracket radial profile expands the cloud further outward. PLAN+ pre-registered abandon rule triggered; submitted default lam=0 reproduces the+ parent pipeline bit-for-bit (np.array_equal on .X and obsm verified).++Kept from parent (T2HI-05, global anisotropic axis-ratio time interpolation): - env T2HI_GANISO_LAM (default 0.0 = off, early-return bit-for-bit no-op), T2HI_GANISO_CLIP (default 0.25): before mixing, the full aligned+scaled a/b clouds define a fixed frame (centroid c0, top-3 SVD axes V) and per-axis@@ -186,6 +203,66 @@ def ganiso_scale(coords: np.ndarray, c0: np.ndarray, V: np.ndarray, sigma_t: np. return out, {"active": True, "sigma_p": sigma_p, "s": s, "sigma_post": sigma_post} +def radial_match(+ coords: np.ndarray,+ ca_full: np.ndarray,+ cb_full: np.ndarray,+ t: float,+ lam: float,+ clip: float,+ min_cells: int,+ n_q: int = 100,+):+ """Radial quantile matching toward the log-interpolated side profile (T2HI-05).++ r_a(q) / r_b(q) are the radial-distance quantile functions of the FULL+ aligned+scaled side-a / side-b clouds around their own centroids (n_q+ equispaced quantile points). Target r_target(q) = exp((1-t) ln r_a(q) ++ t ln r_b(q)). Each prediction cell with radius r_i (around the prediction+ centroid) and empirical quantile q_i = (rank+0.5)/n is moved radially to+ r_i' = r_i + lam*(r_target(q_i) - r_i) with the displacement clipped to+ +-clip*r_i; direction is unchanged. lam=0 is a bit-for-bit no-op (early+ return). Returns (coords, report dict).+ """+ if lam == 0.0 or coords.shape[0] < min_cells:+ return coords, {"active": False}+ if ca_full.shape[0] < min_cells or cb_full.shape[0] < min_cells:+ return coords, {"active": False}+ qs = np.linspace(0.0, 1.0, n_q)+ ra = np.linalg.norm(ca_full - ca_full.mean(axis=0), axis=1)+ rb = np.linalg.norm(cb_full - cb_full.mean(axis=0), axis=1)+ rq_a = np.quantile(ra, qs)+ rq_b = np.quantile(rb, qs)+ rq_t = np.exp((1.0 - t) * np.log(np.maximum(rq_a, 1e-9)) + t * np.log(np.maximum(rq_b, 1e-9)))+ c = coords.mean(axis=0)+ dev = coords - c+ r = np.linalg.norm(dev, axis=1)+ order = np.argsort(r, kind="stable")+ ranks = np.empty(len(r), dtype=np.float64)+ ranks[order] = np.arange(len(r), dtype=np.float64)+ q_i = (ranks + 0.5) / len(r)+ r_tgt = np.interp(q_i, qs, rq_t)+ dr = lam * (r_tgt - r)+ dr = np.clip(dr, -clip * r, clip * r)+ r_new = np.maximum(r + dr, 0.0)+ scale = np.divide(r_new, r, out=np.ones_like(r), where=r > 1e-12)+ out = c + dev * scale[:, None]+ rq_pre = np.quantile(r, qs)+ rq_post = np.quantile(np.linalg.norm(out - out.mean(axis=0), axis=1), qs)+ return out, {+ "active": True,+ "qs": qs,+ "rq_a": rq_a,+ "rq_b": rq_b,+ "rq_t": rq_t,+ "rq_pre": rq_pre,+ "rq_post": rq_post,+ "mean_abs_dr": float(np.abs(dr).mean()),+ "rms_pre": float(rms_radius(coords)),+ "rms_post": float(rms_radius(out)),+ }++ def colocalize(ca, la_sel, cb, lb_sel, t: float, gamma: float, min_count: int): """Translate each shared type's two drawn sub-clouds onto their interpolated centroid. @@ -823,6 +900,26 @@ def run(view: str, out: str, seed: int) -> None: ) else: print("[ganiso] inactive (too few cells)", flush=True)+ rad_lam = float(os.environ.get("T2HI_RADIAL_LAM", "0.0"))+ rad_clip = float(os.environ.get("T2HI_RADIAL_CLIP", "0.25"))+ rad_min = int(os.environ.get("T2HI_RADIAL_MIN", "20"))+ coords, r_rep = radial_match(coords, ca, cb, float(t), rad_lam, rad_clip, rad_min)+ if r_rep["active"]:+ qs = r_rep["qs"]+ show = [0, 10, 25, 50, 75, 90, 99]+ print(+ f"[radial] lam={rad_lam} clip={rad_clip} min={rad_min} "+ f"mean_abs_dr={r_rep['mean_abs_dr']:.3f} rms {r_rep['rms_pre']:.1f}->{r_rep['rms_post']:.1f}",+ flush=True,+ )+ for j in show:+ print(+ f" q={qs[j]:.2f}: r_a={r_rep['rq_a'][j]:.1f} r_b={r_rep['rq_b'][j]:.1f} "+ f"r_t={r_rep['rq_t'][j]:.1f} pre={r_rep['rq_pre'][j]:.1f} post={r_rep['rq_post'][j]:.1f}",+ flush=True,+ )+ else:+ print(f"[radial] inactive lam={rad_lam} min={rad_min}", flush=True) coords = _jitter(coords, rng) coords = scale_to_rms(coords, target_rms) print(f"[out] n={expr.shape[0]} out_rms={rms_radius(coords):.1f}", flush=True)
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| k007 | Interval staging and held-out-window filtering of external data | notes/official/来件/virtualembryo.ai/rules.md |
| k026 | Canonicalise predicted 3D coordinates before submission | notes/pitfalls/04_scorer_invariance.md |
| k010 | Flux Matching: learning non-score generative vector fields | arXiv:2605.07319 |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父 27 坐标链末端(jitter/scale_to_rms 之前)新增 radial_match:各细胞按径向经验分位向两侧全云 log 插值目标剖面 r_target(q) 位移(T2HI_RADIAL_LAM/CLIP/MIN 控制,clip±25%)。代理网格上 λ=0.5/1.0 均劣于对照(66.36/66.29 vs 66.53),触发预注册放弃规则,提交默认 λ=0,输出与父 27 逐位相同(np.array_equal 验证)。 |
|---|---|
| 各组分数的变化 | cell_state:不变(+0.00,72.43),mmd_u 0.02337 / variogram 0.0206 逐位同父 expression_change:不变(+0.00,71.71),λ=0 提交,de_score 0.5213 / de_direction 0.6625 逐位同父 local_spatial:不变(+0.00,70.32);代理上 λ=1.0 时 nbd raw 0.04145→0.04134,变化 <0.3%,在噪声内 shape_scale:不变(+0.00,51.86);代理网格上机制开启时反而劣化:d2_shape raw 0.03915→0.04130(λ=0.5)→0.04358(λ=1.0) 单调变差,occupancy_dice raw 0.8246→0.8208/0.8235 无改善,shape_scale 52.51→≈51.9→51.51 |
| family_id | T2HI-05 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 2 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 1 次:write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 15,315 · 输出 1,099 · 思考 412 |
| 任务(第一行) | 分析节点 n29 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/29/analyst.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/29/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 18 |
| 工具调用 | 共 19 次:bash 13、edit 4、read 1、write 1 |
| 用时 | 7 分 |
| token 数 | 输入 60,390 · 输出 8,087 · 思考 5,224 |
| 任务(第一行) | 按计划修改程序:收缩后径向密度剖面校正(分位数匹配恢复占据结构) |
| 最后的回答(摘录) | 完成。 **做了什么**:按 PLAN T2HI-05 在父 27 坐标链末端(jitter/scale_to_rms 之前)实现径向分位数匹配——各细胞按径向分位向两侧全云 log 插值目标剖面位移,`T2HI_RADIAL_LAM/CLIP/MIN` 环境变量控制。λ=0 输出与父逐位相同(np.array_equal 验证),seed 确定,vec-check ok。 **查分结果**(A 半,3/20 次):对照 λ=0 = 66.53;λ=0.5 ≈ 66.36;λ=1.0 = 66.29。机制确实生效(平均径向位移 6.3/12.4,q=0.76 处 383.6→412.7 精确到达目标),但 d2_shape raw 单调劣化(0.03915→0.04358)、occupancy_dice 无改善(0.8246→0.8208/0.8235)、nbd 变化 <0.3%。预注册放弃规则触发,**提交 λ=0**。 **下一步最值得试**:shape_scale 的全局几何校正子空间(RMS/轴比/径向剖面)已三轮证伪——两侧被缩放到 RMS 346 而真值 ≈217,任何"向括号目标靠拢"的变换都是向外扩、方向就错。建议停止在 shape_scale 投入;表达侧提升需 prior/ 或 external MOSTA E9.5 的新信息源(draft 节点)。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/29/engineer.jsonl 175 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/29/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 3 分 |
| token 数 | 输入 18,676 · 输出 1,194 · 思考 7,204 |
| 任务(第一行) | 为节点 n29(改进,父节点 n27)写改进计划 PLAN.json |
| 最后的回答(摘录) | 四组最弱,其中 occupancy_dice skill 0.507、scale_log_ratio skill 0.512 均几乎踩地板。节点 17/19/21/27 已证伪二阶矩类全局校正(轴比、RMS、质心),ANALYSIS 明确建议下一步需'占据结构层面机制(径向密度剖面校正)'。kNN 收缩(k=20,α=1.25)将细胞向型质心拉拢,系统性压缩细胞到全局质心的径向分布;aniso restore 只恢复型内方差,不修复型间径向压缩。这使预测云在 RMS 归一化后过于中心集中,外围体素空缺→occupancy_dice 踩地板。节点 27 证实 ±6% 全局坐标变形下 neighborhood_mmd raw 变化 <0.2%,门余量充足。", "approach": "在父管线坐标链(收缩→aniso restore)之后、jitter+scale_to_rms 之前插入径向分位数匹配:\n1. 计算预测云每个细胞到全局质心的距离 r_i,排序得经验分位 q_i;\n2. 分别取 a/b 两侧**全部**对齐后细胞的径向距离,计算各侧径向分位函数 r_a(q)、r_b(q)(对 100 个等分分位点线性插值);\n3. 目标 r_target(q)=exp((1−t)·ln r_a(q)+t·ln r_b(q));\n4. 位移 r_i'=r_i+λ·(r_target(q_i)−r_i),方向不变(x_i'=centroid+(r_i'/r_i)(x_i−centroid)),径向位移量 clip 到 ±CLIP·r_i(T2HI_RADIAL_CLIP 默认 0.25);\n5. 照常 jitter + scale_to_rms(最终 RMS 由 scale_to_rms 钉住,本步只改径向分布形状)。\n环境变量:T2HI_RADIAL_LAM(默认 0.0=关闭,逐位无操作)、T2HI_RADIAL_CLIP(默认 0.25)、T2HI_RADIAL_MIN(最少 20 细胞才执行,否则跳过)。\n搜索:先 λ=0 验证逐位一致(1 次查分)→λ=0.5→λ=1.0;若 0.5 时 occupancy_dice raw 改善≥0.005 且 d2_shape raw 不恶化>0.002,加测 λ=0.3/0.7 找最优;否则按预注册规则提交 λ=0。总查分≤5 次。单输入阶段/无括号走 copy_last 分支,本步不执行。视图无关:只用 t 和坐标。", "expected_groups": ["shape_scale"], "risks": "1) 收缩后的径向压缩可能恰好接近真值(收缩有未知正则化效果),校正反而拉远——Engineer 在 λ=0.5 时若 occupancy_dice raw 降>0.005 且 d2_shape raw 无改善即止损;2) 径向展开改变邻域覆盖半径→nbd 恶化——但节点 27 证明 ±6% 坐标变动 nbd 变化<0.2%,本机制径向位移量级类似,风险低;若 nbd raw 恶化>5% 即放弃;3) 分位数估计在细胞数少时不稳——设 MIN=20 门槛。", "family_id": "T2HI-05", "mechanism": "kNN 收缩系统性压缩径向密度剖面(型间距离缩短),本机制在收缩+aniso restore 后,按径向分位数匹配将每个细胞沿径向微调到时间插值目标剖面,恢复占据体素的外围填充,从而改善 occupancy_dice;scale_to_rms 保持最终 RMS 不变。", "vs_constant_shift": "常数位移对每个细胞施加相同向量(或全局缩放同一因子);本机制按每个细胞的径向分位施加不同的径向位移(外围细胞可能外推、内圈细胞可能内收),改变的是径向分布的形状(高阶结构),不是一阶平移或二阶缩放。", "mechanism_evidence": "Engineer 应输出:(1) 校正前后径向 CDF 对比(至少 5 个分位点的数值),(2) 平均绝对径向位移量,(3) occupancy_dice raw 与 d2_shape raw 分别的变化方向与幅度,(4) nbd raw 变化确认 <1%。若 λ>0 时径向 CDF 无变化或位移全为 0,说明机制未运行。", "mechanism_off_control": "T2HI_RADIAL_LAM=0 时 r_i'=r_i,无位移,后续流程逐位不变;预期 λ=0 输出与父 27(=17/19/24 管线).X 和 obsm 完全 np.array_equal,总分 66.53±1(A 半)。", "sources": [] } |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/29/researcher.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/29/researcher.stderr |