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

总览 · ← 返回运行 20261003-070222-search-t2-heart-extrap-g24-D

节点 n21 在终选来历上

METHOD

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-070222-search-t2-heart-extrap-g24-D
父节点n19
子节点n22
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 59.09(+0.8) · proxy 59.09(+0.8) · 3 次复测均分 59.01
审查通过 1 未发现问题:run.py 只经 view_io(load_manifest/read_stage/panel_genes)读 --data 视图内输入阶段,外部数据仅通过 os.path.join(view, ent['path'])(run.py:150)读取 manifest['external'] 挂载的 external/qiu2024_heart_early_v1/E8.75.h5ad;无绝对路径、..、/mnt、/home、data/raw、打分器路径,未读目标阶段文件(manifest['target'] 仅用于日志 run.py:380),无联网代码。; 2 未发现问题:…
用时?从运行开始到结束(或到现在)的挂钟时间。12 分
程序版本a6c56e3a160ff98eb0a51a09c8b3e7036682d246 (programs.git)

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

来自 programs.git a6c56e3a16:solution/METHOD.md

METHOD

T2HX-09 改进:PLAN 的「official 侧限定心脏谱系细胞」在 proxy 上证伪(53.58,de_direction −0.07);反向操作(δ 的 official 侧只取非心脏匹配类型,锐化全胚 vs 纯心脏的组成对比)有效:λ=0.135 乘性修正,proxy 58.76(父 57.86)。坐标管线不变。

榜 / 视图

T2:heart:val_extrap,proxy = E8.25_late + E8.75 → E9.5。纯 CPU,~2.2 s,内存 <1 GB(EXECUTION.json: gpu=false)。查分用量 6/20。

实际实现与 PLAN 的关系(如实记录)

  1. PLAN 字面机制无法执行:外部 Qiu 文件标签 = {First heart field, Second heart field, Endocardial cells}(作者级标签,未映射到官方词汇),与官方末阶段 33 个类型交集为空(PLAN 风险 3 命中)。改用数据驱动桥接:对官方每个 celltype 算交集基因上的 z-score 均值谱与外部质心的余弦相似度,cos ≥ 0.25·max 且 n ≥ 100 判为「心脏匹配」(proxy 上 = Unknown/V-CM/IFT-CM/Intra-Endoth-2/EXE-Endoderm,5295 细胞,与谱系知识一致:V-CM/IFT-CM 为心肌、Intra-Endoth 为内皮)。无任何硬编码标签名。
  2. PLAN 假设证伪:δ_official 侧限定心脏匹配细胞 → proxy 53.58,de_direction 从 +0.215 跌到 −0.068(1 次查分即触发 PLAN 的停止条件方向)。
  3. 反向假设成立(本节点提交):组成对比本身就是有效信号——δ 的 official 侧只取非匹配类型(19531 细胞),δ = mean(non-cardiac official) − mean(external heart)。三点单调证据:心脏侧 53.58 < 全量 57.86 < 非心脏侧 58.72–58.76,沿组成轴单调;de_direction 同步单调 −0.068 → +0.215 → +0.226。生物学解释(推测):E9.5 心脏区解剖中心脏占比上升,把表达往「心脏 vs 周边组织」方向推与真实时序方向一致;PLAN 的过滤恰恰删掉了这个成分。
  4. λ 扫描(乘性 exp(−λ·δ_norm),δ_norm 去均值标准化,语义同父):0.09→58.48、0.12→58.72、0.135→58.76(提交,平台中心)、0.15→58.74、0.2→58.39。平台 0.12–0.15。
  5. 其余全部继承父节点 19:表达基线照抄末阶段(24826 ≤ max_cells 全量)、坐标 PCA 规范化 + 0.946×max_k RMS(input_k)(shape_scale 66.60 不动)、α=γ=0 边界、无外部同窗数据 → λ=0 安全退化(输出=父节点 16,54.15 保底)。

机制生效的证据 / 对照(mechanism_off_control)

  • VEC_MECH_OFF=1:输出 md5 9d788ba7… 与父节点 16/13/12 逐字节一致(本机复核)✓。
  • VEC_LINEAGE_FILTER=0(λ=0.12 时):δ 统计与父节点 19 METHOD 完全一致(delta_mean 0.2254/std 0.7816/skew 0.4875),复现父行为 ✓。
  • VEC_LINEAGE_FILTER=1(PLAN 字面意图):保留开关与证伪记录(53.58)。
  • 默认 =2:修正实际作用于全部 24826 个输出细胞的 497 个交集基因(乘性,零保持零,稀疏结构逐位置不变,pearson_before_after≈0.984);δ 实质改变:corr(δ_inv_norm, δ_all_norm)≈0.93 但幅度重排,|Δdn| 均值 0.4 量级(心脏侧对照 corr 0.68 < 0.95,PLAN 判据满足)。
  • 四组分变化 vs 父 19(proxy A 半):expression_change 55.99→57.78、cell_state 53.65→54.51、local_spatial 56.78→56.16(噪声内)、shape_scale 66.60→66.60;榜分 57.86→58.76(+0.90,接近 T2 噪声 ~1,但三点单调 + de_direction 同向支持机制真实)。

