总览 · ← 返回运行 20261003-094241-search-t2-heart-interp-g24-D-s2
节点 n8
在父节点 mix+两遍 NN 坐标位移上,给同型位移 pass 加逐细胞过冲截断:位移范数上限 = 1.2×到对侧同型 kNN 质心的距离,消除高 α2 过冲悬崖,表达不动。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-094241-search-t2-heart-interp-g24-D-s2 |
|---|---|
| 父节点 | n5 |
| 子节点 | n11 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 60.80(+0.5) · proxy 60.80(+0.5) · 3 次复测均分 60.53 |
| 审查 | 通过 检查1 越界读取:未发现问题——run.py 仅经 load_manifest/read_stage/interp_bracket/panel_genes 从 args.data 视图读取(run.py:153-163),无绝对路径/../、/mnt、/home、data/raw、downloads、打分器或 src/common/evaluation,无联网。; 检查2 硬编码目标统计量:未发现问题——常量仅为方法超参 ALPHA=0.3/K=10/ALPHA2=3.0/CLIP_FRAC=1.2/align=procrustes(run.py:46-51),无细胞类型比例表、平均表达、基… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 12 分 |
| 程序版本 | 152a97c6c583511158c3fe6870e81ca36d482666 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 152a97c6c5:solution/METHOD.md
在父节点 mix+两遍 NN 坐标位移上,给同型位移 pass 加逐细胞过冲截断:位移范数上限 = 1.2×到对侧同型 kNN 质心的距离,消除高 α2 过冲悬崖,表达不动。
方法(family T2HI-02,PLAN:同型位移过冲截断 + alpha2 扩展扫描)
- 母管线原样:procrustes 对齐 → log 线性目标 RMS → 按 (1−t, t) 分型分层抽真实细胞(表达+坐标一起走)→ 全局 kNN 收缩 α=0.3 → 同型 kNN 共位化 α2=3.0、k=10。
- 新增截断(只作用于同型 pass):每细胞位移 d = f·(centroid−pos),f ∈ {α2·t, α2·(1−t)};若 |d| > CLIP_FRAC·|centroid−pos|(默认 CLIP_FRAC=1.2)则缩放 d 到该上限。由于 d 与 (centroid−pos) 共线,截断等价于把有效因子逐 pass 封顶为 min(f, 1.2):A 细胞 min(3.0·t, 1.2)、B 细胞 min(3.0·(1−t), 1.2),把父节点不对称的 (1.2, 1.8) 变成对称 (1.2, 1.2)——B 细胞不再飞过对侧质心。截断是逐细胞自适应的(上限取决于各细胞自己的质心距)。
- 表达完全不动;位移后 |log(RMS/target)|>0.05 才重缩放(未触发)。
- 单输入退路:b=None 时跳过位移。默认参数在代码常量里,视图无关(只用时间差 t,不用绝对时间/board 字段)。
- 确定性:cKDTree 与截断均确定;rng 只来自 --seed。
机制生效证据(proxy, seed 0, α2=3.0, CLIP_FRAC=1.2, k=10)
- 截断触发率:A 细胞 10.5%、B 细胞 32.3% 被 clip(其余为无同型对侧匹配、位移 0 的细胞);B 细胞平均位移从父节点 86.4 降到 59.6(≤ 到同型质心距的 1.2 倍),位移分布更集中。
- neighborhood_mmd raw:父 0.0789 → 0.0775(seed 1: 0.0824→0.0783;seed 2: 0.0804→0.0771,三个 seed 一致改善)。
- 形状三项同向改善:d2_shape 0.0344→0.0326、occupancy_dice 0.828→0.840、scale_log_ratio 0.423→0.421。
- 表达两组(de_score/de_direction)与细胞状态两组(mmd_u/variogram)raw 逐位不变,证实只动了坐标。
机制关闭对照(mechanism_off_control)
T2_NN_CLIP=0:输出与父节点 5 的预测逐位相同(np.array_equal 验证 X 与坐标),差 0 分——截断机制本身是全部差异来源。T2_NN_ALPHA=0:位移全零,退化为纯 mix(=节点 2),父节点已验证逐位相同。提交默认两者都打开(CLIP=1, CLIP_FRAC=1.2, α=0.3, α2=3.0)。
vec-score 网格(proxy A 半,seed 0,噪声约 ±1;17/20 次查分)
| 配置(有效因子 A/B) | 榜分 | shape_scale | local_spatial | nbd raw |
|---|---|---|---|---|
| 父节点 no-clip (1.2/1.8) | 59.82 | 54.67 | 54.85 | 0.0789 |
| clip f=1.0 α2=3 (1.0/1.0) | 59.75 | 53.93 | 55.33 | 0.0774 |
| clip f=1.0 α2=2 (0.8/1.0) | 59.53 | 53.41 | 54.94 | 0.0786 |
| clip f=1.0 α2=5(=饱和同 f1.0 α2=3) | 59.75 | 53.93 | 55.33 | 0.0774 |
| clip f=1.2 α2=3 (1.2/1.2) | 60.25 | 55.94 | 55.30 | 0.0775 |
| clip f=1.4 α2=3.5 (1.4/1.4) | 59.99 | 55.11 | 55.09 | 0.0782 |
| clip f=1.6 α2=4.0 (1.6/1.6) | 59.84 | 54.90 | 54.70 | 0.0794 |
| clip f=1.6 α2=3 (1.2/1.6) | 60.04 | 55.38 | 55.04 | 0.0783 |
| clip f=1.2 α2=2.5 (1.0/1.2) | 59.76 | 53.95 | 55.35 | 0.0773 |
| clip f=1.2 α2=3, k=5 | 60.28 | 55.91 | 55.45 | 0.0770 |
| clip f=1.2 α2=3, k=20 | 60.08 | 55.34 | 55.23 | 0.0777 |
PLAN 的 α2 扫描在截断下饱和(α2≥3 时因子都被封顶到 CLIP_FRAC,α2=3 与 5 输出逐位相同),故改为直接扫 CLIP_FRAC。k=5 与 k=10 差 0.03(噪声内),保留 k=10 与父一致。
多 seed(A 半):本配置 60.25 / 60.59 / 60.45(seed 0/1/2,均值 60.43);父节点 59.82 / 59.84 / 59.94(均值 59.87)。三个 seed 全胜,Δ 均值 +0.56,nbd raw 三个 seed 一致下降;单项 Δ 仍在 ±1 噪声内,但四组分方向一致。
验证过 / 没验证
- 验证过:CLIP=0 逐位复现父节点;ALPHA=0 纯 mix 退路;默认参数输出与 best 配置逐位一致;vec-check 通过;seed 0/1/2 多 seed 查分;上表 17 次查分。
- 没验证:final/真实括号(E8.25+E8.75→E8.5,t 与共有类型数不同:31 型、跨阶段同型距更小,截断触发率会更低,行为趋于父节点,方向应一致不会更差);外推榜不适用(本代码是插值管线)。
- 风险:+0.56(A 半)低于 1 分噪声阈值,正式分(B 半)未必兑现;但截断在几何上是纯保护性的(防止细胞飞过对侧质心),不存在把分数打崩的机制。
- 生物学依据:同型细胞跨阶段空间共位化对应"同一谱系区域在发育中保持空间毗邻"的通用组织学知识;截断防止细胞穿过其同源区域中心到另一侧。未使用任何保留阶段数据、比例或标记基因;参数全部由替代评测反馈选定。
调研员的计划
| 名称 | 同型位移过冲截断 + alpha2 扩展扫描 |
|---|---|
| 动机 | 父节点5(60.30)的 neighborhood_mmd skill 仅 0.554(权重25分,离地板最近、headroom最大),同型位移 alpha2=3.0 时 B 细胞平均位移已达云 RMS 的25%,alpha2=4.0 即崩至58.30(过冲悬崖)。ANALYSIS 明确指出最优点在过冲边缘,建议加截断后放开 alpha2。local_spatial 55.39 和 shape_scale 55.19 是最弱两组,均受邻域门控。 |
| 做法 | 在父节点5管线(mix + procrustes + 全局kNN α=0.3)基础上,仅修改同型位移pass: 1. 过冲截断:每个细胞的位移向量范数上限 = 它到对侧同型kNN质心的欧氏距离。实现:disp_vec = alpha2t(centroid-pos); disp_norm = |disp_vec|; if disp_norm > |centroid-pos|: disp_vec = |centroid-pos|/disp_norm。对B细胞同理用(1-t)。这使 alpha2t>1 时细胞最多到达质心而不过冲。 2. 带截断的 alpha2 扫描:{2.0, 3.0, 4.0, 5.0, 7.0},k=10 固定。预期截断消除悬崖,最优点右移。 3. 在最优 alpha2 下微调 k ∈ {5, 10, 15, 20}。 4. 全局pass α=0.3 保持不变(已验证全局单独用会损害local_spatial)。 5. 单输入退路:b=None 时跳过位移,与父节点相同。 6. 用 vec-score 快速筛选:先跑截断版 alpha2=3.0 确认与父节点一致(截断在 alpha2*t≤1 时不生效),再扫高 alpha2。 7. 环境变量:T2_NN_CLIP=1(默认开),T2_NN_ALPHA2 扫描。关闭对照:T2_NN_ALPHA=0 退化为纯mix。 |
| 风险 | 1. 截断后位移场变为'所有远距离细胞都移动到质心',可能过于均匀化,反而不如部分位移(若 alpha2=3.0 截断后分数不升反降,说明当前最优点确实需要少量过冲)。Engineer 应在第一轮比较截断版 alpha2=3.0 与无截断版(应相同或极接近,因为 3.0*0.5=1.5>1 会触发截断,需确认)。2. 截断改变了位移分布的统计特性,可能影响 d2_shape/occupancy_dice;需同时监控形状三项。3. 若所有 alpha2 下截断版均不如无截断 alpha2=3.0,则回退到父节点配置。尽早发现:第一个查分点(截断+alpha2=3.0)若低于59.5即停止该方向。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 599d1d8e9a。改动的文件:solution/METHOD.md +35 −31、solution/run.py +38 −9
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 34cb3ea..c7a4dd7 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,44 +1,48 @@-mix 后加两遍阻尼 NN 坐标位移:全局 kNN(α=0.3) 收缩两朵云 + 同型 kNN(α2=3.0,k=10) 把同类型跨阶段细胞共位化,表达不动,位移后 RMS 偏离目标 >5% 才重缩放。+在父节点 mix+两遍 NN 坐标位移上,给同型位移 pass 加逐细胞过冲截断:位移范数上限 = 1.2×到对侧同型 kNN 质心的距离,消除高 α2 过冲悬崖,表达不动。 -## 方法(family T2HI-02,PLAN 的 NN 位移,加了同型配对分支)+## 方法(family T2HI-02,PLAN:同型位移过冲截断 + alpha2 扩展扫描) -1. 母节点 mix 管线原样保留:procrustes(共有类型质心 Kabsch,z 保持切片轴只定号)→ 两朵云缩放到 log 线性目标 RMS → 按 (1−t, t) 分型分层抽真实细胞,表达和坐标一起走。-2. 新增位移(`nn_displace`,scipy cKDTree):- - 第一遍(全局):每个 A 细胞向选中 B 细胞的 k=10 近邻质心位移 α·t·(nn_mean−pos),B 细胞对称位移 α·(1−t),α=0.3;- - 第二遍(同型):在位移后的云上,每个细胞只向**同 celltype** 的对侧细胞 kNN 质心位移,α2=3.0;对侧没有该类型(或该型细胞数为 0)的细胞不动。同型质心用逐类型 cKDTree 计算,标签由复现 `mix_indices(seed)` 得到(与 interpolate 内部选择逐位一致,有 assert 保护)。- - 表达完全不动,每个细胞保留真实测量向量。-3. 位移后 |log(RMS_out/RMS_target)|>0.05 时统一重缩放回目标 RMS(本次运行 RMS 346.3→331.3,log 差 0.044,未触发重缩放)。-4. 单输入退路:b 为 None 时完全跳过位移,与母节点相同。-5. 确定性:cKDTree 查询确定,rng 只来自 --seed;seed 7 复跑逐位一致(已验证)。+1. 母管线原样:procrustes 对齐 → log 线性目标 RMS → 按 (1−t, t) 分型分层抽真实细胞(表达+坐标一起走)→ 全局 kNN 收缩 α=0.3 → 同型 kNN 共位化 α2=3.0、k=10。+2. **新增截断(只作用于同型 pass)**:每细胞位移 d = f·(centroid−pos),f ∈ {α2·t, α2·(1−t)};若 |d| > CLIP_FRAC·|centroid−pos|(默认 CLIP_FRAC=1.2)则缩放 d 到该上限。由于 d 与 (centroid−pos) 共线,截断等价于把有效因子逐 pass 封顶为 min(f, 1.2):A 细胞 min(3.0·t, 1.2)、B 细胞 min(3.0·(1−t), 1.2),把父节点不对称的 (1.2, 1.8) 变成对称 (1.2, 1.2)——B 细胞不再飞过对侧质心。截断是逐细胞自适应的(上限取决于各细胞自己的质心距)。+3. 表达完全不动;位移后 |log(RMS/target)|>0.05 才重缩放(未触发)。+4. 单输入退路:b=None 时跳过位移。默认参数在代码常量里,视图无关(只用时间差 t,不用绝对时间/board 字段)。+5. 确定性:cKDTree 与截断均确定;rng 只来自 --seed。 -## 机制生效证据(α=0.3/α2=3.0/k=10,proxy seed 0)+## 机制生效证据(proxy, seed 0, α2=3.0, CLIP_FRAC=1.2, k=10) -- 位移非零且空间异质:A 细胞平均位移 33.7、B 细胞 86.4 个坐标单位(云 RMS 346),是同型跨阶段距离驱动的逐细胞向量,不是每型一个常向量(同型第二遍内每个细胞的位移取决于自己的 kNN 几何)。-- RMS 346.3→331.3,向真值方向(proxy 真值 E8.75 RMS≈217,log 比 0.47→0.41)移动。-- neighborhood_mmd raw 0.08286→0.0789(本节点所有配置中同型强位移一致改善:α2=2.0 时 0.0784);local_spatial 组 54.03→54.85。-- d2_shape 0.0401→0.0369、occupancy_dice 0.834→0.841、shape_scale 组 53.37→54.67。-- 表达四项(de_score/de_direction/mmd_u/variogram)raw 与母节点一致(组内差异仅评分器抽样噪声),证实表达未被触碰。+- 截断触发率:A 细胞 10.5%、B 细胞 32.3% 被 clip(其余为无同型对侧匹配、位移 0 的细胞);B 细胞平均位移从父节点 86.4 降到 59.6(≤ 到同型质心距的 1.2 倍),位移分布更集中。+- neighborhood_mmd raw:父 0.0789 → 0.0775(seed 1: 0.0824→0.0783;seed 2: 0.0804→0.0771,三个 seed 一致改善)。+- 形状三项同向改善:d2_shape 0.0344→0.0326、occupancy_dice 0.828→0.840、scale_log_ratio 0.423→0.421。+- 表达两组(de_score/de_direction)与细胞状态两组(mmd_u/variogram)raw 逐位不变,证实只动了坐标。 ## 机制关闭对照(mechanism_off_control) -`T2_NN_ALPHA=0` → 位移向量全零,输出与母节点预测**逐位相同**(`np.array_equal` 验证过 X 与坐标),即对照分 = 母节点 59.50。差 0 分 < 1 分,管线无 bug。开关为环境变量,提交默认打开(α=0.3, α2=3.0)。+- `T2_NN_CLIP=0`:输出与父节点 5 的预测**逐位相同**(np.array_equal 验证 X 与坐标),差 0 分——截断机制本身是全部差异来源。+- `T2_NN_ALPHA=0`:位移全零,退化为纯 mix(=节点 2),父节点已验证逐位相同。提交默认两者都打开(CLIP=1, CLIP_FRAC=1.2, α=0.3, α2=3.0)。 -## vec-score 网格(proxy,A 半,seed 0;噪声约 ±1)+## vec-score 网格(proxy A 半,seed 0,噪声约 ±1;17/20 次查分) -| 配置 | 榜分 | local_spatial | shape_scale | nbd raw |+| 配置(有效因子 A/B) | 榜分 | shape_scale | local_spatial | nbd raw | |---|---:|---:|---:|---:|-| 母节点 mix(=α=0 对照) | 59.50 | 54.03 | 53.37 | 0.08286 |-| 全局 α=0.1 / 0.3 | 59.14 / 59.35 | 53.17 / 52.55 | 53.65 / 55.10 | 0.0844 / 0.0865 |-| 同型 α=0.3 / 0.6 / 1.0 (k=5) | 59.18 / 59.22 / 59.00 | 53.7 | ~53.3 | 0.0826 |-| 全局0.3+同型0.3 (k=10) | 59.33 | 52.81 | 54.75 | 0.0856 |-| 全局0.3+同型1.0 (k=10) | 59.42 | 53.50 | 54.42 | 0.0833 |-| 全局0.3+同型2.0 (k=10) | 59.51 | 55.01 | 53.28 | 0.0784 |-| **全局0.3+同型3.0 (k=10)** | **59.82** | 54.85 | 54.67 | 0.0789 |-| 全局0.3+同型4.0 (k=10) | 58.30 | 52.86 | 50.58 | 0.0854 |+| 父节点 no-clip (1.2/1.8) | 59.82 | 54.67 | 54.85 | 0.0789 |+| clip f=1.0 α2=3 (1.0/1.0) | 59.75 | 53.93 | 55.33 | 0.0774 |+| clip f=1.0 α2=2 (0.8/1.0) | 59.53 | 53.41 | 54.94 | 0.0786 |+| clip f=1.0 α2=5(=饱和同 f1.0 α2=3) | 59.75 | 53.93 | 55.33 | 0.0774 |+| **clip f=1.2 α2=3 (1.2/1.2)** | **60.25** | **55.94** | 55.30 | 0.0775 |+| clip f=1.4 α2=3.5 (1.4/1.4) | 59.99 | 55.11 | 55.09 | 0.0782 |+| clip f=1.6 α2=4.0 (1.6/1.6) | 59.84 | 54.90 | 54.70 | 0.0794 |+| clip f=1.6 α2=3 (1.2/1.6) | 60.04 | 55.38 | 55.04 | 0.0783 |+| clip f=1.2 α2=2.5 (1.0/1.2) | 59.76 | 53.95 | 55.35 | 0.0773 |+| clip f=1.2 α2=3, k=5 | 60.28 | 55.91 | 55.45 | 0.0770 |+| clip f=1.2 α2=3, k=20 | 60.08 | 55.34 | 55.23 | 0.0777 |++PLAN 的 α2 扫描在截断下饱和(α2≥3 时因子都被封顶到 CLIP_FRAC,α2=3 与 5 输出逐位相同),故改为直接扫 CLIP_FRAC。k=5 与 k=10 差 0.03(噪声内),保留 k=10 与父一致。++多 seed(A 半):本配置 60.25 / 60.59 / 60.45(seed 0/1/2,均值 60.43);父节点 59.82 / 59.84 / 59.94(均值 59.87)。三个 seed 全胜,Δ 均值 +0.56,nbd raw 三个 seed 一致下降;单项 Δ 仍在 ±1 噪声内,但四组分方向一致。 ## 验证过 / 没验证 -- 验证过:α=0 对照逐位复现母节点;seed 确定性(seed 0/7);vec-check 通过;上表 9 个查分。-- 没验证:k 在最优 α2 下的敏感性(只测了 k=5/10);多 seed 稳定性(59.82 比 59.50 高 0.32,在 ±1 噪声内,但 local_spatial +0.8、shape +1.3 两组同向改善,且 nbd raw 改善方向在同型家族里一致);final 视图(E8.25+E8.75→E8.5,31 个共有类型,同型配对会更可靠、位移场更平滑)。-- 风险:α2=3.0 时 B 细胞平均位移 86(云 RMS 的 25%),同型跨阶段错位大时可能把细胞推过对侧;α2=4.0 已崩(58.3),最优点在过冲边缘。final 上类型更多、跨阶段同型距离更小,位移会更温和,方向应一致。-- 生物学依据:同型细胞跨阶段共位化对应"同一谱系/类型区域在发育中保持空间毗邻"的通用组织学知识;未使用任何保留阶段数据、比例或标记基因(来源:无外部文献,仅评分反馈驱动的参数选择)。+- 验证过:CLIP=0 逐位复现父节点;ALPHA=0 纯 mix 退路;默认参数输出与 best 配置逐位一致;vec-check 通过;seed 0/1/2 多 seed 查分;上表 17 次查分。+- 没验证:final/真实括号(E8.25+E8.75→E8.5,t 与共有类型数不同:31 型、跨阶段同型距更小,截断触发率会更低,行为趋于父节点,方向应一致不会更差);外推榜不适用(本代码是插值管线)。+- 风险:+0.56(A 半)低于 1 分噪声阈值,正式分(B 半)未必兑现;但截断在几何上是纯保护性的(防止细胞飞过对侧质心),不存在把分数打崩的机制。+- 生物学依据:同型细胞跨阶段空间共位化对应"同一谱系区域在发育中保持空间毗邻"的通用组织学知识;截断防止细胞穿过其同源区域中心到另一侧。未使用任何保留阶段数据、比例或标记基因;参数全部由替代评测反馈选定。diff --git a/solution/run.py b/solution/run.pyindex 1d71332..450a43e 100644--- a/solution/run.py+++ b/solution/run.py@@ -11,15 +11,22 @@ pass 1 (global, alpha=0.3): each stage-A cell is displaced by alpha·t·(kNN centroid in stage B − pos), stage-B cells symmetrically by alpha·(1−t). Pass 2 (same-type, alpha2=3.0): same displacement but the kNN centroid is taken only over other-stage cells of the SAME celltype (per-type cKDTree; cells whose type-is absent on the other side do not move). k=10. Expression is NOT touched —-every cell keeps its real measured profile. After displacement, coordinates are-rescaled to the log-linear target RMS only when |log(RMS_out/RMS_target)|>0.05,-keeping scale_log_ratio neutral.+is absent on the other side do not move). k=10. NEW: pass-2 displacements are+overshoot-clipped per cell — the displacement norm is capped at+CLIP_FRAC·|centroid−pos| (default 1.2), so no cell travels more than 1.2× the+distance to its same-type kNN centroid; this symmetrizes the effective factors+(A: min(alpha2·t, 1.2), B: min(alpha2·(1−t), 1.2)) and removes the overshoot+cliff at high alpha2. Expression is NOT touched — every cell keeps its real+measured profile. After displacement, coordinates are rescaled to the log-linear+target RMS only when |log(RMS_out/RMS_target)|>0.05, keeping scale_log_ratio+neutral. Mechanism off-control: set env T2_NN_ALPHA=0 — all displacement vectors become-zero and the pipeline is bit-identical to the parent mix (verified). Overrides:-T2_NN_ALPHA2, T2_NN_K, T2_NN_SAME_TYPE (0=global only, 1=same-type only,-2=both, default 2). Single-input fallback (b is None): no displacement.+zero and the pipeline is bit-identical to the parent mix (verified).+T2_NN_CLIP=0 disables clipping and reproduces node-5 behavior bit-for-bit+(verified). Overrides: T2_NN_ALPHA2, T2_NN_CLIP_FRAC, T2_NN_K, T2_NN_SAME_TYPE+(0=global only, 1=same-type only, 2=both, default 2). Single-input fallback+(b is None): no displacement. """ from __future__ import annotations@@ -40,6 +47,8 @@ PARAMS = {"align": "procrustes", "scale_damp": 1.0} ALPHA = float(os.environ.get("T2_NN_ALPHA", "0.3")) K = int(os.environ.get("T2_NN_K", "10")) ALPHA2 = float(os.environ.get("T2_NN_ALPHA2", "3.0"))+CLIP = bool(int(os.environ.get("T2_NN_CLIP", "1")))+CLIP_FRAC = float(os.environ.get("T2_NN_CLIP_FRAC", "1.2")) SAME_TYPE = bool(int(os.environ.get("T2_NN_SAME_TYPE", "2")))@@ -86,15 +95,31 @@ def nn_displace(coords, n_a, t, alpha, k, target_rms, labels=None): lab_a = labels[:n_a] if labels is not None else None lab_b = labels[n_a:] if labels is not None else None mode = int(os.environ.get("T2_NN_SAME_TYPE", "2"))+ clip_hits = {"a": 0, "b": 0}+ clip_tot = {"a": 0, "b": 0} if alpha > 0.0 and ca.shape[0] > 0 and cb.shape[0] > 0: passes = {0: [(False, alpha)], 1: [(True, alpha)], 2: [(False, alpha), (True, ALPHA2)]}[mode]++ def _move(pos, m2, frac, side, clip_on):+ vec = m2 - pos+ d = frac * vec+ if clip_on:+ dn = np.linalg.norm(d, axis=1)+ cap = CLIP_FRAC * np.linalg.norm(vec, axis=1)+ hit = dn > cap+ clip_hits[side] += int(hit.sum())+ clip_tot[side] += int(dn.size)+ d = np.where(hit[:, None], d * (cap / np.maximum(dn, 1e-12))[:, None], d)+ return pos + d+ for same_type, al in passes: a2 = out[:n_a] b2 = out[n_a:]+ clip_on = CLIP and same_type m2 = _nn_mean(b2, lab_b, a2, lab_a, k, same_type)- out[:n_a] = a2 + al * t * (m2 - a2)+ out[:n_a] = _move(a2, m2, al * t, "a", clip_on) m2 = _nn_mean(a2, lab_a, b2, lab_b, k, same_type)- out[n_a:] = b2 + al * (1.0 - t) * (m2 - b2)+ out[n_a:] = _move(b2, m2, al * (1.0 - t), "b", clip_on) disp_a_norm = float(np.linalg.norm(out[:n_a] - ca, axis=1).mean()) disp_b_norm = float(np.linalg.norm(out[n_a:] - cb, axis=1).mean()) rms_post = rms_radius(out)@@ -104,6 +129,10 @@ def nn_displace(coords, n_a, t, alpha, k, target_rms, labels=None): info = { "nn_alpha": alpha, "nn_k": k,+ "nn_clip": CLIP,+ "clip_frac": CLIP_FRAC,+ "clip_rate_a": clip_hits["a"] / max(clip_tot["a"], 1),+ "clip_rate_b": clip_hits["b"] / max(clip_tot["b"], 1), "disp_a_mean": disp_a_norm, "disp_b_mean": disp_b_norm, "rms_pre_disp": rms_pre,
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| 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:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父节点5管线(mix + procrustes + 全局kNN α=0.3 + 同型kNN α2=3.0,k=10)上,仅给同型位移pass加逐细胞过冲截断:位移范数上限 = CLIP_FRAC(1.2)×到对侧同型kNN质心距(T2_NN_CLIP开关)。α2扫描在截断下饱和(α2≥3输出逐位相同),实际改为扫CLIP_FRAC,1.2最优;表达完全不动。 |
|---|---|
| 各组分数的变化 | cell_state:噪声内(不变):mmd_u raw 0.03221、variogram raw 0.025418 逐位不变,得分 +0.00 expression_change:噪声内(不变):de_score raw 0.3298、de_direction raw 0.5159 逐位不变,得分 +0.00,证实表达未被触碰 local_spatial:+0.48(55.39→55.87):neighborhood_mmd raw 0.07847→0.07697(低于父节点,达成PLAN目标),skill 0.5539→0.5587,得分 +0.12。榜分总变化 +0.50 < T2 约1分噪声,在噪声内;但四个坐标相关raw项方向一致改善、两组表达raw逐位不变,且engineer的A半proxy多seed(+0.56均值、三seed全胜、nbd raw一致下降)与B半正式分同向,改善很可能真实但幅度小 shape_scale:+1.52(55.19→56.71),主要由 occupancy_dice 驱动:raw 0.8318→0.8436,得分 +0.26;d2_shape raw 0.0351→0.03337,得分 +0.11;scale_log_ratio raw 0.4244→0.4232,得分 +0.01。方向一致但单项幅度小 |
| family_id | T2HI-02 |
| 假设是否成立 | unclear |
| 经验 |
|
| mechanism_active | 是 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 3 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 3 次:bash 1、read 1、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 18,372 · 输出 1,282 · 思考 1,342 |
| 任务(第一行) | 分析节点 n8 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/analyst.jsonl 17 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 22 |
| 工具调用 | 共 25 次:bash 14、edit 7、read 3、write 1 |
| 用时 | 10 分 |
| token 数 | 输入 52,533 · 输出 8,940 · 思考 6,496 |
| 任务(第一行) | 按计划修改程序:同型位移过冲截断 + alpha2 扩展扫描 |
| 最后的回答(摘录) | 完成。在父节点5(mix + 全局/同型 NN 坐标位移)上给同型位移加了逐细胞过冲截断(位移范数 ≤ 1.2×到对侧同型 kNN 质心距),默认 α2=3.0、k=10 不变,表达不动。 - 查分(proxy A 半,17/20 次):best 配置 60.25/60.59/60.45(seed 0/1/2,均值 60.43)vs 父节点 59.82/59.84/59.94(均值 59.87),三 seed 全胜,nbd raw 一致下降(如 0.0789→0.0775),形状三项同向改善;截断下 α2 扫描饱和,改扫 CLIP_FRAC,1.2 最优。 - 对照:`T2_NN_CLIP=0` 与父节点输出逐位相同(差 0 分);`T2_NN_ALPHA=0` 退化纯 mix。vec-check 通过,默认输出与 best 逐位一致。 - 下一步最值得试:类型内软配对/OT 替代 kNN 质心(ANALYSIS 建议 3),或在 final 视图型多距小的情况下微调 CLIP_FRAC;也可试截断只作用于 B 侧(触发率 32%)看是否 A 侧过冲有益。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/engineer.jsonl 123 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 1 分 |
| token 数 | 输入 15,109 · 输出 1,074 · 思考 1,913 |
| 任务(第一行) | 为节点 n8(改进,父节点 n5)写改进计划 PLAN.json |
| 最后的回答(摘录) | ```json
{
"name": "同型位移过冲截断 + alpha2 扩展扫描",
"motivation": "父节点5(60.30)的 neighborhood_mmd skill 仅 0.554(权重25分,离地板最近、headroom最大),同型位移 alpha2=3.0 时 B 细胞平均位移已达云 RMS 的25%,alpha2=4.0 即崩至58.30(过冲悬崖)。ANALYSIS 明确指出最优点在过冲边缘,建议加截断后放开 alpha2。local_spatial 55.39 和 shape_scale 55.19 是最弱两组,均受邻域门控。",
"approach": "在父节点5管线(mix + procrustes + 全局kNN α=0.3)基础上,仅修改同型位移pass:\n1. 过冲截断:每个细胞的位移向量范数上限 = 它到对侧同型kNN质心的欧氏距离。实现:disp_vec = alpha2*t*(centroid-pos); disp_norm = |disp_vec|; if disp_norm > |centroid-pos|: disp_vec *= |centroid-pos|/disp_norm。对B细胞同理用(1-t)。这使 alpha2*t>1 时细胞最多到达质心而不过冲。\n2. 带截断的 alpha2 扫描:{2.0, 3.0, 4.0, 5.0, 7.0},k=10 固定。预期截断消除悬崖,最优点右移。\n3. 在最优 alpha2 下微调 k ∈ {5, 10, 15, 20}。\n4. 全局pass α=0.3 保持不变(已验证全局单独用会损害local_spatial)。\n5. 单输入退路:b=None 时跳过位移,与父节点相同。\n6. 用 vec-score 快速筛选:先跑截断版 alpha2=3.0 确认与父节点一致(截断在 alpha2*t≤1 时不生效),再扫高 alpha2。\n7. 环境变量:T2_NN_CLIP=1(默认开),T2_NN_ALPHA2 扫描。关闭对照:T2_NN_ALPHA=0 退化为纯mix。",
"expected_groups": ["local_spatial", "shape_scale"],
"risks": "1. 截断后位移场变为'所有远距离细胞都移动到质心',可能过于均匀化,反而不如部分位移(若 alpha2=3.0 截断后分数不升反降,说明当前最优点确实需要少量过冲)。Engineer 应在第一轮比较截断版 alpha2=3.0 与无截断版(应相同或极接近,因为 3.0*0.5=1.5>1 会触发截断,需确认)。2. 截断改变了位移分布的统计特性,可能影响 d2_shape/occupancy_dice;需同时监控形状三项。3. 若所有 alpha2 下截断版均不如无截断 alpha2=3.0,则回退到父节点配置。尽早发现:第一个查分点(截断+alpha2=3.0)若低于59.5即停止该方向。",
"family_id": "T2HI-02",
"mechanism": "同型跨阶段kNN位移加逐细胞过冲截断:每个细胞向对侧同型kNN质心位移,但位移范数不超过到质心的距离,防止过冲;截断后安全提高alpha2以增大有效位移量。",
"vs_constant_shift": "截断是逐细胞自适应的:每个细胞的位移上限取决于它自己到同型质心的距离(几何异质),不是每型一个常向量;位移方向由kNN局部几何决定,不是全局统一方向。关闭截断(T2_NN_CLIP=0)回到父节点行为。",
"mechanism_evidence": "1. 记录截断触发率(被clip的细胞比例):若>0说明机制在运行;2. 比较截断前后B细胞平均位移(应从86降至≤同型质心距均值);3. neighborhood_mmd raw 变化(目标<0.07847);4. 位移范数分布的std(截断后应更集中);5. 四组分各自变化确认表达不动。",
"mechanism_off_control": "T2_NN_CLIP=0 关闭截断,输出应与父节点5逐位相同(因为不截断就是原逻辑)。验证:np.array_equal 比较两版输出。预期差别=0分。",
"sources": []
}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/researcher.jsonl 4 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 7 |
| 工具调用 | 共 11 次:read 6、bash 4、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 21,621 · 输出 1,564 · 思考 2,722 |
| 任务(第一行) | 审查节点 n8 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/reviewer.jsonl 83 KB /home/spark-longxinyang/vec/runs/formal/20261003-094241-search-t2-heart-interp-g24-D-s2/nodes/8/reviewer.stderr |