Virtual Embryo Challenge更新于 10-04 04:08(北京时间) / 每 5 分钟更新

总览 · ← 返回运行 20261003-172000-search-t2-heart-extrap-chain-12h

节点 n41 在终选来历上

外部Qiu心脏样本(锚同时刻独立复制)经数据驱动型匹配后,其按型逐基因相对差 b_t 以 w=0.25 混入按型外推速度(软阈值前),修正位移方向;其余管线逐位承父节点35。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-172000-search-t2-heart-extrap-chain-12h
父节点n39
子节点n43
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 57.57(+0.5) · proxy_noscale 57.57(+0.5) · 3 次复测均分 57.57
审查通过 检查项1(越界读取):未发现问题。文件读取仅有两处:view_io 的 read_stage 读 manifest['inputs'] 的锚/前一阶段(run.py:948,964),external_anchor_reps 用 ad.read_h5ad(str(view)+'/'+ent['path'])(run.py:650)只读 manifest['external'] 声明的路径;无绝对路径、'..'、/mnt、/home、打分器路径,无联网代码。; 检查项2(硬编码目标统计量):未发现问题。所有数值常数均为算法超参(alpha/gamma/k/w/mincorr 等,run.py:…
用时?从运行开始到结束(或到现在)的挂钟时间。49 分
程序版本98c0bf509a6934626ceecfb5559f16265637a667 (programs.git)

方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。

来自 programs.git 98c0bf509a:solution/METHOD.md

外部Qiu心脏样本(锚同时刻独立复制)经数据驱动型匹配后,其按型逐基因相对差 b_t 以 w=0.25 混入按型外推速度(软阈值前),修正位移方向;其余管线逐位承父节点35。

方法(PLAN 适配说明)

PLAN(三点速度方向修正,family T2HX-01)假设 external/ 的 Qiu 心脏样本"介于 anchor 与 target 之间", 可算晚段速度 v_late=(pb_ext−pb_anchor)/Δt2。该前提在本榜被数据证否:外推榜的 external/ 按窗口规则 只保留 ≤ 末输入的阶段,视图挂载的 qiu2024_heart_early_v1 的 e_lo=e_hi 恰等于锚时间(Δt2=0,v_late 无 定义),且其标签词汇(First/Second heart field、Endocardial cells)与官方锚类型名零交集。因此按 improve 规则把机制适配为同一发育时刻的跨数据集独立复制修正(仍属 PLAN 的"上游速度方向估计改进",目标弱项 cell_state/质心位置不变):

  1. 从 manifest["external"] 现场发现样本(只用时间差判断:e_lo ≤ target 且 e_hi ≥ anchor−0.25d;不写死 日期/路径/数据集名;external 为空或无可用样本 → w 强制 0,输出逐位=父)。
  2. 外部细胞按 panel 重归一:线性域每细胞缩放到 panel-CP10k=10^4 后 log1p(外部 assay 在其全转录组上归 一,500 个 panel 基因只占其总量 ~8.7%;这是 CP10k 定义层面的技术归一化,非生物学测量)。497/500 基因 覆盖;未覆盖基因 b=0、保留 v_early(PLAN 步骤 5 回退)——否则 fill-zero 的 m_ext 会注入纯测量伪影 (如 Cemip2:m_a=5.19 → 伪 b=−0.84)。
  3. 型匹配纯数据驱动:对每个官方锚类型(n≥10),取覆盖基因上伪批量 Pearson 相关最高的 ext 类型(ext 类型 n≥20,corr≥0.30 才接受;平局按名字排序破,确定性)。本视图匹配到 10 型:Endo←Endocardial(0.494)、 V-CM←FHF(0.544)、IFT-CM←FHF(0.568)、Unknown←SHF(0.482)、Intra-Endoth-2←Endocardial(0.435)、 ExEM-2(0.349)/Intra-Endoth-1(0.357)/HEM-Endoth(0.328)/JCF(0.322)/aPHM(0.312);未匹配型(Neural Tube、NCC、PAM-* 等)速度不变。
  4. ext 型均值按 mult 电平匹配官方锚型均值后,算相对差 b_t=(m_ext−m_a)/(m_a+1)(与父速度估计同形), 在软阈值前混入:v_t ← (1−w)·v_t + w·b_t,w=0.25(提交值)。
  5. 之后管线逐位承父 35:ε=0.1 两步坐标 15-NN 支撑掩码平滑底物、rel 速度估计、α=1 乘法位移、k=0.5 MAD 软阈值、γ=1.35 几何再闭合、β_rec=0.15 低通+电平 matched、PBC=10、DE 双门控、坐标/行序/细胞数/组成冻结。

关键参数(env 可调,默认=提交值):VEC_EXT_W=0.25、VEC_EXT_MODE=mix、VEC_EXT_MINCORR=0.30、 VEC_EXT_LEVEL=mult、VEC_EXT_MINCELLS=20、VEC_EXT_TOL=0.25。--ablate <任意名> → EXT_W=0、 FRONT_BETA=0 → 输出逐位=父节点(已验证),其余机制钩子(node 37/39)本就默认关。

查分记录(A 半 proxy_noscale,父=56.869;共 18 次,余 2 次未用)

配置榜分de_scorede_dirmmd_uvariogramnb_mmd
父基线复现(=node 35/37/39)56.869~0.2780.38390.048500.035400.08093
mix w=0.25 + 覆盖回退(提交)57.2490.29170.41810.048660.034680.07970
mix w=0.25(未加覆盖回退,含 3 基因伪影)57.3310.30560.41840.048580.034620.07963
mix w=0.15 / 0.20 / 0.3557.115 / 57.250 / 57.1880.2917/0.3056/0.26390.4110/0.4171/0.40010.04919/0.04911/0.047470.0346/0.0346/0.03500.0806/0.0802/0.0783
mix w=0.50(PLAN 首筛,守卫破)56.6130.20830.35440.049810.035740.07709
mix w=0.25, mincorr=0.25 / 0.4557.217 / 56.9430.2778/0.30560.4156/0.40530.04905/0.050010.0342/0.03470.0793/0.0826
mix w=0.25, level=add57.1980.26390.41540.048040.034780.07894
mixc(b 去中位,纯结构)w=0.2557.2750.29170.41890.048510.034650.07957
mixconst(b=常数中位,对照)w=0.2557.0350.27780.40910.048760.035080.08055
shrink w=1(可靠性阻尼解码)57.2500.30560.41520.048820.035090.07976
mixshrink w=0.25 s=1(组合)57.2670.30560.42040.048980.034980.07986
sign(PLAN 保守变体)w=156.7420.22220.38280.048350.035220.07968
sub w=0.5(v−w·b)55.6790.18060.25620.045750.039470.08169
α=0.75(纯幅度对照,无 ext)56.1120.23610.35750.046690.042470.08112
mix w=0.25 + α=1.1557.0750.31940.41660.052430.032000.08375

注:w/mincorr/level/mode 网格在未加覆盖回退的代码上扫(两版仅在 3 个未测基因上不同,pb L2 差 0.104, 榜分差 −0.08,噪声内);提交版为加了 PLAN 步骤 5 回退的原则版本,伪影版分数不作提交依据。

解读:(a) w 网格单峰、0.15–0.35 全平台高于父,mincorr 0.30 是内点最优(0.25/0.45 都更低),level=mult/add 都超父 → 不是刀尖配置。(b) 纯幅度对照 α=0.75 掉到 56.11、常数-b 对照 57.04 < 含结构 57.33/57.27 → 收益 主体来自 b 的逐基因结构,不是均匀幅度/电平效应。(c) PLAN 守卫在 w=0.25 通过(de_dir 0.4181≥0.3839、 variogram 0.03468≤0.0355);w=0.5 首筛即破守卫(0.3544),按 PLAN 转保守 sign 变体(56.74,也低于父)。 (d) PLAN 机制生效判据"∃w: mmd_u↓ 且 de_dir≥0.3839"在 w=0.35 满足(mmd_u 0.04747<0.0485、de_dir 0.4001); 榜分最优 w=0.25 处 mmd_u 持平,净收益落在 DE 两项+variogram+nb_mmd。与 PLAN 预期不同:提交配置下 mmd_u 本身没降——b 修正的是跨数据集可复现的方向成分,改善体现在 de_direction(0.384→0.418)而非分布 距离;cell_state 组 +0.07(58.85→58.92 量级),expression_change 组约 +1.1。

机制证据(PLAN mechanism_evidence,提交配置):(1) 10 个匹配型 spearman(v_pre,v_post)=0.61–0.83、符号翻转 比例 15–26%(DEBUG ext_corr 行逐型列出);(2) 预测质心位移 ‖pb_submit−pb_parent‖₂=0.520(max|Δ|=0.151), 100% 细胞表达改变(匹配型速度修正 + 再闭合电平 r_med 1.80→1.45 的全局效应),中位线性总量 18246→14387; (3) 四指标随 w 变化见上表;(4) 分型 MMD 贡献分解未做(需真值,离线不可得)。

验证过的

  • 默认输出 = 已查分的提交预测(57.249 那次),逐位一致;vec-check --task T2:heart:val_extrap/proxy_noscale ok。
  • --ablate w 输出逐位 = 父节点基线(X 与坐标 array_equal)→ mechanism_active 预期 yes。
  • seed 0 / 1 输出逐位相同(锚 24826 ≤ max_cells 25179,take 全取,无抽样随机性)。
  • 伪装视图(换路径、manifest 键序打乱、全部阶段时间含 external 窗口 +1 天)输出逐位相同 → 视图无关。
  • external 置空的伪装视图 → 输出逐位=父(PLAN 步骤 7 退路)。单输入阶段退路承父(在 ext 代码之前分支)。
  • CPU ~3.5 s、峰值内存 < 2 GB(EXECUTION.json gpu:false 承父);无 NaN/Inf;坐标/行序/细胞数冻结。

未验证 / 风险

  • B 半与官网:A 半 +0.38(提交版)在 T2 噪声(~1 分)量级内,但 de_dir raw +0.034 是结构性的(方向信息, 非抽样涨落),且 6+ 配置组成的平台整体高于父,预期部分迁移;外推榜本地尺子历史高估,不作真实分估计。
  • 再闭合电平 r_med 1.80→1.45(输出比父暗 21%):node 39 曾示亮度是信号,本配置 de_score 反升(0.278→ 0.292),说明方向收益压过电平损失,但该权衡在 B 半未验证。
  • 匹配阈值 0.30 放进了 5 个低相关(0.31–0.44)的非心肌型(ExEM-2、HEM-Endoth、Intra-Endoth-1/2、JCF、 aPHM),mincorr=0.45 实验说明它们净贡献为正(去掉反而低 0.31–0.39),但这些匹配生物学上存疑(ext 是 纯心脏样本,相关可能只反映泛表达谱形);换一份 external 数据时匹配集自适应,效果不保证。
  • VEC_FRONT_BETA(型内前沿逐细胞解码)已实现、默认 0、未查分(离线门控 spearman 0.61→0.60 略降, 不值配额),留给后续节点。
  • 真实 final 视图与 proxy 同括号同 external 挂载规则,预期行为相同;未在 final 上实跑。

知识来源

未使用任何已发布/保留阶段的测量值(比例、表达、尺寸、类型清单均未写死);未使用文献生物学断言。型匹配、 电平匹配、b_t、覆盖回退全部由视图输入现场计算;panel 重归一化是 CP10k 定义层面的技术步骤,非生物学知识。 PLAN sources 为空,本节点无新增。

调研员的计划

名称三点速度方向修正:外部Qiu E8.75修正按型外推质心
动机父节点39(=35/37)mmd_u skill 0.551为八项最低,ANALYSIS确认瓶颈在质心位置而非宽度/电平(TYPE_SHRINK/锚混合/库尺寸归一共11配置全部证伪后处理轴)。历史唯一mmd_u明显改善(node 31 γ=0.45→0.0454)来自再闭合轴但DE受损。视图内external/有Qiu E8.75心脏样本(介于锚与目标之间、合规),可提供第三时间点修正速度方向,属上游估计改进而非后变换。
做法步骤:1) 从视图发现三时间点:prev(输入1)、anchor(输入2/末观测)、ext(external/中Qiu心脏样本,阶段介于anchor与target之间;按manifest的stage/Theiler字段定位,不硬编码日期)。2) 对每个在anchor和ext中均存在的细胞型t,计算log2域伪批量:pb_prev,t、pb_anchor,t、pb_ext,t(c_vel=max(c,1)同父)。3) 计算归一化到单位时间的两段速度:v_early=(log2(pb_anchor+c)−log2(pb_prev+c))/Δt1,v_late=(log2(pb_ext+c)−log2(pb_anchor+c))/Δt2。4) 混合速度 v_mix=(1−w)·v_early + w·v_late,w为唯一新参数,初始网格{0.25, 0.5, 0.75, 1.0}。5) 对ext中缺失的基因(不在panel或该型在ext中无细胞)回退该基因用v_early。6) 后续管线不变:v_mix替代原v_t进入α=1乘法位移→ε=0.1平滑→k=0.5软阈值→γ=1.35再闭合→β_rec=0.15低通→PBC=10→DE门控。7) 单输入阶段退路:若视图只有一个输入阶段或external/无合规心脏样本,w强制=0,输出逐位=父(=copy_last路径)。8) 快速筛选:先单查w=0.5,核对de_direction≥0.3839且variogram≤0.0355;通过再扫其余3档;首查即击穿守卫则改保守变体(仅取v_late的符号修正v_early方向,幅度不变:v_mix=|v_early|·sign(v_late)当sign不一致时,否则v_early),再查1次。总计≤6次查分。
风险1) Qiu与官方数据批次效应使v_late幅度失真→de_direction/variogram恶化;Engineer首查w=0.5若de_direction<0.3839即停,转保守符号变体。2) 型标签在两套数据间不完全对应(ext中某些型缺失或命名不一致)→仅用交集型,缺失型回退v_early,不强制匹配。3) mmd_u对速度方向修正无响应(Pareto前沿是结构性的)→若4档w均无法同时改善mmd_u且守住DE守卫,如实报告证否并以w=0提交。4) 外推榜本地尺子已知高估(54.2→49.6),本地<1分领先不可当真实收益;需de_direction与mmd_u同时有≥0.5分的结构性改善才值得继续。