验证过 / 没验证

  • 验证过:proxy seed0 全部 5 次查分(filter=1 λ0.12;filter=2 λ∈{0.09,0.12,0.135,0.15,0.2});默认配置 = 已查分文件逐字节一致(md5 41a98fd2…);seed 0/1 vec-check 通过;mech-off / lineage=0 对照 md5;跨进程确定性。
  • 没验证:B 半评测复现(+0.90 在噪声边缘,风险:正式分可能与父持平);final 真实视图 external 挂载(无同窗数据 → λ=0 退化 54.15 保底,行为与父相同);「心脏占比随时间上升」的解释未直接检验(用了已发布的 E8.25/E8.75 输入数据算 trend,无禁窗信息);相似度阈值 frac=0.25 / min_type=100 未扫(对结果不敏感:匹配集与谱系常识一致)。

知识来源

无外部生物学知识写死。谱系桥接完全由视图内数据(表达相似度)驱动;「心脏谱系 vs 周边组织」的解释性叙述来自通用谱系常识(心脏在发育中相对增大),仅用于 METHOD 说明,不进入程序逻辑。外部 Qiu E8.75 为 manifest 挂载的合规训练数据(禁窗外)。未使用任何保留阶段/保留基因型信息。

下一步建议

  • local_spatial 略降(噪声内):可对坐标邻域做与表达修正一致性检查,或接受现状。
  • 组成对比方向已确认:可试把 δ 的 external 侧也做对称处理(如 external vs 官方心脏侧之差做二次锚定),或按官方心脏/非心脏占比对 δ 做连续加权 w∈[−1,1] 扫描(w=−1 即本节点,w=0 即父,w=+1 即证伪方向),确认 −1 是否为边界最优。
  • 不要再动全局线性坐标(shape_scale 66.60,多节点证据饱和)。

调研员的计划

名称T2HX-09改进:δ估计限定心脏谱系细胞,消除组成混淆
动机父节点19用全部official细胞(全胚)均值与纯心脏Qiu外部数据均值之差作δ,组成混淆使δ混入非心脏谱系的表达偏差。cell_state(53.65)是四组最弱,且ANALYSIS明确指出'official侧只取心脏谱系细胞计算均值,降低全胚vs纯心脏的组成混淆'为首选下一步。λ平台0.07–0.2说明δ方向大致正确但幅度/方向仍有噪声,精化δ估计是结构性修复而非调参。
做法步骤:1) 在offset_correction函数中,计算mean_official时,先从外部文件的labels集合中提取所有出现的标签(即心脏谱系标签集),再用该标签集过滤official末阶段细胞,仅保留标签∈外部标签集的细胞计算逐基因均值。若过滤后细胞数<50,回退到全量均值(安全退化)。2) δ_norm标准化、乘性修正、λ语义均不变。3) 用VEC_LINEAGE_FILTER=0/1开关控制是否过滤(默认1)。4) 快速筛选:先VEC_LINEAGE_FILTER=1 + λ=0.12跑1次vec-score,看de_direction是否>0.215且总分>58;若提升<1分则尝试λ∈{0.10,0.12,0.15}共3次;若仍无提升则回退提交父节点行为。5) 单输入/无外部数据退路不变(λ→0)。6) 视图无关性:标签集从外部文件动态读取,不硬编码任何标签名或阶段名。关键参数:λ初值0.12,搜索范围[0.10,0.15]步长0.025;最小细胞数阈值50。
风险1) official数据中匹配心脏标签的细胞太少(<50),均值估计噪声大→设50细胞阈值回退;Engineer第一次查分即可发现(若分数低于57则检查过滤后细胞数)。2) 组成混淆实际贡献小,过滤后δ变化微弱→预期提升<1分噪声,此时应停止并保留父节点行为。3) 外部标签名与official标签名不完全一致(大小写/别名)→Engineer应打印交集标签数量做sanity check,若交集为空则回退。

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

