总览 · ← 返回运行 20261003-004922-search-t2-heart-interp-g24
节点 n18 终选程序?按该运行锁定的规则最终选出的程序;可能是候选节点,也可能由护栏回退到基线。在终选来历上
chg_l2门控坐标位移已实现检验:α_low<1单调降分(机制证伪),保留α=1;转向加大高失配细胞表达过冲 γ=1.2→2.8、q=0.7→0.8,A半 60.76→61.35(seed1 61.55)。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-004922-search-t2-heart-interp-g24 |
|---|---|
| 父节点 | n16 |
| 子节点 | n19 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 61.87(+0.7) · proxy 61.87(+0.7) · 3 次复测均分 61.49 |
| 审查 | 通过 检查1 越界读取:未发现问题——run.py 仅通过 --data 参数经 load_manifest/read_stage/panel_genes 读取视图内输入(run.py:182-185,224),无绝对路径、'..'、/mnt、external、prior 或打分器路径访问,无联网。; 检查2 硬编码目标统计量:未发现问题——代码中的数值均为机制超参数(gamma=2.8、gate_q=0.8、min_count=30、seed+7919 等,run.py:245,253,302,320),所有细胞类型名、delta、分位数、NN 配对、型内方差均由两个 bracket 输入现场计… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 20 分 |
| 程序版本 | dcf313cf64740447bab1e5054425e6b7dab8a028 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git dcf313cf64:solution/METHOD.md
chg_l2门控坐标位移已实现检验:α_low<1单调降分(机制证伪),保留α=1;转向加大高失配细胞表达过冲 γ=1.2→2.8、q=0.7→0.8,A半 60.76→61.35(seed1 61.55)。
方法(family T2HI-04 → T2HI-01,improve 自节点 16)
流程与节点 16 相同:双 bracket 组成插值 → Procrustes 对齐 → 缩放到插值 RMS → 型内 NN 坐标融合(α=1.0)→ chg_l2 分位数门控的逐细胞表达混合 X_b <- X_b + γ*(X_a_nn − X_b)。
PLAN 机制(坐标门控):已实现,检验后被证伪,提交态关闭
新增 T2HI_ALPHA_LOW(+T2HI_GATE_Q_COORD,默认与表达门控同 q):对 chg_l2 低于门控阈值的被融合 b 细胞,把坐标位移从 α=1.0(落到 a 侧 NN 位置)回撤为 cb_pre + α_low*(ca_nn − cb_pre)。机制确实生效:α_low=0.5 时低失配组 1591 细胞位移 65.9(vs 高失配组 682 细胞 254.3),α_low=0 时低失配组位移为 0。
但方向错误(PLAN 风险 1 兑现):A 半分随 α_low 单调上升 60.11(0)→60.26(0.3)→60.36(0.5)→60.50(0.7)→60.76(1.0),local_spatial 同步单调 55.73→57.49,shape_scale 52.77→53.62,neighborhood_mmd 与 d2_shape 也全程单调。低失配细胞的 a 侧 NN 位移本身对局部空间与形状都有正贡献,"表达已匹配的细胞不该被搬移"的假设不成立。过冲方向 α_low=1.3 也降分(60.64)。提交态默认 T2HI_ALPHA_LOW=1.0(无操作对照),坐标逻辑与节点 16 逐位一致。
实际提交的改进:高失配细胞的表达过冲 γ 与门控 q 重扫
坐标门控失败后,沿父节点 next_suggestions #2/#3 扫 γ×q(均 α_low=1.0):
| 配置(q, γ) | A半榜分 | expr_change | cell_state | local_spatial | shape_scale |
|---|---|---|---|---|---|
| (0.7, 1.2) 节点16 | 60.76 | 66.05 | 65.87 | 57.49 | 53.62 |
| (0.7, 1.4 / 1.6) | 60.83 / 60.90 | 66.22 / 66.42 | 65.89 | 57.60 / 57.69 | 53.62 |
| (0.7, 1.8 / 2.0 / 2.4 / 3.0) | 60.97 / 61.02 / 61.16 / 61.17 | →67.27 | 65.6–65.9 | →58.14 | 53.62 |
| (0.6, 1.6) | 60.88 | 66.51 | 65.56 | 57.85 | 53.62 |
| (0.8, 1.6 / 2.0 / 2.4) | 60.93 / 61.14 / 61.27 | →67.56 | 66.17–66.20 | 57.6–57.7 | 53.62 |
| (0.85, 2.0 / 2.4) | 60.95 / 61.13 | 66.46 / 67.12 | 66.2 | 57.5 / 57.6 | 53.62 |
| (0.8, 2.8)(提交) | 61.35 | 67.82 | 66.13 | 57.81 | 53.62 |
- γ 与 q 存在补偿关系:q 越高(混合细胞越少)可承受的 γ 越大。q=0.8 保留 455/2273(20%)高失配细胞,γ=2.8 把它们大幅推向 a 侧 NN 表达之外(型内方差 604→3011),expr_change 66.05→67.82、cell_state 65.87→66.13、local_spatial 57.49→57.81 三组同升,shape_scale 不动(坐标未改)。
- γ=3.0/q=0.7 与 γ=2.4/q=0.7 平台在 61.16,γ=2.8/q=0.8 是网格内最高点;边界未完全探明(γ>2.8×q=0.8 与 q=0.9 未测,额度用尽)。
- 种子稳健性:提交配置 seed 1 = 61.55(节点 16 seed 1 为 60.99,+0.56 与 seed 0 的 +0.59 一致),非单种子噪声。
提交态默认与开关
- 默认:
T2HI_GATE_Q=0.8、T2HI_GAMMA=2.8、T2HI_ALPHA_LOW=1.0(坐标门控关)、T2HI_GATE_MODE=global。 - 机制关闭对照:坐标门控的 off 态即
T2HI_ALPHA_LOW=1.0(默认),输出与不门控逐元素一致(已验证);T2HI_GATE_Q=0.7 T2HI_GAMMA=1.2完整复现节点 16 输出(np.array_equal 验证 X+坐标)。 - 门控阈值来自当次运行 chg_l2 的现场分位数统计,γ 为全局标量但混合逐细胞异质(
X_b + γ*(X_a_nn−X_b),每细胞不同 NN),非常数位移。
验证过 / 未验证
- 已验证:默认输出=网格最优点 g2.8q0.8(逐元素);同 seed 两次运行一致;vec-check ok;~2s、<1GB;α_low∈{0,0.3,0.5,0.7,1.0,1.3} 全网格、γ∈{1.4,…,3.0}×q∈{0.6,0.7,0.8,0.85} 网格、seed1 复核。
- 未验证:正式分 B 半(A 半 +0.59 略高于噪声边缘,但 seed0/seed1 一致,且改动方向与父节点 lessons 的"多分组净增益>噪声"判据相符:expr_change +1.77、cell_state +0.26、local_spatial +0.32);真实括号 31 共有型上 γ=2.8 大幅过冲的最优性(proxy 仅 5 型、chg_l2 分布不同,q=0.8 在真实括号保留的细胞比例未知);γ=2.8 使型内方差扩到 3011(节点16 为 758),若真实评测的 mmd/variogram 对离群表达更敏感可能回吐。
知识来源
未使用任何保留阶段/基因型信息或文献数值;所有统计量(chg_l2、分位数、NN 配对、型内方差)均由两 bracket 输入现场计算。细胞类型名仅用于型内 NN 配对(来自输入 obs 标签)。external/ 与 prior/ 未使用。
调研员的计划
| 名称 | chg_l2门控坐标位移:低失配细胞降低α修复local_spatial |
|---|---|
| 动机 | 节点16四组中local_spatial(57.89)是唯一相对前代(节点14的58.29)下降的组(-0.40),shape_scale(54.46)自节点10起未动。ANALYSIS建议1明确指出:把chg_l2门控同步应用到坐标位移。当前所有被融合b细胞无论表达失配程度均做α=1.0全位移,低失配细胞(表达已匹配其空间邻域)被强制移到a侧NN位置后,其表达-位置一致性反而被打破,导致local_spatial回吐。 |
| 做法 | 在节点16代码基础上,将已有的chg_l2全局q=0.7分位数门控从仅控制表达混合扩展为同时控制坐标位移α。具体:(1)计算每个被融合b细胞的chg_l2=||X_a_nn−X_b||(已有);(2)对chg_l2≥quantile(chg_l2,0.7)的高失配细胞:坐标α=1.0+表达gamma=1.2混合(与节点16相同);(3)对低失配细胞:坐标位移降为α_low,表达不混合(与节点16相同)。新增环境变量T2HI_ALPHA_LOW,默认0.5。网格:α_low∈{0, 0.3, 0.5, 0.7, 1.0}×q_coord∈{0.7}(先固定q与表达门控一致),共5次查分。若α_low=0.5有信号(≥+0.5),追加q_coord∈{0.5,0.6,0.8}×α_low最优值,再3次。总计≤8次查分,每次~2s,远在30分钟限内。单输入/不被bracket→t=0→copy_last,不触发。用vec-score逐次查proxy A半,以local_spatial+shape_scale净增益>1且cell_state/expr_change不降>0.5为通过标准。 |
| 风险 | 1)低失配细胞减少位移后,其Procrustes对齐位置本身可能不如a侧NN位置精确,local_spatial反而不升——Engineer应在α_low=0(完全不位移)时观察:若比α_low=1.0更差,说明位移本身对低失配细胞也有正贡献,机制假设不成立,如实报告。2)shape_scale对坐标变化的响应可能非线性,α_low改变后RMS微变但scale_to_rms已归一化,可能无感——若5个α_low的shape_scale全在±0.1内则判定该组无响应。3)chg_l2门控使坐标位移与表达混合耦合,若后续想独立调参需注意。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 54926029f6。改动的文件:solution/METHOD.md +29 −37、solution/run.py +56 −4
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex a293356..e16fd4d 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,52 +1,44 @@-按表达差异分位数门控NN表达混合(T2HI-01):只对被融合b细胞中 ||X_a_nn−X_b|| ≥ 全局 q=0.7 分位数的高失配细胞做 gamma=1.2 逐细胞混合,低失配细胞保持b侧原表达,修复 cell_state 回吐。+chg_l2门控坐标位移已实现检验:α_low<1单调降分(机制证伪),保留α=1;转向加大高失配细胞表达过冲 γ=1.2→2.8、q=0.7→0.8,A半 60.76→61.35(seed1 61.55)。 -## 方法(family T2HI-01,improve 自节点 14)+## 方法(family T2HI-04 → T2HI-01,improve 自节点 16) -流程与节点 14 完全相同:双 bracket 组成插值(t 分层抽样)→ Procrustes 对齐 → 缩放到插值 RMS → 每共有型 b 侧细胞向 a 侧同型最近邻坐标位移 α=1.0(型内 NN 融合)→ 拼接、_jitter、统一 scale_to_rms。**坐标与组成本节点未动**(shape_scale 与父节点逐位一致,符合"机制不动坐标"的预期)。+流程与节点 16 相同:双 bracket 组成插值 → Procrustes 对齐 → 缩放到插值 RMS → 型内 NN 坐标融合(α=1.0)→ chg_l2 分位数门控的逐细胞表达混合 `X_b <- X_b + γ*(X_a_nn − X_b)`。 -**新增机制(本节点)**:在父节点的逐细胞 NN 表达混合上加分位数门控。对每个被融合、被采样进输出的 b 细胞计算 chg_l2 = ||X_a_nn − X_b||(其空间配对 a 侧 NN 与自身的表达距离),取全部被融合 b 细胞 chg_l2 的分位数作阈值:+### PLAN 机制(坐标门控):已实现,检验后被证伪,提交态关闭 -- `chg_l2 ≥ quantile(chg_l2, q)` 的细胞执行 `X_b <- X_b + gamma*(X_a_nn − X_b)`;-- 其余细胞保持 b 侧原表达不动。+新增 `T2HI_ALPHA_LOW`(+`T2HI_GATE_Q_COORD`,默认与表达门控同 q):对 chg_l2 低于门控阈值的被融合 b 细胞,把坐标位移从 α=1.0(落到 a 侧 NN 位置)回撤为 `cb_pre + α_low*(ca_nn − cb_pre)`。机制确实生效:α_low=0.5 时低失配组 1591 细胞位移 65.9(vs 高失配组 682 细胞 254.3),α_low=0 时低失配组位移为 0。 -动机(PLAN):低失配细胞本身已接近其配对 a 侧,混合它们只把表达云整体拉向 a 侧 bracket(mmd/variogram 惩罚 → cell_state 回吐),不修复表达-位置失配。门控只保留高失配细胞的混合,即"哪些细胞被混合"的选择逻辑逐细胞不同(取决于自身表达距离),非常数位移、非组成重加权。+**但方向错误(PLAN 风险 1 兑现)**:A 半分随 α_low 单调上升 60.11(0)→60.26(0.3)→60.36(0.5)→60.50(0.7)→60.76(1.0),local_spatial 同步单调 55.73→57.49,shape_scale 52.77→53.62,neighborhood_mmd 与 d2_shape 也全程单调。低失配细胞的 a 侧 NN 位移本身对局部空间与形状都有正贡献,"表达已匹配的细胞不该被搬移"的假设不成立。过冲方向 α_low=1.3 也降分(60.64)。**提交态默认 T2HI_ALPHA_LOW=1.0(无操作对照),坐标逻辑与节点 16 逐位一致。** -**提交态默认**:`T2HI_GATE_Q=0.7`(全局分位数)、`T2HI_GAMMA=1.2`、`T2HI_EXPRNN=1`、`T2HI_GATE_MODE=global`。-**对照开关**:`T2HI_GATE_Q=0` → 阈值=最小值,全部被融合细胞通过门控,行为与节点 14 完全一致(已本地 np.array_equal 验证 X 与坐标逐元素全等);`T2HI_EXPRNN=0` → 关闭整个表达混合,与节点 10 一致(父节点已验证)。`T2HI_GATE_MODE=type` 为型内分位数备选(proxy 上更差,未采用)。+### 实际提交的改进:高失配细胞的表达过冲 γ 与门控 q 重扫 -无随机数参与门控(np.quantile 确定);不依赖绝对时间、路径、视图字段;单输入 / 不被 bracket → t=0 → copy_last 分支,不触发融合与混合。+坐标门控失败后,沿父节点 next_suggestions #2/#3 扫 γ×q(均 α_low=1.0): -## 网格结果(vec-score A 半,proxy,seed 0;节点14 = q0/g1.2 基线 60.40)--| 配置 | 榜分 | cell_state | expr_change | local_spatial | shape_scale |+| 配置(q, γ) | A半榜分 | expr_change | cell_state | local_spatial | shape_scale | |---|---:|---:|---:|---:|---:|-| q=0(节点14) | 60.40 | 64.25 | 65.51 | 58.21 | 53.62 |-| q=0.3, g=1.0 / 1.2 | 60.42 / 60.52 | 64.87 / 64.83 | 65.52 / 65.76 | 57.67 / 57.87 | 53.62 |-| q=0.5, g=1.0 / 1.2 | 60.46 / 60.55 | 65.35 / 65.35 | 65.34 / 65.51 | 57.52 / 57.71 | 53.62 |-| **q=0.7, g=1.2(提交)** | **60.76** | **65.87** | **66.05** | 57.49 | 53.62 |-| q=0.7, g=1.0 / 1.3 | 60.51 / 60.79 | 65.84 / 65.88 | 65.24 / 66.12 | 57.34 / 57.55 | 53.62 |-| q=0.75 / 0.8, g=1.2 | 60.73 / 60.69 | 66.01 / 66.17 | 65.85 / 65.61 | 57.45 / 57.38 | 53.62 |-| q=0.9, g=1.2 | 60.36 | 66.12 | 64.80 | 56.88 | 53.62 |-| q=0.5 / 0.7, g=1.2, type 模式 | 60.48 / 60.33 | 65.41 / 65.80 | 65.30 / 64.91 | 57.59 / 57.01 | 53.62 |--- 榜分随 q 单调升到 0.7 附近成峰(60.76–60.79),q=0.9 回落;cell_state 随 q 单调回升(64.25→66.17),PLAN 判据 cell_state≥65.5 在 q=0.7 首次满足且榜分最高 → 选 q=0.7。-- g=1.3 与 1.2 差 0.03(噪声内),保留父节点语义更稳的 1.2。-- type 模式(型内分位数)反而更差: Peri/V-CM 型 chg_l2 分布偏低,全局门控已隐式把混合集中在 NCC/aPHM/pPHM 高失配细胞上,型内强制每型混 30–50% 重新引入低失配混合。风险预案(型内分位数)在 proxy 上实测无效,如实报告。-- **种子稳健性**:q=0.7/g=1.2 在 seed 1 上 60.99(cell_state 66.63),与 seed 0 的 60.76 一致,提升非单种子噪声。--## 机制生效证据(proxy seed 0,提交态)--- 被融合 b 细胞 2273,门控保留(被混合)682 = 30.0%(≈1−q,符合分位数定义);-- 被保留细胞 chg_l2 mean=43.3 vs 被排除 mean=37.0(保留的显著更高,min 40.9 > 排除侧分布);-- 每型保留/总数:NCC 224/341、Peri 21/621、V-CM 71/814、aPHM 123/239、pPHM 243/258 —— 全部 ≥10(PLAN 风险 3 的下限),但型间高度不均:全局门控把混合集中在 NCC/aPHM/pPHM,Peri/V-CM 大部分保持原表达;-- 四组分相对节点 14:cell_state 64.82→65.87(+1.05,回升,符合预期)、expression_change 65.65→66.05(+0.40,高失配细胞贡献了大部分 DE 增益,验证 PLAN "保留>70%增益"的预期方向)、local_spatial 58.29→57.49(−0.80,被混合细胞减少 70% 导致增益部分回吐)、shape_scale 不变(坐标未动);-- 型内表达方差:604(节点10,不混合)→ 767(节点14,全混合)→ 758(门控后)。注意门控保留的是高 chg_l2 细胞,gamma=1.2 过冲对它们扩张方差,故未落在 PLAN 预期的 604–767 中段而是接近上端;如实报告。+| (0.7, 1.2) 节点16 | 60.76 | 66.05 | 65.87 | 57.49 | 53.62 |+| (0.7, 1.4 / 1.6) | 60.83 / 60.90 | 66.22 / 66.42 | 65.89 | 57.60 / 57.69 | 53.62 |+| (0.7, 1.8 / 2.0 / 2.4 / 3.0) | 60.97 / 61.02 / 61.16 / 61.17 | →67.27 | 65.6–65.9 | →58.14 | 53.62 |+| (0.6, 1.6) | 60.88 | 66.51 | 65.56 | 57.85 | 53.62 |+| (0.8, 1.6 / 2.0 / 2.4) | 60.93 / 61.14 / 61.27 | →67.56 | 66.17–66.20 | 57.6–57.7 | 53.62 |+| (0.85, 2.0 / 2.4) | 60.95 / 61.13 | 66.46 / 67.12 | 66.2 | 57.5 / 57.6 | 53.62 |+| **(0.8, 2.8)(提交)** | **61.35** | **67.82** | **66.13** | **57.81** | **53.62** |++- γ 与 q 存在补偿关系:q 越高(混合细胞越少)可承受的 γ 越大。q=0.8 保留 455/2273(20%)高失配细胞,γ=2.8 把它们大幅推向 a 侧 NN 表达之外(型内方差 604→3011),expr_change 66.05→67.82、cell_state 65.87→66.13、local_spatial 57.49→57.81 三组同升,shape_scale 不动(坐标未改)。+- γ=3.0/q=0.7 与 γ=2.4/q=0.7 平台在 61.16,γ=2.8/q=0.8 是网格内最高点;边界未完全探明(γ>2.8×q=0.8 与 q=0.9 未测,额度用尽)。+- **种子稳健性**:提交配置 seed 1 = 61.55(节点 16 seed 1 为 60.99,+0.56 与 seed 0 的 +0.59 一致),非单种子噪声。++## 提交态默认与开关++- 默认:`T2HI_GATE_Q=0.8`、`T2HI_GAMMA=2.8`、`T2HI_ALPHA_LOW=1.0`(坐标门控关)、`T2HI_GATE_MODE=global`。+- 机制关闭对照:坐标门控的 off 态即 `T2HI_ALPHA_LOW=1.0`(默认),输出与不门控逐元素一致(已验证);`T2HI_GATE_Q=0.7 T2HI_GAMMA=1.2` 完整复现节点 16 输出(np.array_equal 验证 X+坐标)。+- 门控阈值来自当次运行 chg_l2 的现场分位数统计,γ 为全局标量但混合逐细胞异质(`X_b + γ*(X_a_nn−X_b)`,每细胞不同 NN),非常数位移。 ## 验证过 / 未验证 -- 已验证:`T2HI_GATE_Q=0` 输出与节点 14 逐元素一致(np.array_equal,X+坐标);默认配置 seed 0 两次运行输出一致(确定性);vec-check 通过;运行 ~2s、峰值内存 <1GB(limits 30min/28GB 内);q×gamma 全网格 + type 模式 + 种子复核见上表。-- 未验证:正式分 B 半(A 半提升 +0.36,父节点经验表明 A 半对 <0.5 量级提升偏乐观,本提升在 T2 噪声 ~1 边缘,需正式分确认);真实括号(E8.25→E8.75,31 个共有型)上 chg_l2 分布与型间偏斜可能与 proxy(5 型)不同,q=0.7 在真实括号的最优性未知;external/ 数据(MOSTA E9.5)未使用(父节点亦未用,本节点未改)。+- 已验证:默认输出=网格最优点 g2.8q0.8(逐元素);同 seed 两次运行一致;vec-check ok;~2s、<1GB;α_low∈{0,0.3,0.5,0.7,1.0,1.3} 全网格、γ∈{1.4,…,3.0}×q∈{0.6,0.7,0.8,0.85} 网格、seed1 复核。+- 未验证:正式分 B 半(A 半 +0.59 略高于噪声边缘,但 seed0/seed1 一致,且改动方向与父节点 lessons 的"多分组净增益>噪声"判据相符:expr_change +1.77、cell_state +0.26、local_spatial +0.32);真实括号 31 共有型上 γ=2.8 大幅过冲的最优性(proxy 仅 5 型、chg_l2 分布不同,q=0.8 在真实括号保留的细胞比例未知);γ=2.8 使型内方差扩到 3011(节点16 为 758),若真实评测的 mmd/variogram 对离群表达更敏感可能回吐。 ## 知识来源 -未使用任何保留阶段/基因型信息或文献数值;机制只依赖两 bracket 现场计算的表达距离分位数。细胞类型名仅用于型内 NN 配对(与父节点相同,来自输入 obs 标签)。+未使用任何保留阶段/基因型信息或文献数值;所有统计量(chg_l2、分位数、NN 配对、型内方差)均由两 bracket 输入现场计算。细胞类型名仅用于型内 NN 配对(来自输入 obs 标签)。external/ 与 prior/ 未使用。diff --git a/solution/run.py b/solution/run.pyindex ad4e3cd..f4963e5 100644--- a/solution/run.py+++ b/solution/run.py@@ -22,16 +22,24 @@ node 7). T2HI_DISP=1 (+T2HI_BETA) enables within-type calibrated dispersion of fused b cells (isotropic offsets ~ Uniform(0, beta*d_med), d_med = median a-side NN distance per type); default OFF because the beta grid showed no net gain on the proxy (see METHOD.md). T2HI_EXPRNN (default 1, ON) with-T2HI_GAMMA (default 1.2) additionally mixes each fused b cell's expression+T2HI_GAMMA (default 2.8) additionally mixes each fused b cell's expression towards its matched a-side NN: xb <- xb + gamma*(xa_nn - xb), per-cell, common types only; T2HI_EXPRNN=0 disables it (node-10 output). Gamma 1.2 slightly overshoots the a-side value, restoring within-type spread lost when paired b cells become a-side copies (see METHOD.md). T2HI_GATE_Q (default-0.7) gates the blend on the quantile of per-cell expression distance+0.8) gates the blend on the quantile of per-cell expression distance chg_l2 = ||xa_nn - xb|| among fused b cells: only cells with chg_l2 at or above the q-quantile are blended, low-mismatch cells keep their b-side expression; T2HI_GATE_Q=0 lets every fused cell through (node-14 output). T2HI_GATE_MODE=type computes the quantile per cell type instead of globally.+T2HI_ALPHA_LOW (default 1.0) extends the same chg_l2 gate to the coordinate+displacement: sampled fused b cells below the gate threshold (low expression+mismatch) get their fusion displacement reduced to alpha_low * (pa_nn - pb),+i.e. they stay closer to their own Procrustes position, while high-mismatch+cells keep the full alpha=1.0 move. T2HI_ALPHA_LOW=1.0 is the mechanism-off+control (output identical to the ungated node-16 fusion). T2HI_GATE_Q_COORD+(default: same as T2HI_GATE_Q) allows a separate quantile for the coordinate+gate. Coordinate gating applies on the default blend_ref=all path only. """ from __future__ import annotations@@ -250,6 +258,7 @@ def main() -> None: disp_beta = 0.0 rng_disp = np.random.default_rng(args.seed + 7919) if disp_beta > 0.0 else None blend_info = None+ cb_pre = None blend_ref = os.environ.get("T2HI_BLEND_REF", "all") if blend_alpha > 0.0 and blend_ref == "sampled": blend_min = int(os.environ.get("T2HI_BLEND_MIN", "5"))@@ -265,6 +274,7 @@ def main() -> None: blend_min = int(os.environ.get("T2HI_BLEND_MIN", "5")) blend_axes = os.environ.get("T2HI_BLEND_AXES", "3d") blend_mutual = os.environ.get("T2HI_BLEND_MUTUAL", "0") != "0"+ cb_pre = cb.copy() ca, cb, blend_info = _blend_within_type( ca, cb, a.labels, b.labels, common, blend_alpha, blend_min, blend_axes, blend_mutual, disp_beta, rng_disp,@@ -289,7 +299,7 @@ def main() -> None: xa = as_dense(a.X, ia) xb = as_dense(b.X, ib) - gamma = float(os.environ.get("T2HI_GAMMA", "1.2"))+ gamma = float(os.environ.get("T2HI_GAMMA", "2.8")) exprnn = os.environ.get("T2HI_EXPRNN", "1") != "0" and gamma > 0.0 exprnn_info = None if exprnn and blend_info is not None and np.size(blend_info.get("nn_b", 0)):@@ -307,7 +317,7 @@ def main() -> None: diff = Xa_nn - Xb_f d = np.linalg.norm(diff, axis=1) labs = np.asarray(b.labels).astype(str)[nn_b[sel]]- gate_q = float(os.environ.get("T2HI_GATE_Q", "0.7"))+ gate_q = float(os.environ.get("T2HI_GATE_Q", "0.8")) gate_mode = os.environ.get("T2HI_GATE_MODE", "global") if gate_q > 0.0: if gate_mode == "type":@@ -323,6 +333,42 @@ def main() -> None: blended = Xb_f.copy() blended[keep] = Xb_f[keep] + gamma * diff[keep] xb[pos[nn_b[sel]]] = blended.astype(np.float32)++ # chg_l2-gated coordinate displacement (family T2HI-04 mechanism):+ # low-mismatch fused b cells get a reduced fusion displacement+ # alpha_low, high-mismatch cells keep the full alpha move. The+ # coordinate gate threshold is the q_coord quantile of the same+ # per-cell chg_l2 distances d. alpha_low >= 1.0 -> no change+ # (mechanism-off control, output identical to the ungated blend).+ alpha_low = float(os.environ.get("T2HI_ALPHA_LOW", "1.0"))+ q_coord = float(os.environ.get(+ "T2HI_GATE_Q_COORD", os.environ.get("T2HI_GATE_Q", "0.8")))+ coord_info = None+ if cb_pre is not None and alpha_low != 1.0:+ if q_coord > 0.0:+ keep_c = d >= np.quantile(d, q_coord)+ else:+ keep_c = np.ones(d.shape, dtype=bool)+ low_c = ~keep_c+ bidx = nn_b[sel][low_c]+ aidx = nn_a[sel][low_c]+ if bidx.size:+ step = ca[aidx] - cb_pre[bidx]+ cb[bidx] = cb_pre[bidx] + alpha_low * step+ step_norm = float(np.linalg.norm(step, axis=1).mean())+ else:+ step_norm = 0.0+ bidx_h = nn_b[sel][keep_c]+ aidx_h = nn_a[sel][keep_c]+ step_h = ca[aidx_h] - cb_pre[bidx_h] if bidx_h.size else np.zeros((0, 3))+ coord_info = {+ "alpha_low": alpha_low, "q_coord": q_coord,+ "cells_low": int(low_c.sum()), "cells_high": int(keep_c.sum()),+ "step_norm_low": step_norm,+ "disp_low": alpha_low * step_norm,+ "disp_high": float(np.linalg.norm(step_h, axis=1).mean())+ if step_h.size else 0.0,+ } def _within_var(M: np.ndarray) -> float: vs = [] for lab in np.unique(labs):@@ -346,6 +392,7 @@ def main() -> None: "d_excl_mean": float(d[~keep].mean()) if (~keep).any() else 0.0, "var_before": _within_var(Xb_f), "var_after": _within_var(blended), "per_type_kept": per_type_kept,+ "coord": coord_info, } expr = np.clip(np.vstack([xa, xb]), 0.0, None).astype(np.float32)@@ -381,6 +428,11 @@ def main() -> None: f"within_type_var {exprnn_info['var_before']:.3f} -> {exprnn_info['var_after']:.3f}", flush=True) print(f"[exprnn] per_type kept/total={exprnn_info['per_type_kept']}", flush=True)+ if exprnn_info.get("coord") is not None:+ ci = exprnn_info["coord"]+ print(f"[coordgate] alpha_low={ci['alpha_low']:.2f} q_coord={ci['q_coord']:.2f} "+ f"cells_low={ci['cells_low']} cells_high={ci['cells_high']} "+ f"disp_low={ci['disp_low']:.1f} disp_high={ci['disp_high']:.1f}", flush=True) 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 |
| k023 | Time-split validation with a held-out intermediate or next time point | notes/handover/02_知识学习路线.md |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 实现了PLAN的chg_l2门控坐标位移(T2HI_ALPHA_LOW/Q_COORD),但α_low网格单调证伪该机制,提交态设为α_low=1.0(关闭,坐标与节点16逐位一致);实际提交的改动是把高失配细胞表达过冲参数从q=0.7/γ=1.2重扫为q=0.8/γ=2.8(更强的门控表达混合,属T2HI-01机制的参数扩展)。 |
|---|---|
| 各组分数的变化 | cell_state:噪声内 +0.27(66.60→66.87),说明γ=2.8把型内方差扩到3011未伤及该组 expression_change:变好 +1.99(65.91→67.90,超出T2约1分噪声,是榜分提升主因,与γ=2.8大幅过冲一致) local_spatial:噪声内 +0.35(57.89→58.24),略高于A半proxy的+0.32,方向一致但幅度在噪声边缘 shape_scale:不变 +0.00(54.46→54.46),坐标逻辑关闭门控后与父节点逐位一致,符合预期 |
| family_id | T2HI-01 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 3 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 2 次:bash 1、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 14,001 · 输出 1,099 · 思考 1,314 |
| 任务(第一行) | 分析节点 n18 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/analyst.jsonl 9 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 32 |
| 工具调用 | 共 34 次:bash 22、edit 8、read 3、write 1 |
| 用时 | 17 分 |
| token 数 | 输入 65,641 · 输出 10,026 · 思考 14,135 |
| 任务(第一行) | 按计划修改程序:chg_l2门控坐标位移:低失配细胞降低α修复local_spatial |
| 最后的回答(摘录) | **做了什么**:实现 PLAN 的 chg_l2 门控坐标位移(T2HI_ALPHA_LOW/Q_COORD),全网格 α_low∈{0,0.3,0.5,0.7,1.0,1.3} 单调证伪机制假设(低失配细胞的 NN 位移对 local_spatial/shape 有正贡献),提交态关闭(α_low=1.0,与节点16逐位一致,np.array_equal 验证)。转向父节点建议的 γ×q 重扫,找到补偿关系(q 越高可承受 γ 越大)。
**查分**(A 半 proxy,用 16/20 次):提交配置 q=0.8/γ=2.8 → seed0 **61.35**(父 60.76),seed1 **61.55**(父 60.99);expr_change 66.05→67.82、cell_state +0.26、local_spatial +0.32、shape_scale 不变。vec-check 通过,确定性验证,~2s/<1GB。
**下一步最值得试**:① γ–q 脊线未探完(γ>2.8×q=0.8、q=0.9),但需警惕型内方差已扩到 3011,B 半 mmd/variogram 可能回吐;② shape_scale(53.62)四组最低且从未动过——目标 RMS 由 log_interp 定死,可试对 fused 云做占用率(occupancy_dice 0.83)导向的密度重排;③ 真实括号 31 型上 q=0.8 保留比例未知,若后续节点能在真实榜低成本验证应优先确认 γ=2.8 的迁移性。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/engineer.jsonl 171 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 1 分 |
| token 数 | 输入 13,169 · 输出 1,003 · 思考 3,647 |
| 任务(第一行) | 为节点 n18(改进,父节点 n16)写改进计划 PLAN.json |
| 最后的回答(摘录) | ```json
{
"name": "chg_l2门控坐标位移:低失配细胞降低α修复local_spatial",
"motivation": "节点16四组中local_spatial(57.89)是唯一相对前代(节点14的58.29)下降的组(-0.40),shape_scale(54.46)自节点10起未动。ANALYSIS建议1明确指出:把chg_l2门控同步应用到坐标位移。当前所有被融合b细胞无论表达失配程度均做α=1.0全位移,低失配细胞(表达已匹配其空间邻域)被强制移到a侧NN位置后,其表达-位置一致性反而被打破,导致local_spatial回吐。",
"approach": "在节点16代码基础上,将已有的chg_l2全局q=0.7分位数门控从仅控制表达混合扩展为同时控制坐标位移α。具体:(1)计算每个被融合b细胞的chg_l2=||X_a_nn−X_b||(已有);(2)对chg_l2≥quantile(chg_l2,0.7)的高失配细胞:坐标α=1.0+表达gamma=1.2混合(与节点16相同);(3)对低失配细胞:坐标位移降为α_low,表达不混合(与节点16相同)。新增环境变量T2HI_ALPHA_LOW,默认0.5。网格:α_low∈{0, 0.3, 0.5, 0.7, 1.0}×q_coord∈{0.7}(先固定q与表达门控一致),共5次查分。若α_low=0.5有信号(≥+0.5),追加q_coord∈{0.5,0.6,0.8}×α_low最优值,再3次。总计≤8次查分,每次~2s,远在30分钟限内。单输入/不被bracket→t=0→copy_last,不触发。用vec-score逐次查proxy A半,以local_spatial+shape_scale净增益>1且cell_state/expr_change不降>0.5为通过标准。",
"expected_groups": ["local_spatial", "shape_scale"],
"risks": "1)低失配细胞减少位移后,其Procrustes对齐位置本身可能不如a侧NN位置精确,local_spatial反而不升——Engineer应在α_low=0(完全不位移)时观察:若比α_low=1.0更差,说明位移本身对低失配细胞也有正贡献,机制假设不成立,如实报告。2)shape_scale对坐标变化的响应可能非线性,α_low改变后RMS微变但scale_to_rms已归一化,可能无感——若5个α_low的shape_scale全在±0.1内则判定该组无响应。3)chg_l2门控使坐标位移与表达混合耦合,若后续想独立调参需注意。",
"family_id": "T2HI-04",
"mechanism": "按逐细胞表达失配距离(chg_l2)门控坐标位移幅度:高失配细胞全位移α=1.0,低失配细胞部分位移α=α_low<1,使表达已与邻域匹配的细胞不被过度搬移,保持局部表达-空间一致性。",
"vs_constant_shift": "每细胞的α由其自身表达距离决定(同型两细胞可获不同α),非按型施加统一位移向量;门控阈值来自当次运行的分位数统计,非硬编码常数。",
"mechanism_evidence": "Engineer应输出:(1)低/高失配组各自实际α值与细胞数;(2)低失配组坐标位移量(||p_new−p_old||)在α_low<1时确实小于α=1;(3)四组分各自变化方向:预期local_spatial↑、shape_scale≥不变、cell_state/expr_change≈不变;(4)若α_low=0.5通过,对比α_low=0和1.0确认非单调(排除线性趋势误判)。",
"mechanism_off_control": "T2HI_ALPHA_LOW=1.0时,低失配细胞也获得α=1.0,所有被融合细胞位移与节点16逐元素一致(坐标+表达),预期输出完全相同(可np.array_equal验证)。",
"sources": []
}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/researcher.jsonl 4 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 7 |
| 工具调用 | 共 10 次:read 6、bash 3、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 22,137 · 输出 1,442 · 思考 1,472 |
| 任务(第一行) | 审查节点 n18 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/reviewer.jsonl 105 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24/nodes/18/reviewer.stderr |