代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。

对比:父节点版本 f39e397d51。改动的文件:solution/METHOD.md +95 −94、solution/README.md +14 −17、solution/run.py +298 −7

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex b72a603..e6811c7 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,94 +1,95 @@-NO_CHANGE: 线性空间锚点混合(λ×2 域×再闭合 6 档全劣于父或门失败;备选库尺寸归一、型内收缩亦证否)--## 结论--PLAN(T2HX-09 线性空间锚点混合)按其字面实现并在代理上查分证否:所有真实混合幅度都单调劣于父节点。-按 improve 规则改交两个针对同一弱项(cell_state / mmd_u,八项最低 skill 0.551)的备选机制,也全部证否。-提交的程序默认关闭本节点全部新机制(`VEC_BLEND_LAMBDA=1.0`、`VEC_TOTNORM_W=0`、`VEC_TYPE_SHRINK=0`),-输出与父节点 35/37 逐位相同(本地 cmp 验证:X、坐标、基因序、细胞数全同;`--ablate blend` 同样逐位相同,-mechanism_active 将为 no)。基座保持不变:α=1, k=0.5, γ=1.35, ε=0.1, β_rec=0.15, PBC=10, 门控, 坐标/组成/行序冻结。--## 方法(实现了什么)--1. **PLAN 机制(blend)**:父管线产出 x_extrapolated(log1p)后,在线性 CP10k 域与锚阶段原始表达逐元素混合-   `x_final = (1−λ)·expm1(x_anchor) + λ·expm1(x_extrap)`,再 log1p 输出;零值保持零(两侧同支撑)。-   DE 门控(PLAN 原文):混合后 dp=pb(x_final)−pb(x_anchor) 须满足 spearman(dp,dt_approx)≥0.3 且-   std(dp)≥0.01·std(dt_approx),否则回退 λ=1(=父输出)。`VEC_BLEND_DOMAIN=log` 是 log1p 域变体;-   `VEC_BLEND_RECLOSE=w` 是混合后逐细胞总量回拉锚总量的变体。-2. **备选 (c) TOTNORM**:管线后逐细胞线性总量归一 `scale=(tot_ref/tot_i)^w`(细胞组成不变、零保持零)。-   mode=cell(tot_ref=该细胞自身锚总量,恢复 CP10k 不变量)/ median(tot_ref=预测自身中位数,保电平去离散)/-   global(一致压暗到锚中位数)。门控改为相对基线:spearman 不得低于混合前矩阵 −0.02(父输出自身的最终-   spearman≈0.261 就低于 0.3 的绝对门,绝对门对机制比对基座更严,不公平)。-3. **备选 (d) TYPE_SHRINK**:型内径向收缩 `x ← μ_t + (1−w)(x−μ_t)`(μ_t=最终矩阵的型×基因均值)。-   型质心是不动点 → dp 逐位保持(实测 max|Δdp|=3e-13),只动型内离散度——与位移幅度正交的"宽度"轴。-   SUP=1 变体只收缩正值、保零模式(防零膨胀)。--## 查分记录(A 半,父节点 = 56.869;共 10 次,配额 20 剩 10)--| # | 配置 | 总分 | de_score | de_dir | mmd_u | variogram | nb_mmd |-|---|---|---:|---:|---:|---:|---:|---:|-| — | 父 35/37 | **56.869** | 0.2778 | 0.3839 | 0.04853 | 0.03541 | 0.08093 |-| 1 | blend lin λ=0.8 | 54.377 | 0.3194 | 0.3230 | 0.05131 | 0.05179 | 0.09612 |-| 2 | blend lin λ=0.9 | 55.209 | 0.3194 | 0.3529 | 0.04975 | 0.04851 | 0.09019 |-| 3 | blend lin λ=0.95 | 56.869* | *门失败回退=父* | | | | |-| 4 | blend lin λ=0.7 | 53.792 | 0.3056 | 0.3134 | 0.05267 | 0.05383 | 0.10044 |-| 5 | λ=0(诊断) | 56.869* | *门失败回退=父(dp=0 触发无变化保护)* | | | | |-| 6 | blend log λ=0.8(强制过门) | 56.335 | 0.2778 | 0.3839 | 0.04844 | 0.04133 | 0.08189 |-| 7 | TOTNORM cell w=1(强制过门) | 54.982 | 0.1806 | 0.3035 | 0.05885 | 0.03577 | 0.08741 |-| 8 | TOTNORM median w=1(相对门通过) | 56.552 | 0.2361 | 0.3522 | 0.04676 | 0.03823 | 0.07918 |-| 9 | TYPE_SHRINK 抬零 w=0.15 | 54.994 | 0.2778 | 0.3838 | 0.05258 | 0.05823 | 0.08206 |-| 10 | TYPE_SHRINK 保支撑 w=0.15(强制过门) | 56.007 | 0.2083 | 0.3885 | 0.05430 | 0.03524 | 0.08428 |--未查分的离线门失败档(spearman(dp,dt_approx),基座最终值 0.261):blend lin λ=0.8 + RECLOSE=1 → 0.231;-TOTNORM cell w=0.5 → 0.232;TOTNORM global w=1 → 0.197。--## 机制生效证据(PLAN mechanism_evidence 五项)--- 改变了哪些细胞:blend 全体细胞(changed_frac_pos=1.0),零模式逐位保持(zero_preserved=True);-  λ=0.8 时 |x_final−x_extrap| q50/q90 = 0.148/2.760(log1p 单位)。-- 型内表达 std(log1p,按型平均):父 0.7056 → blend λ=0.8 **0.8003(不降反升**:混合把逐细胞膨胀比 r_i-  的离散(std(log r)≈3.9)注入每个基因,PLAN 预期的"型内方差压缩"在线性域混合下不成立);-  TYPE_SHRINK w=0.15 → 0.6170(按构造收缩)。-- mmd_u:λ=0.8 → 0.05131(劣于父 0.04853),未出现预期改善;唯一 mmd_u 改善的档是 TOTNORM median-  (0.04676)和 blend log(0.04844),但都被 DE/variogram/nb_mmd 的更大损失抵消。-- de_direction:λ=0.8 → 0.3230 < 0.3839,PLAN 风险 1 命中(首查即低于守卫值);λ 越小越差,单调。-- 四组分(λ=0.8 vs 父):expression 59.94/60.29、cell_state 53.21/58.59、local 54.36/58.60、shape 50/50——-  除 DE 的 de_score 一步量化抬升外全组下降。-- 中位每细胞总量:锚 10000(CP10k),父输出 1.825×,blend λ=0.8 → 1.660×,TOTNORM cell → 1.000×。--## 为什么证否(读分)--1. **线性域混合注入非物理的逐细胞库尺寸离散**:外推细胞的膨胀比 r_i 差异极大,(1−λ) 权重的回拉使每个细胞-   落在锚总量与 r_i·锚总量之间的不同位置 → nb_mmd/variogram 单调恶化,且 mmd_u 并未因"拉近锚"而改善。-2. **1.8× 电平与逐细胞膨胀是信号不是伪影(在本尺子上)**:TOTNORM cell 恢复 CP10k 不变量后 de_score 崩-   (0.278→0.181)且 mmd_u 反而恶化(0.0589)——真值 E9.5 云在 truth-PCA 里位于比锚更亮、且逐细胞亮度-   异质的方向上;父节点的"过量"表达量部分编码了真实位移幅度。median 变体(保电平、去离散)同时改善-   mmd_u 与 nb_mmd,但 DE 两项+variogram 损失更大,净 −0.32。-3. **型内宽度不是 mmd_u 的短板**:dp 逐位保持的型内收缩(抬零版)de 两项纹丝不动而 mmd_u/variogram 显著-   恶化(抬零 87.5% 直接击穿 variogram 0.035→0.058);保支撑版避免抬零但稀疏基因 dp 被压低,de_score 崩。-   两个解码都说明真值型内离散不比父输出窄,收缩宽度必输。-4. 汇总:blend(2 域×4 幅度×再闭合变体)、TOTNORM(3 模式)、TYPE_SHRINK(2 解码)共 11 个配置、10 次-   查分,无一超过父节点;满足"≥3 种解码/幅度、≥6 次查分"的证否标准。父节点 ANALYSIS 的帕累托前沿结论-   在三个新变换族上再次成立:**mmd_u 只对"付出更多 de_direction/variogram"的变换作正向响应**。--## 验证过 / 未验证--- 验证:默认输出与父逐位相同(X/坐标/基因序/n=24826);`--ablate blend` 逐位相同;seed 0/1 输出相同;-  伪装视图(时间 +1 天、manifest 键序打乱、路径更换)下机制关与机制开两种运行输出均逐位相同(view 无关);-  vec-check 通过;运行 ~3s / <2GB。-- 未验证:TOTNORM global、blend+RECLOSE 等离线门失败档未查分(方向已被同族查分档覆盖);B 半与官网外推-  榜(本地尺子已知高估,全部结论只在 A 半代理上成立)。--## 知识与来源--未使用任何外部生物学知识或保留阶段信息;全部机制仅由视图内输入数据现场计算的量驱动-(锚/前阶段伪批量、型均值、每细胞总量、坐标 kNN 图),无任何阶段特异常数。评分规则事实引自任务书-"T2 评分规则简报"(veckit 公开代码)与父节点 35/37 的 METHOD/ANALYSIS。--## 给后续节点--- 不要再试:锚混合(任何域/幅度)、逐细胞或全局库尺寸归一(任何模式)、型内宽度收缩/扩张——已 11 配置证否。-- 若要攻 cell_state:mmd_u 的可行改善历史上只伴随 γ/β_rec 等再闭合轴(node 31 γ=0.45 时 mmd_u=0.0454 但-  DE 差),说明其瓶颈是质心位置(外推方向)而非宽度/电平;需要更好的**速度方向**估计(如引入视图内-  external Qiu E8.75 心脏样本做型内参考),而不是对现有输出做后变换。-- 本基座(含 blend/totnorm/type_shrink 钩子,全部默认关)可复用:钩子都有独立门控与 DEBUG 证据输出。+外部Qiu心脏样本(锚同时刻独立复制)经数据驱动型匹配后,其按型逐基因相对差 b_t 以 w=0.25 混入按型外推速度(软阈值前),修正位移方向;其余管线逐位承父节点35。++## 方法(PLAN 适配说明)++PLAN(三点速度方向修正,family T2HX-01)假设 external/ 的 Qiu 心脏样本"介于 anchor 与 target 之间",+可算晚段速度 v_late=(pb_ext−pb_anchor)/Δt2。**该前提在本榜被数据证否**:外推榜的 external/ 按窗口规则+只保留 ≤ 末输入的阶段,视图挂载的 `qiu2024_heart_early_v1` 的 e_lo=e_hi 恰等于锚时间(Δt2=0,v_late 无+定义),且其标签词汇(First/Second heart field、Endocardial cells)与官方锚类型名零交集。因此按 improve+规则把机制适配为**同一发育时刻的跨数据集独立复制修正**(仍属 PLAN 的"上游速度方向估计改进",目标弱项+cell_state/质心位置不变):++1. 从 manifest["external"] 现场发现样本(只用时间差判断:e_lo ≤ target 且 e_hi ≥ anchor−0.25d;不写死+   日期/路径/数据集名;external 为空或无可用样本 → w 强制 0,输出逐位=父)。+2. 外部细胞按 panel 重归一:线性域每细胞缩放到 panel-CP10k=10^4 后 log1p(外部 assay 在其全转录组上归+   一,500 个 panel 基因只占其总量 ~8.7%;这是 CP10k 定义层面的技术归一化,非生物学测量)。497/500 基因+   覆盖;**未覆盖基因 b=0、保留 v_early(PLAN 步骤 5 回退)**——否则 fill-zero 的 m_ext 会注入纯测量伪影+   (如 Cemip2:m_a=5.19 → 伪 b=−0.84)。+3. 型匹配纯数据驱动:对每个官方锚类型(n≥10),取覆盖基因上伪批量 Pearson 相关最高的 ext 类型(ext+   类型 n≥20,corr≥0.30 才接受;平局按名字排序破,确定性)。本视图匹配到 10 型:Endo←Endocardial(0.494)、+   V-CM←FHF(0.544)、IFT-CM←FHF(0.568)、Unknown←SHF(0.482)、Intra-Endoth-2←Endocardial(0.435)、+   ExEM-2(0.349)/Intra-Endoth-1(0.357)/HEM-Endoth(0.328)/JCF(0.322)/aPHM(0.312);未匹配型(Neural+   Tube、NCC、PAM-* 等)速度不变。+4. ext 型均值按 mult 电平匹配官方锚型均值后,算相对差 b_t=(m_ext−m_a)/(m_a+1)(与父速度估计同形),+   在软阈值**前**混入:v_t ← (1−w)·v_t + w·b_t,**w=0.25**(提交值)。+5. 之后管线逐位承父 35:ε=0.1 两步坐标 15-NN 支撑掩码平滑底物、rel 速度估计、α=1 乘法位移、k=0.5 MAD+   软阈值、γ=1.35 几何再闭合、β_rec=0.15 低通+电平 matched、PBC=10、DE 双门控、坐标/行序/细胞数/组成冻结。++关键参数(env 可调,默认=提交值):`VEC_EXT_W=0.25`、`VEC_EXT_MODE=mix`、`VEC_EXT_MINCORR=0.30`、+`VEC_EXT_LEVEL=mult`、`VEC_EXT_MINCELLS=20`、`VEC_EXT_TOL=0.25`。`--ablate <任意名>` → EXT_W=0、+FRONT_BETA=0 → 输出逐位=父节点(已验证),其余机制钩子(node 37/39)本就默认关。++## 查分记录(A 半 proxy_noscale,父=56.869;共 18 次,余 2 次未用)++| 配置 | 榜分 | de_score | de_dir | mmd_u | variogram | nb_mmd |+|---|---:|---:|---:|---:|---:|---:|+| 父基线复现(=node 35/37/39) | 56.869 | ~0.278 | 0.3839 | 0.04850 | 0.03540 | 0.08093 |+| **mix w=0.25 + 覆盖回退(提交)** | **57.249** | 0.2917 | 0.4181 | 0.04866 | 0.03468 | 0.07970 |+| mix w=0.25(未加覆盖回退,含 3 基因伪影) | 57.331 | 0.3056 | 0.4184 | 0.04858 | 0.03462 | 0.07963 |+| mix w=0.15 / 0.20 / 0.35 | 57.115 / 57.250 / 57.188 | 0.2917/0.3056/0.2639 | 0.4110/0.4171/0.4001 | 0.04919/0.04911/0.04747 | 0.0346/0.0346/0.0350 | 0.0806/0.0802/0.0783 |+| mix w=0.50(PLAN 首筛,守卫破) | 56.613 | 0.2083 | 0.3544 | 0.04981 | 0.03574 | 0.07709 |+| mix w=0.25, mincorr=0.25 / 0.45 | 57.217 / 56.943 | 0.2778/0.3056 | 0.4156/0.4053 | 0.04905/0.05001 | 0.0342/0.0347 | 0.0793/0.0826 |+| mix w=0.25, level=add | 57.198 | 0.2639 | 0.4154 | 0.04804 | 0.03478 | 0.07894 |+| mixc(b 去中位,纯结构)w=0.25 | 57.275 | 0.2917 | 0.4189 | 0.04851 | 0.03465 | 0.07957 |+| mixconst(b=常数中位,对照)w=0.25 | 57.035 | 0.2778 | 0.4091 | 0.04876 | 0.03508 | 0.08055 |+| shrink w=1(可靠性阻尼解码) | 57.250 | 0.3056 | 0.4152 | 0.04882 | 0.03509 | 0.07976 |+| mixshrink w=0.25 s=1(组合) | 57.267 | 0.3056 | 0.4204 | 0.04898 | 0.03498 | 0.07986 |+| sign(PLAN 保守变体)w=1 | 56.742 | 0.2222 | 0.3828 | 0.04835 | 0.03522 | 0.07968 |+| sub w=0.5(v−w·b) | 55.679 | 0.1806 | 0.2562 | 0.04575 | 0.03947 | 0.08169 |+| α=0.75(纯幅度对照,无 ext) | 56.112 | 0.2361 | 0.3575 | 0.04669 | 0.04247 | 0.08112 |+| mix w=0.25 + α=1.15 | 57.075 | 0.3194 | 0.4166 | 0.05243 | 0.03200 | 0.08375 |++注:w/mincorr/level/mode 网格在未加覆盖回退的代码上扫(两版仅在 3 个未测基因上不同,pb L2 差 0.104,+榜分差 −0.08,噪声内);提交版为加了 PLAN 步骤 5 回退的原则版本,伪影版分数不作提交依据。++解读:(a) w 网格单峰、0.15–0.35 全平台高于父,mincorr 0.30 是内点最优(0.25/0.45 都更低),level=mult/add+都超父 → 不是刀尖配置。(b) 纯幅度对照 α=0.75 掉到 56.11、常数-b 对照 57.04 < 含结构 57.33/57.27 → 收益+主体来自 b 的**逐基因结构**,不是均匀幅度/电平效应。(c) PLAN 守卫在 w=0.25 通过(de_dir 0.4181≥0.3839、+variogram 0.03468≤0.0355);w=0.5 首筛即破守卫(0.3544),按 PLAN 转保守 sign 变体(56.74,也低于父)。+(d) PLAN 机制生效判据"∃w: mmd_u↓ 且 de_dir≥0.3839"在 w=0.35 满足(mmd_u 0.04747<0.0485、de_dir 0.4001);+榜分最优 w=0.25 处 mmd_u 持平,净收益落在 DE 两项+variogram+nb_mmd。**与 PLAN 预期不同:提交配置下+mmd_u 本身没降**——b 修正的是跨数据集可复现的方向成分,改善体现在 de_direction(0.384→0.418)而非分布+距离;cell_state 组 +0.07(58.85→58.92 量级),expression_change 组约 +1.1。++机制证据(PLAN mechanism_evidence,提交配置):(1) 10 个匹配型 spearman(v_pre,v_post)=0.61–0.83、符号翻转+比例 15–26%(DEBUG ext_corr 行逐型列出);(2) 预测质心位移 ‖pb_submit−pb_parent‖₂=0.520(max|Δ|=0.151),+100% 细胞表达改变(匹配型速度修正 + 再闭合电平 r_med 1.80→1.45 的全局效应),中位线性总量 18246→14387;+(3) 四指标随 w 变化见上表;(4) 分型 MMD 贡献分解未做(需真值,离线不可得)。++## 验证过的++- 默认输出 = 已查分的提交预测(57.249 那次),逐位一致;`vec-check --task T2:heart:val_extrap/proxy_noscale` ok。+- `--ablate w` 输出逐位 = 父节点基线(X 与坐标 array_equal)→ mechanism_active 预期 yes。+- seed 0 / 1 输出逐位相同(锚 24826 ≤ max_cells 25179,take 全取,无抽样随机性)。+- 伪装视图(换路径、manifest 键序打乱、全部阶段时间含 external 窗口 +1 天)输出逐位相同 → 视图无关。+- external 置空的伪装视图 → 输出逐位=父(PLAN 步骤 7 退路)。单输入阶段退路承父(在 ext 代码之前分支)。+- CPU ~3.5 s、峰值内存 < 2 GB(EXECUTION.json gpu:false 承父);无 NaN/Inf;坐标/行序/细胞数冻结。++## 未验证 / 风险++- B 半与官网:A 半 +0.38(提交版)在 T2 噪声(~1 分)量级内,但 de_dir raw +0.034 是结构性的(方向信息,+  非抽样涨落),且 6+ 配置组成的平台整体高于父,预期部分迁移;外推榜本地尺子历史高估,不作真实分估计。+- 再闭合电平 r_med 1.80→1.45(输出比父暗 21%):node 39 曾示亮度是信号,本配置 de_score 反升(0.278→+  0.292),说明方向收益压过电平损失,但该权衡在 B 半未验证。+- 匹配阈值 0.30 放进了 5 个低相关(0.31–0.44)的非心肌型(ExEM-2、HEM-Endoth、Intra-Endoth-1/2、JCF、+  aPHM),mincorr=0.45 实验说明它们净贡献为正(去掉反而低 0.31–0.39),但这些匹配生物学上存疑(ext 是+  纯心脏样本,相关可能只反映泛表达谱形);换一份 external 数据时匹配集自适应,效果不保证。+- VEC_FRONT_BETA(型内前沿逐细胞解码)已实现、默认 0、**未查分**(离线门控 spearman 0.61→0.60 略降,+  不值配额),留给后续节点。+- 真实 final 视图与 proxy 同括号同 external 挂载规则,预期行为相同;未在 final 上实跑。++## 知识来源++未使用任何已发布/保留阶段的测量值(比例、表达、尺寸、类型清单均未写死);未使用文献生物学断言。型匹配、+电平匹配、b_t、覆盖回退全部由视图输入现场计算;panel 重归一化是 CP10k 定义层面的技术步骤,非生物学知识。+PLAN sources 为空,本节点无新增。diff --git a/solution/README.md b/solution/README.mdindex 834cf2d..6c0d6a0 100644--- a/solution/README.md+++ b/solution/README.md@@ -1,23 +1,20 @@-# 提交态 = 父节点 35 逐位(NO_CHANGE):VDIFF 位移场空间混合已实现并证否(T2:heart:val_extrap,T2HX-01,节点 37)+# 提交态 = 节点 35 基座 + 外部复制速度修正(node 41,T2HX-01,T2:heart:val_extrap) -copy_last 基座(坐标/行序/细胞数/组成冻结)承自节点 33/35:锚阶段表达先在坐标 15-NN 图上做两步支撑掩码-扩散平滑(ε=0.1,零模式逐位保留,逐基因列缩放复原伪批量),再按共有细胞型的相对差速度+copy_last 基座(坐标/行序/细胞数/组成冻结)承自节点 33/35:锚阶段表达先在坐标 15-NN 图上做两步支撑+掩码扩散平滑(ε=0.1,零模式逐位保留,逐基因列缩放复原伪批量),再按共有细胞型的相对差速度 v_t=(m_a−m_p)/(m_p+1) 做乘法位移 x′=x_smoothed·2^(α·v̂_t)(α=1,k=0.5 MAD 软阈值),门控 (std 比 ≥0.01、spearman ≥0.3)通过后做几何再闭合 s_i=(r_med/r̃_i)^γ(γ=1.35,r̃=β_rec=0.15 坐标 15-NN 低通 + 电平中性 matched)与 PBC=10 钳亮尾。 -**节点 37 改动(全部默认关,输出逐位 = 节点 35)**:-- `VEC_VDIFF_W`(默认 0=提交态):位移前把逐细胞 log2 速度场在坐标 15-NN 上混合一步-  `d_eff=(1−W)v_type(i)+W·mean_{kNN}v_type(j)`,`VEC_VDIFF_K=15`、`VEC_VDIFF_NORM`(幅度保持变体)。-  W=0.1–0.5 六档 + NORM/α 补偿变体共 9 次查分:nb_mmd 单调改善(0.08093→0.07845)但-  de_direction/variogram 等值恶化,PLAN 守卫(de_dir≥0.3839)全档失败,总分差 ≤0.05(噪声内)→ 证否。-- `VEC_BETA_REC` 支持负值(再闭合场锐化;β=−0.15 实测 nb_mmd 0.07947 但 DE 更差 → 证否,默认 +0.15 承父)。+**节点 41 机制(默认开,`VEC_EXT_W=0.25`)**:视图 external/ 挂载的 Qiu 心脏样本与锚同时刻+(外推榜窗口规则决定,PLAN 的晚段速度 Δt2=0 不可算),改作锚阶段的跨数据集独立复制:panel-CP10k+重归一 + 相关匹配细胞型(运行时数据驱动,corr≥0.30,本视图 10 型)+ mult 电平匹配后,按型相对差+b_t=(m_ext−m_a)/(m_a+1) 在软阈值前混入速度 v←(1−w)v+w·b(w=0.25;ext 未测基因 b=0 回退)。+A 半 57.249(父 56.869),de_direction 0.3839→0.4181、nb_mmd 0.0809→0.0797;w 0.15–0.35 平台+均高于父;纯幅度对照(α=0.75→56.11)与常数-b 对照(57.04)证明收益来自 b 的逐基因结构。明细与+18 次查分表见 METHOD.md。 -结论:该基座所有表达变换轴(α、W、β_rec 双符号、k、ε)落在同一条帕累托前沿上-(DE+variogram ↔ nb_mmd+mmd_u 约 1:1 points 交换),加权和在父配置处已近最优;明细见 METHOD.md。--- 运行:`python run.py --data <view> --out <pred.h5ad> --seed <int>`;CPU ~3.5s、<1.5GB(`EXECUTION.json gpu:false`)。-- 关闭对照:`--ablate <任意名>` → VDIFF_W=0(提交态本就为 0)→ 输出与完整运行逐位相同(已验证;-  NO_CHANGE 状态下 mechanism_active 预期为 no)。-- 确定性:seed 0 逐位可复现;seed 0/1 内容一致(锚 24826 ≤ max_cells,take 全取,仅 uns/generator_seed 变);-  无绝对时间、无视图标识、无写死常数;单输入/锚≠末输入退路逐位 copy_last(承父)。+- 运行:`python run.py --data <view> --out <pred.h5ad> --seed <int>`;CPU ~3.5s、<2GB(`EXECUTION.json gpu:false`)。+- 关闭对照:`--ablate <任意名>` → EXT_W=0、FRONT_BETA=0 → 输出逐位=父节点 35(已验证)。+- 确定性:seed 0/1 逐位一致(锚全取无抽样);伪装视图(路径/键序/时间平移+1 天含 external 窗口)逐位一致;+  external 置空 → 逐位=父;单输入阶段退路承父;无绝对时间、无视图标识、无写死常数。diff --git a/solution/run.py b/solution/run.pyindex 94b0680..8ffbefc 100644--- a/solution/run.py+++ b/solution/run.py@@ -24,11 +24,45 @@ Mechanism (on by default, alpha = 1.0):  Coordinates, row order and cell count are never modified. ---ablate <name> (any name) turns THIS node's mechanisms off (blend lambda=1,-totnorm w=0, type_shrink w=0) and keeps the rest of the pipeline unchanged.-Node 39 ships with all its mechanisms OFF (falsified -- see the node 39 block-below), so the ablated run is bit-for-bit identical to the full run (both =-parent node 35).+--ablate <name> (any name) turns THIS node's mechanisms off (node 41:+VEC_EXT_W -> 0, VEC_FRONT_BETA -> 0) and keeps the rest of the pipeline+unchanged, so the ablated run is bit-for-bit parent node 35/37/39 (verified).++Node 41 (T2HX-01, three-point velocity correction, SUBMITTED, w = 0.25):+the PLAN's late-segment velocity cannot be formed on this board: on+extrapolation boards the view's external/ is window-filtered to stages+<= the last input, so the mounted Qiu heart sample sits AT the anchor time+(e_lo = e_hi = anchor), dt2 = 0, and its label vocabulary (First/Second+heart field, Endocardial cells) does not intersect the official anchor type+names. Adaptation (documented in METHOD.md): the external sample is used as+an independent REPLICATE of the anchor stage. Per official type, the sample+is matched to the external type with the highest pseudobulk Pearson corr+(computed FROM THE DATA at runtime, min corr 0.30, no hard-coded label+map); external cells are re-normalised to panel CP10k and the type mean is+level-matched (mult) to the official anchor mean; b_t = (m_ext - m_a)/(m_a+1)+(relative-difference form of the parent's velocity estimator) is mixed into+the per-type velocity BEFORE soft-thresholding: v_t <- (1-w)*v_t + w*b_t,+w = 0.25 (VEC_EXT_W). Genes not measured by any external dataset get b = 0+(keep v_early, PLAN step 5 fallback -- their fill-zero m_ext would otherwise+inject a pure measurement artefact, e.g. Cemip2 b = -0.84); types with no+match keep v_t. Everything downstream (eps=0.1 smoothing substrate, alpha=1,+k=0.5, rel estimator, gamma=1.35 re-closure, beta_rec=0.15, PBC=10, gates,+frozen coordinates/rows/composition) is bit-for-bit the parent. w=0 (default+under --ablate, or no usable external data) -> output bit-for-bit parent 35.+A-half proxy_noscale (parent 56.869): SUBMITTED covfix w=0.25 -> 57.249+(de_direction 0.3839->0.4181, de_score ~0.278->0.2917, variogram+0.0354->0.03468, neighborhood_mmd 0.08093->0.07970, mmd_u 0.0485->0.04866+flat); the pre-covfix variant scored 57.331 (difference within noise; the+principled version is submitted). w grid (pre-covfix) 0.15/0.2/0.25/0.35/0.5+-> 57.12/57.25/57.33/57.19/56.61 (unimodal, whole plateau above parent);+mincorr 0.25/0.30/0.45 -> 57.22/57.33/56.94 (interior optimum); level=add+57.20; centred-b (mixc) 57.27; constant-b control (mixconst) 57.04; shrink+mode w=1 57.25; mix+shrink 57.27; sign mode 56.74; sub w=0.5 55.68;+alpha=0.75 amplitude control 56.11 (the gain is NOT a uniform amplitude+effect); mix w=0.25 with alpha=1.15 57.08. 18 queries. Disguised-view test+(path, manifest key order, all times +1 day incl. external windows):+prediction bit-identical. Seed 0/1 bit-identical (anchor fits under+max_cells -> take() returns all rows).  Node 39 (T2HX-09, linear-space anchor blend): FALSIFIED, ships OFF (VEC_BLEND_LAMBDA=1.0, VEC_TOTNORM_W=0, VEC_TYPE_SHRINK=0), so the output is@@ -388,6 +422,12 @@ VEC_PBC (10.0), VEC_MIXMODE (rel), VEC_MIXREL (1.0), VEC_MIXEPS (1.0), VEC_DOMAIN (log), VEC_SOFTD (0), VEC_CAPD (0), VEC_CVEL (-1 = legacy max(c,1)), VEC_VMEAN (log; used only in est mode), VEC_WMIX (0.0), VEC_AUP/VEC_ADN (1.0), VEC_GATE_SPEARMAN (0.3), VEC_DEBUG.+Node 41 knobs: VEC_EXT_W (0.25 = submitted), VEC_EXT_MODE (mix; also+mixc/mixconst/sub/sign/shrink/mixshrink), VEC_EXT_S (1.0, mixshrink only),+VEC_EXT_LEVEL (mult; add|none), VEC_EXT_MINCELLS (20), VEC_EXT_MINCORR+(0.30), VEC_EXT_TOL (0.25 days, time-difference tolerance),+VEC_FRONT_BETA (0.0 = off, untested per-cell frontier decode),+VEC_FRONT_CLIP (3.0). No absolute stage times are used; only the ordering of manifest inputs. """ @@ -459,6 +499,37 @@ REGRESS_KEEPMEAN = os.environ.get("VEC_REGRESS_KEEPMEAN", "0") not in ("0", "", SMOOTH_STEPS = int(os.environ.get("VEC_SMOOTH_STEPS", "2")) SMOOTH_EPS = float(os.environ.get("VEC_SMOOTH_EPS", "0.1")) SMOOTH_K = int(os.environ.get("VEC_SMOOTH_K", "15"))+# Node 41 (PLAN T2HX-01 three-point velocity correction): external replicate+# of the anchor stage (mounted in the view's external/, window-filtered to+# <= last input on extrapolation boards, hence AT the anchor time, not after+# it -- the PLAN's late-segment velocity (dt2 = ext - anchor) degenerates to+# dt2 = 0 and cannot be formed). Adapted mechanism: per matched cell type,+# b_t = (m_ext - m_anchor)/(m_anchor + 1) (relative-difference form of the+# cross-dataset discrepancy at the SAME developmental time, after panel+# re-normalisation and level matching) is used to correct the per-type+# velocity v_t before soft-thresholding. Modes:+#   mix    (PLAN literal, dt2 -> 1 stage unit): v <- (1-w)*v + w*b+#   sub    (batch-artefact removal):            v <- v - w*b+#   sign   (PLAN conservative variant):         v <- |v|*sign(b) where signs disagree+#   shrink (replicate-reliability weighting):   v <- v / (1 + w*|b|/median|b|)+# w = 0 (default) -> bit-for-bit parent node 35/37.+EXT_W = float(os.environ.get("VEC_EXT_W", "0.25"))  # node 41 submitted: w = 0.25 (A-half grid peak; plateau 0.15-0.35 all > parent; --ablate forces 0 = bit-for-bit parent)+EXT_S = float(os.environ.get("VEC_EXT_S", "1.0"))  # shrink weight inside mode=mixshrink+EXT_MODE = os.environ.get("VEC_EXT_MODE", "mix")+EXT_LEVEL = os.environ.get("VEC_EXT_LEVEL", "mult")  # level matching of ext type means: mult | add | none+EXT_MINCELLS = int(os.environ.get("VEC_EXT_MINCELLS", "20"))  # min cells of an ext type to be usable+EXT_MINCORR = float(os.environ.get("VEC_EXT_MINCORR", "0.30"))  # min Pearson corr(ext pb, anchor pb) to accept a type match+EXT_TOL = float(os.environ.get("VEC_EXT_TOL", "0.25"))  # days: an ext dataset counts as an anchor-time replicate if e_lo <= anchor + tol (time DIFFERENCE, view-shift invariant)+# Node 41 fallback mechanism (per-cell frontier decode): within a type, scale+# each cell's velocity by (1 + beta*z_i), z_i = standardised projection of the+# cell's centred log1p profile onto the type velocity direction (mean 0 by+# construction -> the per-type mean velocity, hence dp, is preserved to first+# order). Cells already further along the trajectory are displaced further:+# elongates the within-type cloud ALONG the velocity axis (the developmental+# asynchrony a real later stage shows) instead of shrinking width (node 39+# falsified) or post-hoc amplitude axes (Pareto front, nodes 33-39).+FRONT_BETA = float(os.environ.get("VEC_FRONT_BETA", "0.0"))  # 0 = off+FRONT_CLIP = float(os.environ.get("VEC_FRONT_CLIP", "3.0"))  # z clip in std units DEBUG = bool(os.environ.get("VEC_DEBUG"))  @@ -552,8 +623,164 @@ def _ols_residual(v: np.ndarray, x: np.ndarray, coef: np.ndarray | None) -> tupl     return resid, coef, r2  +def external_anchor_reps(view: str, manifest: dict, genes: list[str],+                         anchor_time: float, target_time: float):+    """Load external datasets that replicate the anchor stage window.++    Returns a list of (X_panel, labels) with X re-normalised to panel CP10k+    (log1p) so per-gene levels are comparable to the official inputs.+    Acceptance uses only TIME DIFFERENCES to the anchor/target (view-shift+    invariant): e_lo <= anchor_time + EXT_TOL and e_hi >= anchor_time - EXT_TOL+    (an anchor-time replicate) or any window intersecting (anchor, target]+    (the PLAN's intended late sample, should a view ever mount one).+    """+    out = []+    for ent in manifest.get("external") or []:+        try:+            e_lo = float(ent.get("e_lo", ent.get("time", -1e9)))+            e_hi = float(ent.get("e_hi", ent.get("time", -1e9)))+        except (TypeError, ValueError):+            continue+        # never use samples beyond the target or strictly before the anchor window+        if e_lo > target_time + 1e-9 or e_hi < anchor_time - EXT_TOL:+            continue+        import anndata as ad+        import scipy.sparse as sps+        try:+            a = ad.read_h5ad(str(view) + "/" + ent["path"])+        except Exception as exc:  # unreadable external sample -> skip, never crash+            if DEBUG:+                print(f"ext {ent.get('id')}: unreadable ({exc}), skipped", flush=True)+            continue+        if "celltype" not in a.obs.columns:+            if DEBUG:+                print(f"ext {ent.get('id')}: no celltype column, skipped", flush=True)+            continue+        names = [str(g) for g in a.var_names]+        gpos = {g: i for i, g in enumerate(names)}+        idx = [gpos.get(g, -1) for g in genes]+        have = np.flatnonzero(np.asarray(idx) >= 0)+        if have.size < max(50, int(0.5 * len(genes))):+            if DEBUG:+                print(f"ext {ent.get('id')}: only {have.size} panel genes, skipped", flush=True)+            continue+        X = a.X+        X = X.toarray() if sps.issparse(X) else np.asarray(X)+        X = np.asarray(X, dtype=np.float64)+        # re-normalise each cell to panel CP10k, then log1p (linear-domain+        # rescale: the external assay normalises over its own gene universe,+        # so panel genes carry only a fraction of the total mass)+        Xp = np.zeros((X.shape[0], len(genes)), dtype=np.float64)+        cols = np.asarray(idx)[have]+        Xp[:, have] = X[:, cols]+        covered = np.zeros(len(genes), dtype=bool)+        covered[have] = True+        tot = Xp.sum(axis=1, keepdims=True)+        X = np.log1p(np.divide(Xp * 10000.0, np.maximum(tot, 1e-12)))+        lab = np.asarray(a.obs["celltype"]).astype(str) if "celltype" in a.obs.columns \+            else np.zeros(X.shape[0], dtype=str)+        out.append((X, lab, ent.get("id", "?"), covered))+        if DEBUG:+            print(f"ext {ent.get('id')}: n={X.shape[0]} panel_genes={have.size} "+                  f"mean_log1p={X.mean():.3f} types={sorted(set(lab.tolist()))}", flush=True)+    return out+++def ext_type_offsets(reps, Xa: np.ndarray, la: np.ndarray) -> dict:+    """Per official anchor type: relative cross-dataset discrepancy b_t.++    Cell-type matching is computed FROM THE DATA at runtime (Pearson corr of+    type pseudobulks on the shared panel; argmax, deterministic tie-break by+    sorted name) -- no hard-coded label vocabulary. The matched ext mean is+    level-matched to the official anchor mean (EXT_LEVEL) so b_t carries only+    the gene-wise structure of the discrepancy, not the global depth offset.+    """+    if not reps:+        return {}+    Xe = np.vstack([r[0] for r in reps])+    lab_e = np.concatenate([r[1] for r in reps])+    # genes not measured by ANY external dataset keep v_early (PLAN step 5):+    # their m_ext is a fill-zero, so b would be a pure measurement artefact+    covered = np.logical_or.reduce([r[3] for r in reps])+    types_e = sorted(set(lab_e.tolist()))+    pbe = {t: Xe[lab_e == t].mean(axis=0) for t in types_e+           if int((lab_e == t).sum()) >= EXT_MINCELLS}+    b_map: dict[str, np.ndarray] = {}+    if not pbe:+        return b_map+    for t in sorted(set(np.asarray(la).astype(str).tolist())):+        m_t = np.asarray(la).astype(str) == t+        n_t = int(m_t.sum())+        if n_t < 10:+            continue+        ma = Xa[m_t].mean(axis=0)+        # deterministic argmax over sorted ext type names (corr on covered genes)+        best_te, best_c = None, -2.0+        for te in sorted(pbe.keys()):+            c = float(np.corrcoef(pbe[te][covered], ma[covered])[0, 1])+            if c > best_c:+                best_te, best_c = te, c+        if best_te is None or best_c < EXT_MINCORR:+            if DEBUG:+                print(f"ext_match {t}: no match (best {best_te} corr {best_c:.3f})", flush=True)+            continue+        me = pbe[best_te]+        if EXT_LEVEL == "mult":+            me = me * (float(ma[covered].sum()) / max(float(me[covered].sum()), 1e-12))+        elif EXT_LEVEL == "add":+            me = me + (float(np.median(ma[covered])) - float(np.median(me[covered])))+        b = (me - ma) / (ma + 1.0)+        b[~covered] = 0.0  # PLAN step 5: unmeasured genes keep v_early+        b_map[t] = b+        if DEBUG:+            b = b_map[t]+            print(f"ext_match {t} <- {best_te} corr={best_c:.3f} n_ext={int((lab_e == best_te).sum())} "+                  f"med|b|={np.median(np.abs(b)):.4f} med(b)={np.median(b):+.4f}", flush=True)+    return b_map+++def apply_ext_correction(v_t: np.ndarray, b_t: np.ndarray, w: float, mode: str) -> np.ndarray:+    """PLAN-adapted velocity correction from the anchor-time external replicate."""+    if mode == "mix":+        return (1.0 - w) * v_t + w * b_t+    if mode == "mixc":+        # Median-centred b: pure gene-wise structure of the cross-dataset+        # discrepancy, no per-type level component (isolates the direction+        # information from the residual dimming the level-matched b carries).+        return (1.0 - w) * v_t + w * (b_t - float(np.median(b_t)))+    if mode == "mixconst":+        # DIAGNOSTIC control: replace b_t by its own per-type median (constant+        # offset, no gene structure). If this reproduces the mix gain, the+        # mechanism is a uniform velocity offset, not cross-dataset direction+        # information.+        return (1.0 - w) * v_t + w * float(np.median(b_t))+    if mode == "sub":+        return v_t - w * b_t+    if mode == "sign":+        flip = (np.sign(b_t) != np.sign(v_t)) & (v_t != 0.0)+        out = v_t.copy()+        out[flip] = -out[flip]+        return out+    if mode == "shrink":+        med_b = float(np.median(np.abs(b_t)))+        if med_b <= 1e-12:+            return v_t+        return v_t / (1.0 + w * np.abs(b_t) / med_b)+    if mode == "mixshrink":+        # combination: mix the structure of b into v (weight w), then damp+        # genes whose cross-dataset discrepancy is large (weight EXT_S).+        med_b = float(np.median(np.abs(b_t)))+        out = (1.0 - w) * v_t + w * b_t+        if med_b > 1e-12 and EXT_S > 0.0:+            out = out / (1.0 + EXT_S * np.abs(b_t) / med_b)+        return out+    return v_t++ def type_velocity(Xa: np.ndarray, la: np.ndarray, Xb: np.ndarray, lb: np.ndarray,-                  c: float, k: float, regress: bool, shrink: bool) -> tuple[np.ndarray, list]:+                  c: float, k: float, regress: bool, shrink: bool,+                  ext_b: dict | None = None, ext_w: float = 0.0,+                  ext_mode: str = "mix") -> tuple[np.ndarray, list]:     """Per-cell log2-domain pseudobulk fold-change velocity for anchor cells."""     V = np.zeros_like(Xa)     types_a = np.asarray(la).astype(str)@@ -656,6 +883,18 @@ def type_velocity(Xa: np.ndarray, la: np.ndarray, Xb: np.ndarray, lb: np.ndarray             rinfo = {"r2": r2, "std_scale": scale, "spearman": sp_pre_post,                      "n_genes": int(v_t.size)}             v_t = v_new+        if ext_b and ext_w != 0.0 and t in ext_b:+            b_t = ext_b[t]+            v_pre = v_t+            v_t = apply_ext_correction(v_t, b_t, ext_w, ext_mode)+            if DEBUG:+                from scipy.stats import spearmanr+                flip = float(((np.sign(v_t) != np.sign(v_pre)) & (v_pre != 0.0)).mean())+                sp_b = float(spearmanr(v_pre, v_t).statistic)+                d_l2 = float(np.linalg.norm(v_t - v_pre))+                print(f"ext_corr {t}: mode={ext_mode} w={ext_w} spearman(v_pre,v_post)={sp_b:.4f} "+                      f"sign_flip_frac={flip:.4f} |dv|_L2={d_l2:.4f} "+                      f"|v_pre|_L2={float(np.linalg.norm(v_pre)):.4f}", flush=True)         v_t, zeroed = soft_threshold(v_t, k)         V[ia] = v_t         per_type.append((t, len(ia), len(ib), float(np.linalg.norm(v_t)), zeroed, rinfo))@@ -682,6 +921,12 @@ def main() -> None:     regress = VEL_REGRESS and args.ablate is None     shrink_on = SHRINK_N0 > 0.0 and args.ablate is None     vdiff_w = VDIFF_W if args.ablate is None else 0.0+    # Node 41 off-control: --ablate <any> turns off THIS node's mechanisms+    # (the external-replicate velocity correction and the per-cell frontier+    # decode) and nothing else; with both off the pipeline is bit-for-bit+    # parent node 35/37.+    ext_w = EXT_W if args.ablate is None else 0.0+    front_beta = FRONT_BETA if args.ablate is None else 0.0     reclose_geo = RECLOSE_GEO     # If the submitted mechanism is the SHARPENED re-closure field     # (BETA_REC < 0), --ablate reverts it to the raw per-cell field@@ -730,7 +975,53 @@ def main() -> None:                       f"zero_pattern_preserved={sinfo.get('zero_pattern_preserved')} "                       f"col_scale_med={sinfo.get('col_scale_med', 1.0):.4f}", flush=True)             c_vel = pseudocount if pseudocount > 0 else (CVEL if CVEL >= 0 else 1.0)-            V, per_type = type_velocity(Xa, stage.labels[rows], Xb, prev.labels, c_vel, SOFT_K, regress, shrink_on)+            ext_b: dict = {}+            if ext_w != 0.0:+                # PLAN step 1 (adapted): discover the external sample of the+                # anchor window from the manifest (no hard-coded dates/names).+                reps = external_anchor_reps(args.data, manifest, genes,+                                            float(anchor_entry(manifest)["time"]),+                                            float(manifest["target"]["time"]))+                ext_b = ext_type_offsets(reps, Xa, np.asarray(stage.labels[rows]).astype(str))+                if not ext_b:+                    # PLAN step 7 fallback: no usable external cardiac sample+                    # -> w forced to 0, output bit-for-bit parent.+                    if DEBUG:+                        print("ext: no usable external replicate, w forced to 0", flush=True)+                    ext_w = 0.0+            V, per_type = type_velocity(Xa, stage.labels[rows], Xb, prev.labels, c_vel, SOFT_K,+                                        regress, shrink_on, ext_b=ext_b, ext_w=ext_w,+                                        ext_mode=EXT_MODE)+            if front_beta != 0.0:+                # Per-cell frontier decode: within each type, scale the velocity+                # by (1 + beta*z_i) with z_i the standardised projection of the+                # cell's centred smoothed profile onto the type velocity+                # direction. mean(z) = 0 per type -> the per-type MEAN velocity+                # (hence the pseudobulk displacement direction) is preserved to+                # first order; only the within-type ALLOCATION of the+                # displacement changes (developmental asynchrony).+                lab_f = np.asarray(stage.labels[rows]).astype(str)+                n_front = 0+                for t in sorted(set(lab_f.tolist())):+                    m_t = lab_f == t+                    v_t = V[m_t][0] if int(m_t.sum()) > 0 else None+                    if v_t is None or int(m_t.sum()) < 8 or float(np.linalg.norm(v_t)) <= 1e-12:+                        continue+                    if not np.allclose(V[m_t], v_t):+                        continue  # velocity already per-cell (e.g. after vdiff); skip to stay conservative+                    blk = Xs[m_t]+                    mu_t = blk.mean(axis=0)+                    proj = (blk - mu_t) @ v_t+                    sd = float(proj.std())+                    if sd <= 1e-12:+                        continue+                    z = np.clip((proj - float(proj.mean())) / sd, -FRONT_CLIP, FRONT_CLIP)+                    z = z - float(z.mean())  # exact mean-zero after clipping+                    V[m_t] = v_t[None, :] * (1.0 + front_beta * z[:, None])+                    n_front += int(m_t.sum())+                if DEBUG:+                    print(f"front: beta={front_beta} clip={FRONT_CLIP} cells_modulated={n_front} "+                          f"({n_front / max(V.shape[0], 1):.3f})", flush=True)             if vdiff_w > 0:                 # Spatial velocity diffusion: blend each cell's type velocity                 # with the mean type velocity over its VDIFF_K nearest