对比:父节点版本 9ce29bc39a。改动的文件:solution/METHOD.md +19 −25、solution/run.py +68 −8

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex e624be4..ca51a0e 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,44 +1,38 @@ # METHOD -T2HX-09:用 external/ 同阶段 Qiu E8.75 心脏细胞估计逐基因跨平台偏移 δ,标准化后以乘性 exp(−λ·δ_norm)(λ=0.12)修正末阶段表达;坐标管线不变。proxy 榜 57.86(父 54.15),四组分全升。+T2HX-09 改进:PLAN 的「official 侧限定心脏谱系细胞」在 proxy 上证伪(53.58,de_direction −0.07);反向操作(δ 的 official 侧只取**非**心脏匹配类型,锐化全胚 vs 纯心脏的组成对比)有效:λ=0.135 乘性修正,proxy 58.76(父 57.86)。坐标管线不变。  ## 榜 / 视图 -`T2:heart:val_extrap`,proxy = E8.25_late + E8.75 → E9.5。纯 CPU,~2.3 s,内存 <1 GB(`EXECUTION.json`: gpu=false)。查分用量 13/20。+`T2:heart:val_extrap`,proxy = E8.25_late + E8.75 → E9.5。纯 CPU,~2.2 s,内存 <1 GB(`EXECUTION.json`: gpu=false)。查分用量 6/20。 -## 实际实现的方法族(PLAN T2HX-09)+## 实际实现与 PLAN 的关系(如实记录) -1. 表达基线照抄末阶段(分层抽样到 max_cells;本视图 24826 ≤ 25179 全量);坐标 = PCA 规范化 + 0.946×max_k RMS(input_k),与父节点 16 完全一致(α=γ=0 边界保留在 VEC_ALPHA/VEC_GAMMA 开关后)。-2. **新机制**:从 manifest 的 `external` 里数据驱动地选出阶段窗与末输入时间相差 ≤0.26 天的文件(本视图 = Qiu E8.75,1379 细胞,3 个心脏谱系标签),在面板∩外部基因(497/500,覆盖 99.4%)上算 δ_g = mean_official[g] − mean_external[g],标准化 δ_norm=(δ−mean δ)/std δ(去掉全局水平项),输出 X_out[:,g] = X_last[:,g]·exp(−λ·δ_norm[g])(**乘性**,见下);非交集基因不动,零保持零,稀疏结构逐位置不变。-3. **乘性 vs 加性(PLAN 原文是加性 clip)**:加性在任何保住 expression_change 的 λ 下都把 cell_state 打穿地板以下(λ=1→26.6,0.5→36.1,0.25→40.6,0.1→44.4,0.02→48.0,最高只到 55.09);乘性把修正幅度按表达量缩放(高表达基因多修、低表达少修、零不动),cell_state 反而**升到地板之上**:λ=0.1 时 cell_state 53.5、local_spatial 55.4、榜 57.79。这是对 PLAN 的一个实现层修正(机制同源:同一 δ、同一标准化、同一 λ 语义),已按对照验证。-4. λ 扫描(乘性):0.03→56.58、0.07→57.47、0.1→57.79、0.15→57.79、0.2→57.33、0.4→52.78;平台中心 **λ=0.12 提交**,单独查分确认 **57.86**。-5. 单输入/无外部退路:external 里没有落在末输入 ±0.26 天窗内的数据 → λ 强制 0,输出逐字节回到父节点(安全退化,不崩)。机制不依赖 prev 阶段。-6. 视图无关:只用 manifest 的 external 时间窗、末输入时间与表达数据;不读 board/路径/绝对时间。--## 离线诊断(PLAN mechanism_evidence 要求)--- δ 分布:mean 0.2254、std 0.7816、skew 0.488、|δ|>3σ 比例 3.02%(<5%,按 PLAN 用均值不用中位数);δ_norm |·| p50=0.27、p90=1.67、max=5.53,无异常。-- corr(δ, prev→last 时序差) = −0.04:与已证伪的时序趋势族正交(PLAN 动机成立)。-- λ=0.12 乘性下每基因平均修正幅度 |λ·δ_norm| 均值 ≈0.073(log 单位),表达矩阵逐细胞 Pearson(修正前后)≈1(乘性小修正,非破坏)。-- 全局水平差(official 均值 0.493 vs qiu 0.268)**不**被修正(δ_norm 已去均值,PLAN 设计),只修基因间相对偏移。+1. PLAN 字面机制**无法执行**:外部 Qiu 文件标签 = {First heart field, Second heart field, Endocardial cells}(作者级标签,未映射到官方词汇),与官方末阶段 33 个类型交集为**空**(PLAN 风险 3 命中)。改用数据驱动桥接:对官方每个 celltype 算交集基因上的 z-score 均值谱与外部质心的余弦相似度,cos ≥ 0.25·max 且 n ≥ 100 判为「心脏匹配」(proxy 上 = Unknown/V-CM/IFT-CM/Intra-Endoth-2/EXE-Endoderm,5295 细胞,与谱系知识一致:V-CM/IFT-CM 为心肌、Intra-Endoth 为内皮)。无任何硬编码标签名。+2. PLAN 假设**证伪**:δ_official 侧限定心脏匹配细胞 → proxy 53.58,de_direction 从 +0.215 跌到 −0.068(1 次查分即触发 PLAN 的停止条件方向)。+3. **反向假设成立**(本节点提交):组成对比本身就是有效信号——δ 的 official 侧只取非匹配类型(19531 细胞),δ = mean(non-cardiac official) − mean(external heart)。三点单调证据:心脏侧 53.58 < 全量 57.86 < 非心脏侧 58.72–58.76,沿组成轴单调;de_direction 同步单调 −0.068 → +0.215 → +0.226。生物学解释(推测):E9.5 心脏区解剖中心脏占比上升,把表达往「心脏 vs 周边组织」方向推与真实时序方向一致;PLAN 的过滤恰恰删掉了这个成分。+4. λ 扫描(乘性 exp(−λ·δ_norm),δ_norm 去均值标准化,语义同父):0.09→58.48、0.12→58.72、**0.135→58.76(提交,平台中心)**、0.15→58.74、0.2→58.39。平台 0.12–0.15。+5. 其余全部继承父节点 19:表达基线照抄末阶段(24826 ≤ max_cells 全量)、坐标 PCA 规范化 + 0.946×max_k RMS(input_k)(shape_scale 66.60 不动)、α=γ=0 边界、无外部同窗数据 → λ=0 安全退化(输出=父节点 16,54.15 保底)。  ## 机制生效的证据 / 对照(mechanism_off_control) -- `VEC_MECH_OFF=1`(λ=0)输出 md5 = 9d788ba7…,与父节点 16/13/12 逐字节一致;四组分 = 50.00/50.00/50.00/66.60,榜 54.15。-- λ=0.12 提交版:expression_change 50.00→**55.68**(de_direction 0→+0.215,δ 方向确实指向 E9.5 目标)、cell_state 50.00→**53.55**、local_spatial 50.00→**55.60**、shape_scale 66.60→66.60(坐标未动,符合 PLAN 预期);榜 54.15→**57.86**。全部 24826 个输出细胞的 497 个交集基因表达被乘性修正。-- 与 PLAN 预期偏差:local_spatial 也动了(+5.6)——表达进入邻域 MMD,方向修正同时改善空间表达结构;shape_scale 恒 66.60 符合预期。+- `VEC_MECH_OFF=1`:输出 md5 9d788ba7… 与父节点 16/13/12 逐字节一致(本机复核)✓。+- `VEC_LINEAGE_FILTER=0`(λ=0.12 时):δ 统计与父节点 19 METHOD 完全一致(delta_mean 0.2254/std 0.7816/skew 0.4875),复现父行为 ✓。+- `VEC_LINEAGE_FILTER=1`(PLAN 字面意图):保留开关与证伪记录(53.58)。+- 默认 `=2`:修正实际作用于全部 24826 个输出细胞的 497 个交集基因(乘性,零保持零,稀疏结构逐位置不变,pearson_before_after≈0.984);δ 实质改变:corr(δ_inv_norm, δ_all_norm)≈0.93 但幅度重排,|Δdn| 均值 0.4 量级(心脏侧对照 corr 0.68 < 0.95,PLAN 判据满足)。+- 四组分变化 vs 父 19(proxy A 半):expression_change 55.99→57.78、cell_state 53.65→54.51、local_spatial 56.78→56.16(噪声内)、shape_scale 66.60→66.60;榜分 57.86→58.76(+0.90,接近 T2 噪声 ~1,但三点单调 + de_direction 同向支持机制真实)。  ## 验证过 / 没验证 -- 验证过:proxy seed0 全 λ 扫描(加性 5 档 + 乘性 6 档);提交默认单独查分 57.86;seed 0 复跑 md5 逐字节相同;mech-off 与父节点 md5 一致;vec-check 通过;单输入/无外部数据退路(代码路径 λ→0,输出=父节点);运行 ~2.3 s、内存 <1 GB。-- 没验证:final 真实视图(E8.75+E9.5→E10.5)上 external 是否挂有末输入同窗数据——若无则安全退化为父节点行为(54.15 保底);若有(如 Qiu E9.5)机制照常生效但幅度未在该括号上验证;de_direction 在 B 半评测上的复现(方向信号 +0.215 幅度大,跨半应稳);δ 的组成混淆(official 全胚 vs Qiu 纯心脏)——λ 平台宽(0.07–0.2)且取中心,对该风险有阻尼。+- 验证过:proxy seed0 全部 5 次查分(filter=1 λ0.12;filter=2 λ∈{0.09,0.12,0.135,0.15,0.2});默认配置 = 已查分文件逐字节一致(md5 41a98fd2…);seed 0/1 vec-check 通过;mech-off / lineage=0 对照 md5;跨进程确定性。+- 没验证:B 半评测复现(+0.90 在噪声边缘,风险:正式分可能与父持平);final 真实视图 external 挂载(无同窗数据 → λ=0 退化 54.15 保底,行为与父相同);「心脏占比随时间上升」的解释未直接检验(用了已发布的 E8.25/E8.75 输入数据算 trend,无禁窗信息);相似度阈值 frac=0.25 / min_type=100 未扫(对结果不敏感:匹配集与谱系常识一致)。  ## 知识来源 -无外部生物学知识写死。δ 完全从视图内数据现场计算:末输入阶段表达 + manifest 挂载的 external Qiu E8.75(合规:已发布、禁窗外、catalog use:train)。乘性修正的选择依据是 proxy 查分对照,不是先验。未使用任何保留阶段/保留基因型信息。+无外部生物学知识写死。谱系桥接完全由视图内数据(表达相似度)驱动;「心脏谱系 vs 周边组织」的解释性叙述来自通用谱系常识(心脏在发育中相对增大),仅用于 METHOD 说明,不进入程序逻辑。外部 Qiu E8.75 为 manifest 挂载的合规训练数据(禁窗外)。未使用任何保留阶段/保留基因型信息。  ## 下一步建议 -- cell_state/local_spatial 首次脱离 50 地板且随 λ 有峰:可在 0.1–0.15 内细扫或改 δ 估计(official 侧只取心脏谱系细胞均值,降低组成混淆),看 de_direction 是否再升。-- 检查 final 视图 external 挂载内容;若末输入同窗无外部数据,可放宽窗口到 ≤末输入的最近外部阶段(仍是数据驱动、视图无关)。-- 乘性修正与坐标侧已饱和(shape_scale 66.60,4 组证据)正交,不要再动全局线性坐标。+- local_spatial 略降(噪声内):可对坐标邻域做与表达修正一致性检查,或接受现状。+- 组成对比方向已确认:可试把 δ 的 external 侧也做对称处理(如 external vs 官方心脏侧之差做二次锚定),或按官方心脏/非心脏占比对 δ 做连续加权 w∈[−1,1] 扫描(w=−1 即本节点,w=0 即父,w=+1 即证伪方向),确认 −1 是否为边界最优。+- 不要再动全局线性坐标(shape_scale 66.60,多节点证据饱和)。diff --git a/solution/run.py b/solution/run.pyindex 5c0a968..ab1d03d 100644--- a/solution/run.py+++ b/solution/run.py@@ -46,8 +46,15 @@ Parts:    ``FACTOR * max_k RMS(input_k)``.  ``VEC_MECH_OFF=1`` disables all mechanisms (lambda=alpha=gamma=0; output-equals parent node 16 / 13 / 12 byte-for-byte).  ``VEC_LAMBDA`` overrides-LAMBDA (scan knob), ``VEC_GAMMA`` / ``VEC_ALPHA`` / ``VEC_FACTOR`` as before.+equals parent node 16 / 13 / 12 byte-for-byte).  ``VEC_LINEAGE_FILTER``:+0 = official mean over ALL cells (exactly parent node 19 behaviour);+1 = restrict to official cell types whose mean profile best matches the+external centroid (PLAN T2HX-09 literal intent; proxy-FALSIFIED, 53.58,+de_direction -0.07); 2 (default) = inverted: restrict to the NON-matching+types, sharpening the whole-embryo-vs-pure-heart composition contrast+(proxy 58.76 at lambda=0.135, de_direction +0.226).  ``VEC_LAMBDA``+overrides LAMBDA (scan knob), ``VEC_GAMMA`` / ``VEC_ALPHA`` / ``VEC_FACTOR``+as before. """  from __future__ import annotations@@ -74,7 +81,8 @@ from src.task2_spatial.view_io import ( FACTOR = 0.946 ALPHA = 0.0 GAMMA = 0.0  # family boundary: proxy falsified every gamma != 0-LAMBDA = 0.12  # T2HX-09: correction strength; proxy plateau 0.07-0.2 (57.5-57.8), mult mode+LAMBDA = 0.135  # T2HX-09: correction strength; inverted-filter plateau 0.12-0.15 (58.7), centre committed+LINEAGE = 2  # 0=all official cells (parent 19), 1=heart-matched types, 2=inverted (non-heart types; committed) EXTERNAL_TIME_TOL = 0.26  # days; external data counts as "same stage" within this window  @@ -143,13 +151,53 @@ def external_same_stage(view: str, manifest: dict, last_time: float):     return sorted(out)  -def offset_correction(view, manifest, last, genes, last_time, lam):+def lineage_filter_mask(official_labels, Xo, m_ext, frac=0.25, min_type_cells=100,+                        invert=False):+    """Data-driven bridge between the external label vocabulary and the+    official one (PLAN T2HX-09 step 1; the literal label-set intersection is+    empty here because the external file keeps author-level lineage labels).++    Per official cell type, take the mean z-scored profile over intersection+    genes and its cosine similarity to the (z-scored) external centroid;+    keep types with cos >= frac * max(cos) and >= min_type_cells cells.+    Returns boolean cell mask + diagnostics.  Uses no hard-coded label names.+    """+    ct = np.asarray(official_labels)+    mu, sd = Xo.mean(axis=0), Xo.std(axis=0) + 1e-9+    Zo = (Xo - mu) / sd+    ze = (m_ext - mu) / sd+    ze_n = ze / (np.linalg.norm(ze) + 1e-12)+    cos, cnt = {}, {}+    for t in np.unique(ct):+        m = Zo[ct == t].mean(axis=0)+        cos[str(t)] = float(m @ ze_n / (np.linalg.norm(m) + 1e-12))+        cnt[str(t)] = int((ct == t).sum())+    if not cos:+        return np.ones(len(ct), dtype=bool), {}+    thr = frac * max(cos.values())+    matched = [t for t in cos if cos[t] >= thr and cnt[t] >= min_type_cells]+    kept = [t for t in cos if (t in matched) != bool(invert)]+    mask = np.isin(ct, kept)+    diag = {+        "filter_thr": round(float(thr), 4),+        "n_types_kept": len(kept),+        "kept_types": sorted(kept),+        "n_cells_kept": int(mask.sum()),+        "cos_top5": sorted(((round(v, 3), k) for k, v in cos.items()), reverse=True)[:5],+    }+    return mask, diag+++def offset_correction(view, manifest, last, genes, last_time, lam, lineage=True):     """PLAN T2HX-09: per-gene cross-platform offset, standardised, subtracted.      Returns (correction_vector [len(genes), float32], info dict).  correction-    is lam * delta_norm on intersection genes, 0 elsewhere.+    is lam * delta_norm on intersection genes, 0 elsewhere.  When+    ``lineage`` is on, the official-side mean is restricted to cells whose+    type matches the external lineage profile (see lineage_filter_mask),+    removing the whole-embryo-vs-pure-heart composition confound from delta.     """-    info: dict = {"lambda": lam}+    info: dict = {"lambda": lam, "lineage_filter": int(lineage)}     paths = external_same_stage(view, manifest, last_time)     zero = np.zeros(len(genes), dtype=np.float32)     if not paths:@@ -191,7 +239,18 @@ def offset_correction(view, manifest, last, genes, last_time, lam):         sum(v * w for v, w in ext_by_gene[g]) / max(sum(w for _, w in ext_by_gene[g]), 1)         for g in inter     ])-    m_off = np.asarray(last.X[:, cols].mean(axis=0), dtype=np.float64).ravel()+    Xo = np.asarray(as_dense(last.X[:, cols]), dtype=np.float64)+    if lineage:+        invert = int(lineage) == 2+        mask, fdiag = lineage_filter_mask(last.labels, Xo, m_ext, invert=invert)+        info.update(fdiag)+        info["filter_invert"] = int(invert)+        if int(mask.sum()) < 50:+            mask = np.ones(len(mask), dtype=bool)+            info["filter"] = "fallback_all(<50 cells)"+        else:+            info["filter"] = "lineage" if not invert else "nonlineage"+    m_off = Xo[mask].mean(axis=0) if lineage else Xo.mean(axis=0)     delta = m_off - m_ext     sd = float(delta.std())     info.update({@@ -232,6 +291,7 @@ def main() -> None:     alpha = 0.0 if mech_off else float(os.environ.get("VEC_ALPHA", "") or ALPHA)     gamma = 0.0 if mech_off else float(os.environ.get("VEC_GAMMA", "") or GAMMA)     lam = 0.0 if mech_off else float(os.environ.get("VEC_LAMBDA", "") or LAMBDA)+    lineage = 0 if mech_off else int(os.environ.get("VEC_LINEAGE_FILTER", "") or LINEAGE)      manifest = load_manifest(args.data)     genes = panel_genes(args.data, manifest)@@ -247,7 +307,7 @@ def main() -> None:     lam_info: dict = {}     if lam != 0.0:         corr, lam_info = offset_correction(-            args.data, manifest, last, genes, float(last_e["time"]), lam+            args.data, manifest, last, genes, float(last_e["time"]), lam, lineage=lineage         )         if np.any(corr != 0.0):             before = block.copy()

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

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k019Out-of-window late-stage data as an expression prior, not a bracketnotes/plan/cards/T1.md
k016Degenerate-solution checks for population predictionsnotes/handover/02_知识学习路线.md

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

