总览 · ← 返回运行 20261003-004922-search-t2-heart-interp-g24-D
节点 n22
实现 T2HI-04 型内 kNN 平滑的径向门控(外周细胞位移衰减、内部全强度收缩);机制生效(半径保留 0.946→0.99、shape_scale +1.45)但 local_spatial 损失 2–3 倍于形状增益,9 配置最优仅 +0.06,按 PLAN 止损以 gate_frac=inf 关闭态提交(与父 17/19/20 逐位一致)。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-004922-search-t2-heart-interp-g24-D |
|---|---|
| 父节点 | n20 |
| 子节点 | n25 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 61.41(+0.0) · proxy 61.41(+0.0) · 3 次复测均分 61.33 |
| 审查 | 通过 1 越界读取:未发现问题——run.py 只通过 args.data 拼接视图内路径读取(load_manifest/panel_genes/read_stage,run.py:446-465),外部数据仅按 manifest['external'] 的 path 读取(_load_external_prior,run.py:257-264),无绝对路径/`..`/mnt/home/raw/downloads/scorer 访问,无网络调用。; 2 硬编码目标统计量:未发现问题——所有统计量(型质心、R_type=median 距离、型内 SD、RMS)均在运行时从输入数据计算(run.py… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 20 分 |
| 程序版本 | efe458fdf3bdcecb5728014412017f5d1658b641 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git efe458fdf3:solution/METHOD.md
实现 T2HI-04 型内 kNN 平滑的径向门控(外周细胞位移衰减、内部全强度收缩);机制生效(半径保留 0.946→0.99、shape_scale +1.45)但 local_spatial 损失 2–3 倍于形状增益,9 配置最优仅 +0.06,按 PLAN 止损以 gate_frac=inf 关闭态提交(与父 17/19/20 逐位一致)。
方法族 / 实现
family_id = T2HI-04(径向门控的型内 kNN 坐标平滑),实现于 run.py::_knn_smooth(新增 gate_frac / gate_power 参数,CLI --gate-frac / --gate-power):
- 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑(alpha=0)与 T2HI-08 方差增强(beta=0)保持关闭。
- 门控机制:对每个类型,R_type=median(||x_i−μ_type||),w_i=clip(1−(d_i/(gate_frac·R_type))^gate_power, 0, 1),位移 delta_i=strength·w_i·(c_i−x_i),再走原有 max_frac 逐维截断。外周细胞(定义型空间边界)位移被衰减,内部细胞全强度收缩。
- 单输入阶段退路:门控只作用于坐标平滑步,不依赖输入阶段数;单阶段分支无平滑、门控不触发,行为与父一致。
- 视图无关:门控只依赖坐标与标签的几何,无绝对时间、无路径/视图判断。
机制生效证据(seed 0,全部 17616 细胞参与平滑,0 跳过)
| 配置 | radius_retention | mean w | w=0 比例 | corr(disp, d/R) | mean disp/SD |
|---|---|---|---|---|---|
| 关闭对照(gate=inf) | 0.9457 | 1 | 0 | – | 0.176 |
| gf=1.5, gp=1 | 0.9910 | 0.33 | 8.5% | −0.43 | 0.064 |
| gf=2.0, gp=2 | 0.9694 | 0.71 | 2.3% | −0.14 | 0.132 |
- 每型 RMS 半径保留从对照 0.946 升到 0.969–0.991(PLAN 预期 ≥0.95 达成);
- 位移幅度与归一化径向距离负相关(r=−0.14…−0.43,功率 1 时更强;未全部达 r<−0.5,因 max_frac 截断与 kNN 位移本身的空间结构稀释了相关);
- 与常数位移可区分:型心近似不动(位移指向 kNN 邻域质心、幅度按径向位置调制),改变的是型内空间分布的形状/延展,非整体位置。
- 四组分指纹符合 PLAN 预期:坐标-only 改动 → cell_state / expression_change 逐位不变(65.93 / 63.83),shape_scale 上升、local_spatial 下降(见下表)。
对照结果(mechanism_off_control,vec-score A 半,seed 0,共 8 次查分)
关闭态 --gate-frac inf(=默认)输出与父节点 17/19/20 管线 X 与 spatial_3D 均 np.array_equal=True(本节点直接验证),A 半分沿用父记录 61.033(65.93/63.83/61.70/52.68),未重复耗额度。
| 配置 (gate_frac, gate_power, max_frac[, strength]) | board | Δboard | shape_scale | local_spatial |
|---|---|---|---|---|
| 关闭对照(=父) | 61.033 | – | 52.68 | 61.70 |
| 2.0, 2, 0.45 | 61.093 | +0.06 | 54.13 (+1.45) | 60.49 (−1.21) |
| 2.0, 1, 0.45 (s=2.5, mf=0.65) | 60.946 | −0.09 | 53.21 | 60.82 |
| 2.0, 1, 0.65 | 60.605 | −0.43 | 53.85 | 58.82 |
| 2.0, 1, 0.45 | 60.602 | −0.43 | 53.89 | 58.76 |
| 1.5, 1, 0.45 (s=3.0, mf=0.65) | 60.645 | −0.39 | 53.50 | 59.33 |
| 1.5, 2, 0.45 | 60.500 | −0.53 | 53.41 | 58.84 |
| 1.5, 1, 0.65 | 60.214 | −0.82 | 53.99 | 57.12 |
| 1.5, 1, 0.45 | 60.211 | −0.82 | 53.98 | 57.11 |
机制检验结论:方向证实、净增益证伪。 门控确实解除 shape_scale 对平滑强度的约束(+0.7…+1.45,单调于门控强度),PLAN 风险 1 成真:外周细胞恰是 local_spatial(neighborhood_mmd)最依赖的细胞,其位移衰减造成的损失是形状增益的 2–3 倍(局部/形状交换比 ≈ −2.5:1)。补偿性提高 strength/max_frac 只同时侵蚀两者(半径保留下降),无一配置净超 +0.1。最优 +0.06 << +1 止损阈值 → 按 PLAN 止损条款以 gate_frac=inf 关闭态提交。
与节点 21(r/SD 归一化的边界权重,61.35 B 半)合起来:两种归一化、三种门控形状(线性/平方/梯形)都给出同一交换比,径向门控家族在本 board 已到顶——kNN 平滑的收益主体来自对外周噪声细胞的收缩本身,"保边界、缩内部"不成立。
提交内容
默认参数即关闭态,输出与父节点 17/19/20 逐位一致(零损失保底)。vec-check 通过(status ok);seed 0/1 各自确定(重复运行 np.array_equal 验证);EXECUTION.json 为 {"gpu": false};无 ARTIFACTS。
生物学知识来源
无新增外部生物学知识;门控是纯几何机制(到型质心的径向距离),只使用视图内数据。
未验证
- gate_frac ∈ (2.0, ∞) 的更弱门控细网格(gf=2.5/3.0, gp=2):趋势外推净增益在 +0.06 附近封顶且随门控→0 收敛到对照,止损后不再耗额度。
- 非径向的门控坐标(如按 kNN 位移方向与径向的夹角门控)与 B 半/final 视图(关闭态与父逐位一致,迁移性等同父节点 17)。
调研员的计划
| 名称 | 型内kNN平滑外周门控:保留型边界形状、增强内部致密化 |
|---|---|
| 动机 | 父管线(节点17/19/20,61.41)四组分中 shape_scale 最弱(52.70),且从节点2(53.37)到节点17(52.70)随 max_frac 0→0.45 单调下降 −0.67,说明 kNN 平滑的向心收缩在改善 local_spatial(+8.31)的同时侵蚀了型的空间延展/形状。节点17 记录 mf 0.2–0.8 板分平台(61.0–61.1),表明更高 mf 的 local_spatial 增益被 shape_scale 损失抵消。若能选择性保留外周细胞(定义型边界/形状)的坐标不动、仅对内部细胞做收缩,就能解除 shape_scale 对 mf 的约束,同时提升两组。 |
| 做法 | 在父管线 _knn_smooth 中新增外周门控权重:对每型计算 R_type=median(||x_i−μ_type||),细胞门控权重 w_i=clip(1−(d_i/(gate_frac×R_type))^gate_power, 0, 1),位移乘以 w_i 后再走原有 max_frac 截断。参数初值与搜索:gate_frac∈{1.5, 2.0}(1.5=中位半径以内为全平滑区),gate_power∈{1, 2},max_frac∈{0.45, 0.65}。共 4–6 个配置,每配置 1 次 vec-score,总计 ≤8 次查分。止损:若最优配置 board 未超对照 +1,提交 gate_frac=∞(w=1,与父逐位一致)。单输入阶段退路:门控仅作用于坐标平滑步,不依赖输入阶段数;单阶段分支无平滑、门控不触发,行为不变。 |
| 风险 | 1) 外周细胞恰好是最需要平滑的噪声细胞,门控反而降低 local_spatial——若 gate_frac=1.5 的 local_spatial 比对照低 >0.5 即发现;2) shape_scale 恢复幅度 <0.3(噪声内),净增益不足——第 2 次查分即可判断方向;3) gate_power=2 过于激进导致内部/外周不连续——检查四组分中 local_spatial 是否异常。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 f6675a2f15。改动的文件:solution/METHOD.md +35 −32、solution/run.py +53 −3
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 7113976..764248c 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,53 +1,56 @@-实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。+实现 T2HI-04 型内 kNN 平滑的径向门控(外周细胞位移衰减、内部全强度收缩);机制生效(半径保留 0.946→0.99、shape_scale +1.45)但 local_spatial 损失 2–3 倍于形状增益,9 配置最优仅 +0.06,按 PLAN 止损以 gate_frac=inf 关闭态提交(与父 17/19/20 逐位一致)。 ## 方法族 / 实现 -family_id = **T2HI-08**(外部型内方差先验的方差增强),实现于 `run.py::_var_expand` + `_load_external_prior`:+family_id = **T2HI-04**(径向门控的型内 kNN 坐标平滑),实现于 `run.py::_knn_smooth`(新增 `gate_frac` / `gate_power` 参数,CLI `--gate-frac` / `--gate-power`): -1. 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑保持关闭(alpha=0)。-2. 新增 `--qiu-var β`(默认 0 = 完全跳过):对每个 ≥5 细胞的类型,X_new = (1−f_g)·μ_type + f_g·X,f_g = clamp(r_g^β, 0.25, 4),clip 到 ≥0(log1p 域)。μ_type 不动、细胞沿自身偏差双向外扩 → 保均值、保协方差形状、增型内离散。-3. 外部先验自动检测(PLAN 步骤0 的免费诊断):遍历 manifest `external/`,按**数据内容**(基因重叠 ≥30 且与本板类型词汇有交集)判断可用性,不看数据集 id / 路径(视图无关)。-4. 单输入阶段退路:机制只作用于最终输出表达,不依赖输入阶段数;单阶段分支同样接入。+1. 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑(alpha=0)与 T2HI-08 方差增强(beta=0)保持关闭。+2. 门控机制:对每个类型,R_type=median(||x_i−μ_type||),w_i=clip(1−(d_i/(gate_frac·R_type))^gate_power, 0, 1),位移 delta_i=strength·w_i·(c_i−x_i),再走原有 max_frac 逐维截断。外周细胞(定义型空间边界)位移被衰减,内部细胞全强度收缩。+3. 单输入阶段退路:门控只作用于坐标平滑步,不依赖输入阶段数;单阶段分支无平滑、门控不触发,行为与父一致。+4. 视图无关:门控只依赖坐标与标签的几何,无绝对时间、无路径/视图判断。 -## 免费诊断结果(0 次查分)+## 机制生效证据(seed 0,全部 17616 细胞参与平滑,0 跳过) -本视图 external/ 只挂了 `mosta_e95_v0`(MOSTA E9.5 空间数据,496/500 基因重叠,但类型词汇为 Brain/Heart/Mesenchyme 等粗标签,与本板 E8.25/E9.5 官方词汇(V-CM、EXE-Endoderm…)**零交集**);PLAN 预期的 Qiu 2024 E9.0 未挂载。→ 按 PLAN 条款走**对角退路**:r_g 用本板该型自身 SD 结构,f_g = 1+β 均匀双向外扩(`var_source` 日志确认为 `diagonal`)。--## 机制生效证据(seed 0,全部 17616 细胞被改动,0 跳过)--| β | 方差比 after/before | mean\|Δμ_type\| | 改变>1%细胞比例 |-|---:|---:|---:|---:|-| 0.05 | 1.071 | 0.013 | 99.99% |-| 0.15 | 1.222 | 0.040 | 100% |-| 0.30 | 1.468 | 0.079 | 100% |+| 配置 | radius_retention | mean w | w=0 比例 | corr(disp, d/R) | mean disp/SD |+|---|---:|---:|---:|---:|---:|+| 关闭对照(gate=inf) | 0.9457 | 1 | 0 | – | 0.176 |+| gf=1.5, gp=1 | 0.9910 | 0.33 | 8.5% | −0.43 | 0.064 |+| gf=2.0, gp=2 | 0.9694 | 0.71 | 2.3% | −0.14 | 0.132 | -方差随 β 单调上升、型均值近似不动(Δμ 仅来自 clip≥0)、上/下均值细胞反向远离 → 是离散度变换而非位置平移(与常数位移可区分:常数位移型均值移动、方差不变)。坐标、细胞数、类型组成完全不动 → local_spatial/shape_scale 仅经表达相关项微动,符合 PLAN 预期指纹。+- 每型 RMS 半径保留从对照 0.946 升到 0.969–0.991(PLAN 预期 ≥0.95 达成);+- 位移幅度与归一化径向距离负相关(r=−0.14…−0.43,功率 1 时更强;未全部达 r<−0.5,因 max_frac 截断与 kNN 位移本身的空间结构稀释了相关);+- 与常数位移可区分:型心近似不动(位移指向 kNN 邻域质心、幅度按径向位置调制),改变的是型内空间分布的形状/延展,非整体位置。+- 四组分指纹符合 PLAN 预期:坐标-only 改动 → cell_state / expression_change 逐位不变(65.93 / 63.83),shape_scale 上升、local_spatial 下降(见下表)。 -## 对照结果(mechanism_off_control)+## 对照结果(mechanism_off_control,vec-score A 半,seed 0,共 8 次查分) -`--qiu-var 0`(默认值)完全跳过增强步。关闭态输出与父节点19(=父17)管线输出 **X 与 spatial_3D 均 np.array_equal = True**(逐位一致,本节点直接验证);查分确认四组分与节点19 A 半记录逐一相同(65.93/63.83/61.70/52.68,board 61.033)。+关闭态 `--gate-frac inf`(=默认)输出与父节点 17/19/20 管线 **X 与 spatial_3D 均 np.array_equal=True**(本节点直接验证),A 半分沿用父记录 61.033(65.93/63.83/61.70/52.68),未重复耗额度。 -## 机制检验:方向弱正、幅度不足(vec-score A 半,seed 0,共 5 次查分)+| 配置 (gate_frac, gate_power, max_frac[, strength]) | board | Δboard | shape_scale | local_spatial |+|---|---:|---:|---:|---:|+| 关闭对照(=父) | 61.033 | – | 52.68 | 61.70 |+| 2.0, 2, 0.45 | **61.093** | **+0.06** | 54.13 (+1.45) | 60.49 (−1.21) |+| 2.0, 1, 0.45 (s=2.5, mf=0.65) | 60.946 | −0.09 | 53.21 | 60.82 |+| 2.0, 1, 0.65 | 60.605 | −0.43 | 53.85 | 58.82 |+| 2.0, 1, 0.45 | 60.602 | −0.43 | 53.89 | 58.76 |+| 1.5, 1, 0.45 (s=3.0, mf=0.65) | 60.645 | −0.39 | 53.50 | 59.33 |+| 1.5, 2, 0.45 | 60.500 | −0.53 | 53.41 | 58.84 |+| 1.5, 1, 0.65 | 60.214 | −0.82 | 53.99 | 57.12 |+| 1.5, 1, 0.45 | 60.211 | −0.82 | 53.98 | 57.11 | -| 配置 | board | cell_state | expression_change | local_spatial | shape_scale |-|---|---:|---:|---:|---:|---:|-| 关闭对照 β=0(=父) | 61.033 | 65.93 | 63.83 | 61.70 | 52.68 |-| β=0.05 对角 | 61.091 (+0.06) | 66.13 (+0.20) | 63.57 (−0.26) | 61.98 | 52.68 |-| β=0.15 对角 | 61.085 (+0.05) | 66.20 (+0.27) | 63.41 (−0.42) | 62.05 | 52.68 |-| β=0.30 对角 | 60.663 (−0.37) | 65.40 (−0.53) | 63.59 (−0.24) | 60.98 | 52.68 |+**机制检验结论:方向证实、净增益证伪。** 门控确实解除 shape_scale 对平滑强度的约束(+0.7…+1.45,单调于门控强度),PLAN 风险 1 成真:外周细胞恰是 local_spatial(neighborhood_mmd)最依赖的细胞,其位移衰减造成的损失是形状增益的 2–3 倍(局部/形状交换比 ≈ −2.5:1)。补偿性提高 strength/max_frac 只同时侵蚀两者(半径保留下降),无一配置净超 +0.1。最优 +0.06 << +1 止损阈值 → **按 PLAN 止损条款以 gate_frac=inf 关闭态提交**。 -cell_state 随 β 先微升后降(峰值 ~0.15),expression_change 微降,净榜分增益 ≤ +0.06,远小于 1 分止损阈值(PLAN 步骤3:三档全部未超对照 +1 → 提交 β=0)。**未提交非零 β** 的理由:+0.05 在 A/B 半与种子噪声内无法区分,且以 expression_change 下降为代价。这与节点19合起来给出双侧证据:型内方差在本 board 已接近参考最优(收窄 −4.76/5%方差、放大 +0.27/22%方差),表达侧对角/低通类修饰均已到顶。+与节点 21(r/SD 归一化的边界权重,61.35 B 半)合起来:两种归一化、三种门控形状(线性/平方/梯形)都给出同一交换比,径向门控家族在本 board 已到顶——kNN 平滑的收益主体来自对外周噪声细胞的收缩本身,"保边界、缩内部"不成立。 ## 提交内容 -默认参数即关闭态,输出与父节点17/19逐位一致(零损失保底)。`vec-check` 通过;seed 0/1 各自确定运行;`EXECUTION.json` 为 `{"gpu": false}`。+默认参数即关闭态,输出与父节点 17/19/20 逐位一致(零损失保底)。`vec-check` 通过(status ok);seed 0/1 各自确定(重复运行 np.array_equal 验证);`EXECUTION.json` 为 `{"gpu": false}`;无 ARTIFACTS。 ## 生物学知识来源 -无新增外部生物学知识。外部先验使用逻辑仅依赖视图自带 `external/` 数据(本视图为 MOSTA E9.5,已合规过滤),且因类型词汇不可映射而未实际使用其数值。+无新增外部生物学知识;门控是纯几何机制(到型质心的径向距离),只使用视图内数据。 ## 未验证 -- 外部(Qiu 类)方差比路径的实际效果:本视图无可用外部 scRNA(类型词汇零交集),`_load_external_prior` 的比值分支只在代码层验证了触发条件,未能在数据上跑通端到端;若 final 视图挂载了词汇可映射的 Qiu E9.0,该分支会自动启用(但仍受 β 默认 0 保护,不会改变提交行为)。-- β ∈ (0.15, 0.3) 细网格与 clip 前负值处理变体(止损后不再消耗额度)。-- B 半与 final 视图(关闭态与父逐位一致,迁移性等同父节点17)。+- gate_frac ∈ (2.0, ∞) 的更弱门控细网格(gf=2.5/3.0, gp=2):趋势外推净增益在 +0.06 附近封顶且随门控→0 收敛到对照,止损后不再耗额度。+- 非径向的门控坐标(如按 kNN 位移方向与径向的夹角门控)与 B 半/final 视图(关闭态与父逐位一致,迁移性等同父节点 17)。diff --git a/solution/run.py b/solution/run.pyindex be31d54..01fa9f8 100644--- a/solution/run.py+++ b/solution/run.py@@ -69,11 +69,21 @@ ANISO = False # per-axis SD correction: also falsified (occupancy_dice drop); o ANISO_DAMP = 1.0 K_ADAPTIVE = True # k_eff = min(k, max(3, m-1)): smooth small types instead of skipping (robustness for finer type vocabularies; no-op when all types >= k+1) QIU_VAR = 0.0 # family T2HI-08: per-type variance expansion exponent beta; 0 = off (control, bit-identical to parent node 19/17)+GATE_FRAC = float("inf") # family T2HI-04-gate: radial peripheral gating radius x per-type median distance to type centroid; inf = off (control, bit-identical to parent)+GATE_POWER = 1.0 -def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, max_frac: float, adaptive: bool = False):+def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, max_frac: float, adaptive: bool = False,+ gate_frac: float = float("inf"), gate_power: float = 1.0): """Per-type kNN contraction toward neighbour centroid, capped by type coord SD. + Family T2HI-04-gate: when gate_frac is finite, each cell's displacement is+ multiplied by a radial gate weight w_i = clip(1 - (d_i / (gate_frac *+ R_type))**gate_power, 0, 1), where d_i = ||x_i - mu_type|| and R_type =+ median(d_i) for that type. Peripheral cells (which define the type's+ spatial envelope) keep their coordinates; interior cells contract at full+ strength. gate_frac=inf gives w_i=1 everywhere (parent behaviour).+ Returns (new_coords, evidence dict). Coordinates are modified in place-safe (a copy is returned); cells of types with < k+1 members are left untouched. """@@ -85,6 +95,10 @@ def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, n_skipped_types = 0 n_skipped_cells = 0 disp_over_sd = []+ gate_ws: list = []+ gate_rel: list = []+ smoothed_idx: list = []+ all_smoothed_idx: list = [] for lab in np.unique(labels): idx = np.flatnonzero(labels == lab) m = idx.size@@ -109,6 +123,17 @@ def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, continue centroid = pts[neigh].mean(axis=1) # (m, 3) d = strength * (centroid - pts) # (m, 3)+ if np.isfinite(gate_frac):+ mu_t = pts.mean(axis=0)+ dist = np.linalg.norm(pts - mu_t, axis=1)+ R = float(np.median(dist))+ if R > 0:+ u = dist / (gate_frac * R)+ w = np.clip(1.0 - np.clip(u, 0.0, None) ** gate_power, 0.0, 1.0)+ d = d * w[:, None]+ gate_ws.append(w)+ gate_rel.append(dist / R)+ smoothed_idx.append(idx) # proportional truncation so no dimension exceeds its cap with np.errstate(divide="ignore", invalid="ignore"): ratio = np.where(cap[None, :] > 0, np.abs(d) / np.where(cap[None, :] > 0, cap, 1.0), 0.0)@@ -117,6 +142,7 @@ def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, d = d * scale[:, None] delta[idx] = d n_smoothed += m+ all_smoothed_idx.append(idx) # realised |disp| / (type coord SD) mean ratio (diagnostic) with np.errstate(divide="ignore", invalid="ignore"): per = np.where(sd[None, :] > 0, np.abs(d) / np.where(sd[None, :] > 0, sd, 1.0), 0.0)@@ -131,6 +157,26 @@ def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, "mean_disp_over_sd": float(np.mean(disp_over_sd)) if disp_over_sd else 0.0, "max_abs_delta": float(np.abs(delta).max()) if n else 0.0, }+ # mechanism evidence: per-type RMS radius retention (cell-count weighted)+ num = den = 0.0+ for idx in all_smoothed_idx:+ pre = coords[idx]+ post = new_coords[idx]+ r_pre = float(np.sqrt(((pre - pre.mean(axis=0)) ** 2).sum(axis=1).mean()))+ r_post = float(np.sqrt(((post - pre.mean(axis=0)) ** 2).sum(axis=1).mean()))+ num += r_post * idx.size+ den += r_pre * idx.size+ ev["radius_retention"] = float(num / den) if den > 0 else 1.0+ if gate_ws:+ gw = np.concatenate(gate_ws)+ gr = np.concatenate(gate_rel)+ si = np.concatenate(smoothed_idx)+ dmag = np.linalg.norm(delta[si], axis=1)+ ev["gate_mean_w"] = float(gw.mean())+ ev["gate_frac_w_below_1"] = float((gw < 1.0).mean())+ ev["gate_frac_w_zero"] = float((gw <= 0.0).mean())+ if gr.std() > 0 and dmag.std() > 0:+ ev["gate_corr_disp_vs_rel_dist"] = float(np.corrcoef(gr, dmag)[0, 1]) return new_coords.astype(np.float32), ev @@ -393,6 +439,8 @@ def main() -> None: parser.add_argument("--k-expr", type=int, default=K_EXPR) parser.add_argument("--qiu-var", type=float, default=QIU_VAR) parser.add_argument("--var-source", choices=("auto", "diag", "ext"), default="auto")+ parser.add_argument("--gate-frac", type=float, default=GATE_FRAC)+ parser.add_argument("--gate-power", type=float, default=GATE_POWER) args = parser.parse_args() manifest = load_manifest(args.data)@@ -434,7 +482,8 @@ def main() -> None: labels = np.concatenate([labs_a, labs_b]) if args.strength != 0.0: coords, ev = _knn_smooth(coords, labels, args.k, args.strength, args.max_frac,- adaptive=(args.k_adaptive == "on"))+ adaptive=(args.k_adaptive == "on"),+ gate_frac=args.gate_frac, gate_power=args.gate_power) if args.rescale_damp != 0.0 or args.aniso == "on": coords, ev2 = _rms_restore(coords, float(info["target_rms"]), args.rescale_damp, args.aniso == "on", args.aniso_damp, stage_a, stage_b, t,@@ -457,7 +506,8 @@ def main() -> None: "pca_norm": args.pca_norm, "rescale_damp": args.rescale_damp, "aniso": args.aniso, "aniso_damp": args.aniso_damp, "k_adaptive": args.k_adaptive, "expr_alpha": args.expr_alpha, "k_expr": args.k_expr,- "qiu_var": args.qiu_var, "var_source": args.var_source, **ev}, default=float), file=sys.stderr)+ "qiu_var": args.qiu_var, "var_source": args.var_source,+ "gate_frac": args.gate_frac, "gate_power": args.gate_power, **ev}, default=float), file=sys.stderr) write_t2(args.out, expr, coords, 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:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在 _knn_smooth 中新增 T2HI-04 径向门控(w_i=clip(1-(d_i/(gate_frac*R_type))^gate_power,0,1),R_type=型内中位半径,位移乘 w 后再走 max_frac 截断),搜了 8 个配置;最优 +0.06 远低于 +1 止损阈值,按 PLAN 以 gate_frac=inf 关闭态提交,输出与父 17/19/20 逐位一致(np.array_equal 验证),故榜分与四组分全部 +0.00。 |
|---|---|
| 各组分数的变化 | board:+0.00(61.41,关闭态提交=父逐位一致) cell_state:不变 +0.00(66.70,提交为关闭态) expression_change:不变 +0.00(63.90,坐标-only 改动,提交为关闭态) local_spatial:提交态不变 +0.00(62.34);搜索中门控开启态 −1.2…−4.6,最优配置 −1.21,损失约为形状增益的 2–3 倍 shape_scale:提交态不变 +0.00(52.70);搜索中门控开启态最高 +1.45(gf=2.0,gp=2:52.68→54.13,A 半) |
| family_id | T2HI-04 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 3 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 3 次:bash 1、read 1、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 13,007 · 输出 1,115 · 思考 1,253 |
| 任务(第一行) | 分析节点 n22 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/analyst.jsonl 10 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 30 |
| 工具调用 | 共 35 次:bash 21、edit 9、read 3、grep 1、write 1 |
| 用时 | 11 分 |
| token 数 | 输入 65,002 · 输出 8,880 · 思考 8,654 |
| 任务(第一行) | 按计划修改程序:型内kNN平滑外周门控:保留型边界形状、增强内部致密化 |
| 最后的回答(摘录) | Final verification is complete. Wrapping up: **做了什么**:在父管线(节点20,61.41)的 `_knn_smooth` 中按 PLAN 实现 T2HI-04 径向门控(w_i=clip(1−(d_i/(gate_frac·R_type))^gate_power,0,1),R_type=型内中位半径),跑了 PLAN 网格 6 配置 + 2 个强度补偿变体,共 8 次查分。 **查分结果**(A 半,对照=父关闭态 61.033):机制方向证实——半径保留 0.946→0.969–0.991,shape_scale 最高 +1.45(gf=2.0,gp=2),但 local_spatial 损失是形状增益的 2–3 倍(交换比 ≈ −2.5:1),最优配置仅 61.093(+0.06 << +1 止损阈值)。按 PLAN 止损以 gate_frac=inf 关闭态提交,输出与父 17/19/20 逐位一致(np.array_equal 验证),vec-check 通过,seed 0/1 确定。 **下一步最值得试**:径向门控家族(节点21+本节点,两种归一化、三种门控形状)已到顶,不建议再投;表达侧按父节点建议走"型×基因时间轨迹重加权 mix 的 A/B 阶段贡献"(expression_change 63.90 至今未被撼动),或按型重塑基因间共变结构(低秩/旋转,保边际 SD)攻 cell_state。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/engineer.jsonl 186 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 7 分 |
| token 数 | 输入 12,483 · 输出 11,635 · 思考 8,192 |
| 任务(第一行) | 为节点 n22(改进,父节点 n20)写改进计划 PLAN.json |
| 最后的回答(摘录) | separately: shape_scale should improve, local_spatial should be maintained
- Per-cell displacement magnitude should correlate with centrality (interior cells displaced more)
Let me write the JSON now.
</content>
</invoke>
</tool_args>
</tool_call>
```json
{
"name": "型内kNN平滑外周门控:保留型边界形状、增强内部致密化",
"motivation": "父管线(节点17/19/20,61.41)四组分中 shape_scale 最弱(52.70),且从节点2(53.37)到节点17(52.70)随 max_frac 0→0.45 单调下降 −0.67,说明 kNN 平滑的向心收缩在改善 local_spatial(+8.31)的同时侵蚀了型的空间延展/形状。节点17 记录 mf 0.2–0.8 板分平台(61.0–61.1),表明更高 mf 的 local_spatial 增益被 shape_scale 损失抵消。若能选择性保留外周细胞(定义型边界/形状)的坐标不动、仅对内部细胞做收缩,就能解除 shape_scale 对 mf 的约束,同时提升两组。",
"approach": "在父管线 _knn_smooth 中新增外周门控权重:对每型计算 R_type=median(||x_i−μ_type||),细胞门控权重 w_i=clip(1−(d_i/(gate_frac×R_type))^gate_power, 0, 1),位移乘以 w_i 后再走原有 max_frac 截断。参数初值与搜索:gate_frac∈{1.5, 2.0}(1.5=中位半径以内为全平滑区),gate_power∈{1, 2},max_frac∈{0.45, 0.65}。共 4–6 个配置,每配置 1 次 vec-score,总计 ≤8 次查分。止损:若最优配置 board 未超对照 +1,提交 gate_frac=∞(w=1,与父逐位一致)。单输入阶段退路:门控仅作用于坐标平滑步,不依赖输入阶段数;单阶段分支无平滑、门控不触发,行为不变。",
"expected_groups": ["shape_scale", "local_spatial"],
"risks": "1) 外周细胞恰好是最需要平滑的噪声细胞,门控反而降低 local_spatial——若 gate_frac=1.5 的 local_spatial 比对照低 >0.5 即发现;2) shape_scale 恢复幅度 <0.3(噪声内),净增益不足——第 2 次查分即可判断方向;3) gate_power=2 过于激进导致内部/外周不连续——检查四组分中 local_spatial 是否异常。",
"family_id": "T2HI-04",
"mechanism": "按细胞到型心的归一化距离对 kNN 平滑位移做径向门控:外周细胞(定义型空间边界)位移被衰减,内部细胞保持全强度收缩,从而在保留型的空间延展/形状的同时致密化内部。",
"vs_constant_shift": "常数位移对型内所有细胞施加相同向量(型心移动、方差不变);本机制按细胞径向位置施加不同幅度的收缩(型心近似不动、外周保持、内部收窄),改变的是型内空间分布的形状而非整体位置。",
"mechanism_evidence": "1) 每型 RMS 半径:门控版应比无门控(对照)保留更多(目标 ≥95% vs 对照 ~90%);2) 位移幅度与 d_i/R_type 的负相关(Pearson r<−0.5);3) shape_scale 相对对照提升 ≥0.3 且 local_spatial 不降 >0.5;4) 四组分指纹:shape_scale↑ + local_spatial→/↑ + cell_state/expression_change 不变(坐标-only 改动)。",
"mechanism_off_control": "--gate-frac inf(或 --gate-off)使 w_i=1 对所有细胞成立,位移公式退化为原版 _knn_smooth,输出与父节点17/19/20 逐位一致(np.array_equal 验证)。预期差别:关闭态四组分与父完全相同;开启态 shape_scale 上升、local_spatial 持平或微升。",
"sources": []
}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/researcher.jsonl 47 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 7 |
| 工具调用 | 共 11 次:read 6、bash 4、write 1 |
| 用时 | 不到 1 分 |
| token 数 | 输入 22,852 · 输出 1,440 · 思考 811 |
| 任务(第一行) | 审查节点 n22 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/reviewer.jsonl 115 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/22/reviewer.stderr |