调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k027Joint expression-geometry generation with relative geometrynotes/competition/03_solution_landscape.md
k024World-model evaluation dimensions for state-transition predictorsnotes/competition/07_biomedical_world_models.md

分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。

改了什么PLAN 的三点速度前提被数据证否(外推榜 external/ 窗口只保留 ≤末输入阶段,Qiu 样本 e_lo=e_hi=锚时刻,Δt2=0),Engineer 适配为锚同时刻跨数据集复制修正:外部样本 panel-CP10k 重归一、运行时伪批量相关匹配细胞型(corr≥0.30,10 型)、mult 电平匹配后按型相对差 b_t 以 w=0.25 在软阈值前混入速度 v←(1−w)v+w·b(ext 未测基因 b=0 回退),其余管线逐位承父 35。
各组分数的变化cell_state:噪声内:+0.23(58.92→59.15)。PLAN 的目标弱项 mmd_u raw 0.04751→0.04759(得分 -0.00,持平),variogram raw 0.03471→0.0340(得分 +0.06)——b 修正没有改善分布距离,与 Engineer 自报一致
expression_change:变好(本组最大收益):+1.21(60.35→61.56)。de_direction raw 0.3874→0.4226(skill 0.621→0.635,得分 +0.17),de_score raw 0.2778→0.3056(skill 0.586→0.597,得分 +0.13);raw 变化方向与 Engineer 18 次查分的 w∈[0.15,0.35] 平台一致,但组变化对应榜分 +0.47 整体仍在 T2 噪声(~1 分)内
local_spatial:轻微变好/接近噪声:+0.43(59.15→59.58)。neighborhood_mmd raw 0.07784→0.07647(skill 0.592→0.596,得分 +0.11),单项变化小于组噪声但方向与 raw 改善一致
shape_scale:不变:50.00→50.00,三项(d2_shape 0.04911、occupancy_dice 0.8066、scale_log_ratio -0.4334)raw 与 skill 全同,均在地板 0.5
family_idT2HX-01
假设是否成立否
经验
  1. 在外推榜上,external/ 按窗口规则只挂 ≤末输入阶段的样本,因此外部样本只能作锚时刻复制(Δt2=0),任何依赖 external 提供 anchor 与 target 之间第三时间点的 PLAN 前提在此榜不成立;写 PLAN 前应先核对 manifest 的 e_lo/e_hi 与窗口规则
  2. 跨数据集(Qiu vs 官方)标签词汇可零交集,用伪批量 Pearson 相关做数据驱动型匹配(阈值 0.30)可行且是内点最优(0.25/0.45 均更低);外部 assay 在全转录组上归一,须先做 panel-CP10k 重归一,且 ext 未测基因要 b=0 回退,否则 fill-zero 注入测量伪影(如 Cemip2 伪 b=-0.84)
  3. 锚同时刻复制差 b_t 混入速度(w=0.25)改善的是 DE 方向类指标(de_direction raw +0.035)和 nb_mmd,而非 mmd_u/cell_state:跨数据集可复现的方向成分修正不改变分布距离,PLAN 预期的 cell_state 收益未兑现
  4. 对照组设计有效:常数 b(mixconst 57.04)与纯幅度 α=0.75(56.11)均低于含结构的 mix(57.25-57.33),可归因收益来自 b 的逐基因结构而非均匀幅度/电平效应——后续速度修正类节点应保留这两类对照
  5. 榜分 +0.47 在 T2 噪声(~1 分)内,且外推榜本地尺子历史高估(54.2→49.6),本地小幅领先不可当真实收益;本节点可保留的依据是 de_direction raw 的结构性提升与 w 平台的一致性