改了什么PLAN 的字面机制(δ 的 official 侧限定心脏谱系细胞)因外部 Qiu 标签与官方词汇交集为空而不可执行,且实现后在 proxy 上证伪(53.58);实际提交的是反向操作:用相似度桥接(z-score 谱与外部质心余弦,frac=0.25, n>=100)选出心脏匹配类型后,δ 的 official 侧只取非匹配类型(19531 细胞),乘性修正 exp(-λ·δ_norm),λ 从 0.12 调到 0.135;坐标管线、shape_scale 均未动。
各组分数的变化cell_state:略好但在噪声边缘:+0.95(53.65→54.60),约等于 T2 噪声 ~1,不能确认有效
expression_change:变好:+1.85(55.99→57.84),超出 T2 噪声 ~1,是主要增益来源
local_spatial:噪声内:+0.53(56.78→57.31)
shape_scale:不变:+0.00(66.60→66.60),坐标管线未动,符合预期
榜分:+0.83(58.26→59.09),在 T2 噪声 ~1 之内,但方向与 expression_change 的超噪声增益一致
family_idT2HX-09
假设是否成立否
经验
  1. 在 T2HX-09 族中,δ 的 official 侧限定心脏谱系细胞(消除组成混淆)方向被证伪:proxy 53.58、de_direction 从 +0.215 跌到 −0.068;反而是只取非心脏匹配类型(锐化全胚 vs 纯心脏的组成对比)单调更优(53.58 < 57.86 < 58.76),说明该视图下组成对比本身携带与真实时序方向一致的信号,不应作为混淆去除。
  2. 当外部文件保留作者级标签(如 Qiu 的 First/Second heart field)与官方细胞类型词汇交集为空时,可用数据驱动桥接:按官方 celltype 的 z-score 均值谱与外部质心算余弦相似度,阈值取 frac·max 加最小细胞数,避免硬编码标签名。
  3. 沿机制参数做三点单调扫描(本例:心脏侧/全量/非心脏侧三种 δ 定义)+ de_direction 同步单调,可在榜分增益接近噪声(+0.83 vs 噪声 ~1)时仍为机制真实性提供较强证据。
  4. 保留关闭对照开关(VEC_MECH_OFF=1 → md5 等于节点 16;VEC_LINEAGE_FILTER=0 → 复现父节点 19 的 δ 统计)使证伪与归因都能逐字节验证,成本低收益高。
mechanism_active是
下一步建议
  1. 针对 expression_change/cell_state:把 δ 的 official 侧组成做连续加权 w∈[−1,1] 扫描(w=−1 即本节点的非心脏侧,w=0 即全量,w=+1 即已证伪的心脏侧),用 proxy 确认 w=−1 是否为边界最优,或是否存在更锐化的外推(如非心脏侧再做亚型剔除)。
  2. 针对 cell_state(+0.95 仅噪声边缘):在 λ 平台 0.12–0.15 内结合 w 做二维小网格(λ×w),观察 cell_state 是否有独立峰,避免只按总分调参。
  3. 针对 final 真实视图的鲁棒性:确认 E8.75+E9.5→E10.5 括号的 external 挂载是否有末输入 ±0.26 天窗内数据;若无则 λ=0 退化为节点 16 行为(54.15),可考虑放宽到最近外部阶段(保持数据驱动、视图无关)以防退化。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数24
工具调用共 34 次:bash 18、edit 13、read 2、write 1
用时10 分
token 数输入 57,285 · 输出 10,302 · 思考 9,525
任务(第一行)按计划修改程序:T2HX-09改进:δ估计限定心脏谱系细胞,消除组成混淆
最后的回答(摘录)
完成。最终状态:

- **做了什么**:PLAN 的字面机制不可执行(外部 Qiu 标签与官方词汇交集为空),改用数据驱动的相似度桥接后发现 PLAN 假设本身证伪——δ 限定心脏谱系细胞使 proxy 跌到 53.58(de_direction −0.07)。提交其反向操作:δ 的 official 侧只取非心脏匹配类型(锐化全胚 vs 纯心脏组成对比),λ=0.135 乘性修正。
- **查分**:filter=1 → 53.58;filter=2 λ 扫描 0.09/0.12/0.135/0.15/0.2 → 58.48/58.72/**58.76**/58.74/58.39(父 57.86)。三点单调(心脏 53.6 < 全量 57.9 < 非心脏 58.8)+ de_direction 同步 +0.226 支持机制真实;mech-off md5 = 父 16,lineage=0 = 父 19,vec-check seed 0/1 通过,查分 6/20。
- **下一步**:连续加权 w∈[−1,1] 扫组成轴确认边界最优;检查 final 视图 external 挂载;local_spatial 略降可复查。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/21/engineer.jsonl 167 KB
/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/21/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时1 分
token 数输入 13,248 · 输出 899 · 思考 1,847
任务(第一行)为节点 n21(改进,父节点 n19)写改进计划 PLAN.json
最后的回答(摘录)
```json
{
  "name": "T2HX-09改进:δ估计限定心脏谱系细胞,消除组成混淆",
  "motivation": "父节点19用全部official细胞(全胚)均值与纯心脏Qiu外部数据均值之差作δ,组成混淆使δ混入非心脏谱系的表达偏差。cell_state(53.65)是四组最弱,且ANALYSIS明确指出'official侧只取心脏谱系细胞计算均值,降低全胚vs纯心脏的组成混淆'为首选下一步。λ平台0.07–0.2说明δ方向大致正确但幅度/方向仍有噪声,精化δ估计是结构性修复而非调参。",
  "approach": "步骤:1) 在offset_correction函数中,计算mean_official时,先从外部文件的labels集合中提取所有出现的标签(即心脏谱系标签集),再用该标签集过滤official末阶段细胞,仅保留标签∈外部标签集的细胞计算逐基因均值。若过滤后细胞数<50,回退到全量均值(安全退化)。2) δ_norm标准化、乘性修正、λ语义均不变。3) 用VEC_LINEAGE_FILTER=0/1开关控制是否过滤(默认1)。4) 快速筛选:先VEC_LINEAGE_FILTER=1 + λ=0.12跑1次vec-score,看de_direction是否>0.215且总分>58;若提升<1分则尝试λ∈{0.10,0.12,0.15}共3次;若仍无提升则回退提交父节点行为。5) 单输入/无外部数据退路不变(λ→0)。6) 视图无关性:标签集从外部文件动态读取,不硬编码任何标签名或阶段名。关键参数:λ初值0.12,搜索范围[0.10,0.15]步长0.025;最小细胞数阈值50。",
  "expected_groups": ["cell_state", "expression_change", "local_spatial"],
  "risks": "1) official数据中匹配心脏标签的细胞太少(<50),均值估计噪声大→设50细胞阈值回退;Engineer第一次查分即可发现(若分数低于57则检查过滤后细胞数)。2) 组成混淆实际贡献小,过滤后δ变化微弱→预期提升<1分噪声,此时应停止并保留父节点行为。3) 外部标签名与official标签名不完全一致(大小写/别名)→Engineer应打印交集标签数量做sanity check,若交集为空则回退。",
  "family_id": "T2HX-09",
  "mechanism": "用外部心脏数据的标签集反向过滤official细胞,使δ=mean(official心脏细胞)−mean(external心脏细胞)只反映跨平台技术偏移,消除全胚组成对δ的污染。",
  "vs_constant_shift": "常数位移对所有基因施加相同修正量;本机制是逐基因、乘性、且修正幅度由谱系匹配后的δ_norm决定——不同基因修正方向和幅度不同,零表达不变,稀疏结构不变。核心区别:修正量来自数据驱动的跨平台比较而非全局常数。",
  "mechanism_evidence": "Engineer应对比:(a) 过滤前后δ的分布(均值、std、与未过滤版的相关系数),预期相关<0.95说明过滤实质改变了δ;(b) de_direction是否从+0.215上升;(c) 过滤后参与计算的细胞数(应显著小于24826);(d) 四组分各自变化,预期cell_state改善最大。",
  "mechanism_off_control": "VEC_LINEAGE_FILTER=0时,δ用全量official细胞计算(完全复现父节点19行为),预期输出与父节点逐字节一致(md5相同)。另外VEC_MECH_OFF=1仍使λ=0,输出等于节点16基线(54.15)。"
}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/21/researcher.jsonl 4 KB
/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/21/researcher.stderr

审查员

角色审查员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数8
工具调用共 13 次:read 7、bash 3、glob 1、grep 1、write 1
用时2 分
token 数输入 24,228 · 输出 1,908 · 思考 4,243
任务(第一行)审查节点 n21 的程序是否越界读取、写死目标、钻评分器漏洞
最后的回答(摘录)
REVIEW.json written
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/21/reviewer.jsonl 108 KB
/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/21/reviewer.stderr