mechanism_active是
下一步建议
  1. 在提交配置(EXT_W=0.25)上重扫再闭合轴 γ(1.1/1.2/1.35/1.5)与 β_rec:速度分布已变(再闭合电平 r_med 1.80→1.45),node 31 显示 γ 是历史唯一动过 mmd_u 的轴,针对 cell_state 组
  2. 试 w=0.35(Engineer 网格中 mmd_u 0.04747<父 0.0485 且 de_dir 0.4001≥守卫 0.3839)作为 cell_state/DE 折中点,单次查分验证 mmd_u 改善是否复现,针对 cell_state 组
  3. 查分已实现未测的 VEC_FRONT_BETA(型内前沿逐细胞速度解码,β 取 0.1-0.3 小档),针对 local_spatial/cell_state;若离线 spearman 门再降则放弃
  4. 后续任何依赖 external 数据的 PLAN 先在 manifest 里核对样本的 e_lo/e_hi 是否真落在 (anchor, target) 区间,避免重复本节点的三点速度前提证否

对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。

只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。

分析员

角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。分析员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数?大模型一共回复了几轮(每轮可以调用多个工具)。3
工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。共 2 次:bash 1、write 1
用时1 分
token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。输入 22,520 · 输出 1,499 · 思考 1,720
任务(第一行)分析节点 n41 的打分结果,写 ANALYSIS.json
最后的回答(摘录)
ANALYSIS.json written
原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/analyst.jsonl 8 KB
/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/analyst.stderr

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数72
工具调用共 75 次:bash 46、edit 18、read 8、write 3
用时44 分
token 数输入 286,144 · 输出 35,716 · 思考 46,118
任务(第一行)按计划修改程序:三点速度方向修正:外部Qiu E8.75修正按型外推质心
最后的回答(摘录)
Done. Final summary:

**做了什么**:PLAN 的三点速度修正前提被数据证否(外推榜 external/ 按窗口规则只挂 ≤末输入的阶段,Qiu E8.75 恰在锚时刻,Δt2=0,且标签词汇与官方零交集),按 improve 规则适配为**锚同时刻跨数据集复制修正**:panel-CP10k 重归一 + 运行时相关匹配细胞型(10 型,corr≥0.30)+ 电平匹配后,按型相对差 b_t 在软阈值前混入速度(v←(1−w)v+w·b,w=0.25;ext 未测基因 b=0 回退);其余管线逐位承父 35。

**查分**(A 半,父 56.869,18/20 次):提交版 **57.249**(de_direction 0.3839→0.4181、de_score 0.278→0.292、nb_mmd 0.0809→0.0797、mmd_u 持平);w∈[0.15,0.35] 平台全高于父,mincorr=0.30 为内点最优;对照证明收益来自 b 的逐基因结构而非幅度(α=0.75→56.11、常数 b→57.04);PLAN 其余解码(sign 56.74、sub 55.68、shrink 57.25、mixshrink 57.27)均已测。验证:--ablate 逐位=父、seed 0/1/2 一致、伪装视图(时间+1 天/键序打乱/换路径)逐位一致、external 置空=父、vec-check ok、CPU 3.5s。

**下一步最值得试**:(1) 未查分的 `VEC_FRONT_BETA`(型内前沿逐细胞速度解码,已实现默认关);(2) 在提交配置上重扫 γ/ε 耦合(速度分布变了,再闭合最优点可能移动);(3) mmd_u 在 w=0.35 降到 0.0475 且守卫通过——若 B 半 DE 收益不迁移,可考虑 w=0.35 的 mmd_u/DE 折中点。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/engineer.jsonl 540 KB
/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时3 分
token 数输入 22,368 · 输出 1,240 · 思考 6,699
任务(第一行)为节点 n41(改进,父节点 n39)写改进计划 PLAN.json
最后的回答(摘录)
合/库尺寸归一共11配置全部证伪后处理轴)。历史唯一mmd_u明显改善(node 31 γ=0.45→0.0454)来自再闭合轴但DE受损。视图内external/有Qiu E8.75心脏样本(介于锚与目标之间、合规),可提供第三时间点修正速度方向,属上游估计改进而非后变换。",
  "approach": "步骤:1) 从视图发现三时间点:prev(输入1)、anchor(输入2/末观测)、ext(external/中Qiu心脏样本,阶段介于anchor与target之间;按manifest的stage/Theiler字段定位,不硬编码日期)。2) 对每个在anchor和ext中均存在的细胞型t,计算log2域伪批量:pb_prev,t、pb_anchor,t、pb_ext,t(c_vel=max(c,1)同父)。3) 计算归一化到单位时间的两段速度:v_early=(log2(pb_anchor+c)−log2(pb_prev+c))/Δt1,v_late=(log2(pb_ext+c)−log2(pb_anchor+c))/Δt2。4) 混合速度 v_mix=(1−w)·v_early + w·v_late,w为唯一新参数,初始网格{0.25, 0.5, 0.75, 1.0}。5) 对ext中缺失的基因(不在panel或该型在ext中无细胞)回退该基因用v_early。6) 后续管线不变:v_mix替代原v_t进入α=1乘法位移→ε=0.1平滑→k=0.5软阈值→γ=1.35再闭合→β_rec=0.15低通→PBC=10→DE门控。7) 单输入阶段退路:若视图只有一个输入阶段或external/无合规心脏样本,w强制=0,输出逐位=父(=copy_last路径)。8) 快速筛选:先单查w=0.5,核对de_direction≥0.3839且variogram≤0.0355;通过再扫其余3档;首查即击穿守卫则改保守变体(仅取v_late的符号修正v_early方向,幅度不变:v_mix=|v_early|·sign(v_late)当sign不一致时,否则v_early),再查1次。总计≤6次查分。",
  "expected_groups": ["cell_state"],
  "risks": "1) Qiu与官方数据批次效应使v_late幅度失真→de_direction/variogram恶化;Engineer首查w=0.5若de_direction<0.3839即停,转保守符号变体。2) 型标签在两套数据间不完全对应(ext中某些型缺失或命名不一致)→仅用交集型,缺失型回退v_early,不强制匹配。3) mmd_u对速度方向修正无响应(Pareto前沿是结构性的)→若4档w均无法同时改善mmd_u且守住DE守卫,如实报告证否并以w=0提交。4) 外推榜本地尺子已知高估(54.2→49.6),本地<1分领先不可当真实收益;需de_direction与mmd_u同时有≥0.5分的结构性改善才值得继续。",
  "family_id": "T2HX-01",
  "mechanism": "用视图内外部第三时间点(Qiu E8.75)的按型伪批量计算晚段速度,与早段(两输入)速度加权混合,修正外推速度方向,从而修正预测质心在表达空间中的位置。",
  "vs_constant_shift": "常数位移对同型所有细胞施加同一向量、方向来自两输入差分且不随基因时间趋势变化;本机制逐基因逐型地引入独立第三时间点的曲率信息,不同基因获得不同方向/幅度修正(有的被加强、有的被阻尼、有的被翻转),修正量由跨数据集时间轨迹形状决定而非预测自身统计量。",
  "mechanism_evidence": "Engineer应报告:(1) v_mix与v_early的逐基因spearman及符号翻转比例(按型);(2) 位移后按型质心位移量||pb_pred_mix−pb_pred_early||;(3) mmd_u、de_direction、variogram、nb_mmd四项raw值随w的变化表;(4) 若mmd_u改善,检查改善是否集中在特定型(分型MMD贡献)。机制生效标志:存在某w使mmd_u下降且de_direction≥0.3839。",
  "mechanism_off_control": "w=0时v_mix≡v_early,管线与父节点35/37逐位相同;--ablate设w=0,预期输出bit-for-bit等于未ablate运行(因默认若证伪则提交w=0)。若机制生效(某w>0过守卫),关闭后mmd_u回到0.04751、de_direction回到0.3874。",
  "sources": []
}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/researcher.jsonl 5 KB
/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/researcher.stderr

审查员

角色审查员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数10
工具调用共 14 次:read 7、bash 5、grep 1、write 1
用时2 分
token 数输入 58,757 · 输出 2,128 · 思考 1,713
任务(第一行)审查节点 n41 的程序是否越界读取、写死目标、钻评分器漏洞
最后的回答(摘录)
REVIEW.json written
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/reviewer.jsonl 292 KB
/home/spark-longxinyang/vec/runs/formal/20261003-172000-search-t2-heart-extrap-chain-12h/nodes/41/reviewer.stderr