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

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

节点 n10

T2HX-04:表达kNN引导的有界2-opt坐标-细胞再配对(复刻并约束node5)

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-105537-search-t2-heart-extrap-g24-D
父节点n8
子节点n11
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 50.00(+0.0) · proxy_noscale 50.00(+0.0) · 3 次复测均分 50.00
审查通过 1 越界读取:未发现问题——run.py 只经 load_manifest/read_stage/panel_genes 读 args.data 视图内数据(run.py:121-123),无绝对路径、'..'、/mnt、external 或评分器路径,无联网。; 2 硬编码目标统计量:未发现问题——细胞数取自 manifest 的 min_cells/max_cells(run.py:124),基因取自 panel_genes,代码中无写死的比例、表达量、细胞数或基因列表。; 3 钻评分器漏洞:未发现问题——提交态 VEC_SWAP 默认 0(run.py:32,133),输出为逐位 co…
用时?从运行开始到结束(或到现在)的挂钟时间。22 分
程序版本68df456772214a20f257e0b7a3757aad62ab45e7 (programs.git)

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

来自 programs.git 68df456772:solution/METHOD.md

T2HX-04:表达kNN引导的有界2-opt坐标-细胞再配对(复刻并约束node5)

copy_last 基座(锚阶段 24826≤max_cells,整份原样输出)上实现"只重排细胞↔坐标配对"的有界贪心2-opt:坐标15-NN图上,以表达余弦相似度为目标,候选取自表达kNN,预算B限制移动细胞比例;B∈{2%,5%,10%}×{平滑,锐化}全网格的 neighborhood_mmd 与 identity 地板不可区分(均≈0.114,评分器逐次调用有±0.002噪声),按PLAN no-go条款以机制关闭(VEC_SWAP=0,逐位=copy_last,实测50.00)提交。

方法(PLAN 家族 T2HX-04,机制完整实现,开关默认关)

  • 基座与父节点8相同:anchor_entry 锚阶段(外推=末输入 E8.75,n=24826 ≤ max_cells=25179 → 整份输出,无抽样);表达矩阵与坐标点集逐位不变。
  • 机制:坐标 cKDTree 15-NN 图(与评分器邻域定义一致)固定不动;目标 = 坐标NN边上表达余弦相似度之和;每细胞在表达空间 kNN(k=10,L2归一化表达)里找交换伙伴,贪心2-opt,仅当交换严格提升目标(smooth,SIGN=+1)或严格降低(sharpen,SIGN=−1,对照方向)时接受;预算 B = 移动细胞比例(每交换动2个细胞)。
  • 开关:VEC_SWAP(默认0=关;>0=移动比例)、VEC_SIGN(默认+1)、VEC_CAND(默认10)。单输入阶段视图天然成立(只用锚阶段自身表达+坐标),n<64 或预算为0时回退 identity。
  • 确定性:rng=default_rng(seed) 只用于遍历顺序;seed 0/1 输出逐位一致(已验证,机制关闭时输出与seed无关)。无阶段名/绝对时间/视图分支。

网格结果(vec-score, T2:heart:val_extrap/proxy_noscale, A半;6次查分)

配置榜分neighborhood_mmd 原始local_spatialshape_scale
identity(提交,=copy_last)50.000.1144550.0050.00
smooth B=2%50.020.1143350.0350.00
smooth B=5%50.020.1144050.0150.00
smooth B=10%50.000.1143150.0350.00
sharpen B=5%49.890.1156549.7449.74(门)

关键发现(推翻本次判读基准):评分器原始值逐次调用有噪声——同一份 identity 输出,父节点8测得 neighborhood_mmd=0.1126、mmd_u=0.05832,本节点测得 0.11445、0.05856(skill 均恰为0.5,因地板/天花板同次重算)。所以 PLAN 的"要求<0.1126"阈值实际是和一次噪声采样比较;同尺度下 smooth 各档(0.1143)与 identity(0.1144)不可区分,sharpen 略差且触发结构门(nb skill<0.5 → shape_scale 49.74,这解释了 node7 的 48.33)。

机制生效证据(按 PLAN mechanism_evidence)

  1. (a) 移动比例:B=2/5/10% 分别 499/620/1241 次交换(预算饱和),moved>0,机制确实运行。
  2. (b) neighborhood_mmd:smooth 各档与 identity 差 <0.0002(噪声内),sharpen +0.0012(略差)→ 机制未产生有效信号。
  3. (c) 校验:smooth B=5% 输出与 identity 输出——坐标逐位相等、表达行多重集逐位相等(排序后 ravel 与逐行和均一致)、伪批量逐基因相等、5.0% 行改变位置;只有配对变,符合设计。
  4. (d) 四组分:expression_change/cell_state/shape_scale 全部钉在 50.00(表达多重集与坐标点集不变 + noscale 下形状 skill 钉地板);local_spatial 50.00–50.03(噪声)。sharpen 例外:nb skill 掉破地板 → 结构门把 shape_scale 拉到 49.74。
  5. (e) B 单调性:不存在——2%/5%/10% 的 nb 原始值平坦(0.11433/0.11440/0.11431),说明该轴上再配对对邻域分布的影响是"立即饱和的噪声级扰动",不是随预算增长的定向改善。

机制关闭对照(mechanism_off_control)

VEC_SWAP=0(默认):跳过全部2-opt,走与父节点8相同的 take()/write_t2 路径,输出与父节点逐位一致(本地比对 final==off==父代码路径 True);vec-check 通过;vec-score 实测 50.00,四组全 50.00。提交态即此对照(边界规则,与 node6/node8 先例一致):网格无档超过地板噪声,按 PLAN no-go 条款取 identity。

结论

  • node5 的 52.74(shape_scale 59.99)在 noscale 尺子下无法由纯配对置换产生(形状 skill 钉 0.5、门只减不增;local_spatial 50.98 也在噪声带上沿)——大概率是单次评分噪声/伪影,rank3 未复跑支持此判断。本族(T2HX-04/T2HX-06)两个方向、三个预算均已测尽,无信号。
  • 未使用任何保留阶段/保留基因型信息;未读 external/;知识来源仅评分规则简报里的邻域定义(代码事实)。

下一步建议

  • 该榜 copy_last 邻域结构已近局部最优:任何动配对的操作(平滑/锐化)都只能加噪声。表达位移族三度证伪、配对族两度证伪,剩下未试的杠杆只有 cell_state 组的 mmd_u/variogram(用 external/ 的 Qiu E8.75 做型内状态细化,node3 报告有苗头)——但注意 mmd_u 逐次噪声 ±0.0002,需要原始值明显低于同次 identity 才算信号,且本地对外推榜系统性高估。

调研员的计划

名称表达kNN引导坐标-细胞再配对改善邻域组(复刻并约束node5)
动机父节点8及节点2/6已三度证伪表达位移族(T2HX-01),共同瓶颈是E8.25→E8.75速度对E8.75→E9.5真值变化的秩预测力≈0(node8:de_score原始+0.042<阈值0.05、de_direction −0.015;任何alpha>0损伤variogram 0.058→0.064-0.073)。ANALYSIS明确建议放弃表达位移、转向坐标-表达配对。树中唯一高于地板的结果是node5(52.74,shape_scale 50→59.99),做法是'表达kNN引导的坐标置换',只改表达-位置配对、表达矩阵与坐标点集逐位不变,恰好命中权重最大的neighborhood_mmd(25分+结构门住形状组25分,当前0.1126在地板)。本节点在copy_last基座上复刻该机制并加界与早停,避开node7(Dirichlet能量最小化、过度平滑,shape_scale跌到48.33)的失败模式。
做法基座=copy_last(末输入阶段分层抽到max_cells,表达X与坐标C原样)。机制:在坐标15-NN图(与评分器邻域定义一致)上做有界贪心2-opt再配对——每次考虑交换两个坐标槽上的细胞,仅当交换严格提升'坐标邻居间表达相似度'(即降低坐标-NN边上表达距离之和的相反数)才接受;用交换预算B限制扰动幅度,避免node7式过度平滑。B初值取让≤5%细胞移动,搜索范围{2%,5%,10%}三档。关键:表达矩阵与坐标点集逐位不变,只重排细胞↔坐标的配对,因此de_score/de_direction/mmd_u/variogram保持地板不受损,只可能改善neighborhood_mmd与(通过结构门)形状组。单输入阶段视图:再配对只需锚阶段自身的表达+坐标,天然成立,无需速度,无需退路特判;若n过小或NN图退化则回退identity。vec-score快筛:先跑B=5%单档,读score_parts中neighborhood_mmd原始值,要求<0.1126且形状三项不恶化才继续;否则直接提交identity(=copy_last)。因预期增量贴近T2约1分噪声,任何候选须在A半上复查一次且领先≥1.5分才视为信号(正式分用B半,本地对外推榜高估,勿把小幅领先当真)。坐标可选做k026规范化(减质心→PCA轴→det=+1→三阶矩定向)仅作方差去除,放在机制开关之后,保证off对照逐位等于copy_last。
风险(1) node5的+10是单种子未复跑(rank3=-),可能是噪声或取向伪影;node7同族却失败(48.33),说明该机制不稳——Engineer应第1-2次查分就看neighborhood_mmd原始值,若≥0.1126立刻回退identity,别耗满20次查分。(2) 评分端看不到真值,再配对只能靠输入自身结构做先验,可能并不更接近E9.5;若三档B都不改善即机制不成立。(3) 过度交换会重蹈node7过度平滑、伤形状;用预算B上限控制。(4) 本地代理对外推榜系统性高估,A半领先<1分不算数。尽早在第3次查分前做go/no-go。

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

对比:父节点版本 cc8596bc17。改动的文件:solution/METHOD.md +33 −23、solution/run.py +98 −65

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex a256a67..bfe2fd8 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,33 +1,43 @@-全局速度(末两输入伪批量差)投影到锚阶段表达 PCA 上自动选 |投影| 最大的 m 个 PC 去噪,再逐细胞按发育前沿程度 (1+β·s_i) 做非对称定向位移(T2HX-01);de_score/de_direction 未过 PLAN 阈值且全网格低于地板,按边界规则以 alpha=0(逐位=copy_last)提交。+# T2HX-04:表达kNN引导的有界2-opt坐标-细胞再配对(复刻并约束node5) -## 方法(PLAN 家族 T2HX-01:速度投影 PC 上的定向逐细胞位移)+copy_last 基座(锚阶段 24826≤max_cells,整份原样输出)上实现"只重排细胞↔坐标配对"的有界贪心2-opt:坐标15-NN图上,以表达余弦相似度为目标,候选取自表达kNN,预算B限制移动细胞比例;B∈{2%,5%,10%}×{平滑,锐化}全网格的 neighborhood_mmd 与 identity 地板不可区分(均≈0.114,评分器逐次调用有±0.002噪声),按PLAN no-go条款以机制关闭(VEC_SWAP=0,逐位=copy_last,实测50.00)提交。 -- 基座与父节点 6 相同:`anchor_entry` 锚阶段(外推=末输入),≤max_cells 时整份输出,否则按细胞类型分层抽到 max_cells;坐标、细胞数、组成不动。-- 机制:v = pb(末输入) − pb(前一输入)(全局伪批量速度,不分型);对锚阶段抽样表达做 PCA(基因协方差 500×500 `eigh`,v_clean=V_sel V_selᵀ v 对特征向量符号不变,确定性);按 |Vᵀv| 选前 m 个 PC 重构 v_clean 并 L2 归一化;s_i=(X_i−mu)·v_clean,X_new = max(0, X + α·max(0,1+β·s_i)·v_clean),β=0.3。-- 开关:环境变量 `VEC_ALPHA`(默认 0)、`VEC_M`(默认 2)、`VEC_BETA`(默认 0.3)。单输入阶段视图无速度可算,自动回退 copy_last。无阶段名/绝对时间/视图分支;输出只依赖数据与 seed(seed 0 两次运行逐位一致,已验证)。+## 方法(PLAN 家族 T2HX-04,机制完整实现,开关默认关) -## 网格结果(vec-score, T2:heart:val_extrap/proxy_noscale,A 半;地板=50.00)+- 基座与父节点8相同:`anchor_entry` 锚阶段(外推=末输入 E8.75,n=24826 ≤ max_cells=25179 → 整份输出,无抽样);表达矩阵与坐标点集逐位不变。+- 机制:坐标 cKDTree 15-NN 图(与评分器邻域定义一致)固定不动;目标 = 坐标NN边上表达余弦相似度之和;每细胞在表达空间 kNN(k=10,L2归一化表达)里找交换伙伴,贪心2-opt,仅当交换严格提升目标(smooth,SIGN=+1)或严格降低(sharpen,SIGN=−1,对照方向)时接受;预算 B = 移动细胞比例(每交换动2个细胞)。+- 开关:`VEC_SWAP`(默认0=关;>0=移动比例)、`VEC_SIGN`(默认+1)、`VEC_CAND`(默认10)。单输入阶段视图天然成立(只用锚阶段自身表达+坐标),n<64 或预算为0时回退 identity。+- 确定性:rng=`default_rng(seed)` 只用于遍历顺序;seed 0/1 输出逐位一致(已验证,机制关闭时输出与seed无关)。无阶段名/绝对时间/视图分支。 -| 配置 | 榜分 | de_score | de_direction | mmd_u | variogram | neighborhood |-|---|---:|---:|---:|---:|---:|---:|-| alpha=0(对照,=copy_last) | **50.00** | 0(保护) | 0 | .0583 | .0581 | .1126 |-| alpha=0.5, m=2 | 49.87 | +0.042 | −0.015 | .0583 | .0643 | .1136 |-| alpha=2.0, m=2 | 49.58 | +0.042 | −0.015 | .0580 | .0731 | .1118 |-| alpha=0.5, m=4 | 49.09 | −0.083 | −0.075 | — | .0666 | — |+## 网格结果(vec-score, T2:heart:val_extrap/proxy_noscale, A半;6次查分) -- de_score/de_direction 原始值对 alpha(0.5→2.0)不变:clip(0) 后的 dp 秩结构不随幅度变(与父节点 6 的教训一致)。`write_t2` 强制 clip≥0,"不 clip 保留负值"的对照实测输出与 clip 版逐位相同(负位移在写盘时被截断),无法绕开零膨胀基因下行被截断的非对称衰减。-- m=4 把 PC7/PC10(|投影| 2.1/1.8)混入方向后 de_score 转负:确认父节点发现的 PC5/PC8(|投影| 3.43/3.42,本实现 0-based 索引 7/4)是速度的主要承载轴,但即使 m=2 只取这两轴,方向信号也不足以转正 de_direction。+| 配置 | 榜分 | neighborhood_mmd 原始 | local_spatial | shape_scale |+|---|---:|---:|---:|---:|+| **identity(提交,=copy_last)** | **50.00** | 0.11445 | 50.00 | 50.00 |+| smooth B=2% | 50.02 | 0.11433 | 50.03 | 50.00 |+| smooth B=5% | 50.02 | 0.11440 | 50.01 | 50.00 |+| smooth B=10% | 50.00 | 0.11431 | 50.03 | 50.00 |+| sharpen B=5% | 49.89 | 0.11565 | 49.74 | 49.74(门) | -## 机制生效证据与失效判定(按 PLAN mechanism_evidence)+**关键发现(推翻本次判读基准)**:评分器原始值逐次调用有噪声——同一份 identity 输出,父节点8测得 neighborhood_mmd=0.1126、mmd_u=0.05832,本节点测得 0.11445、0.05856(skill 均恰为0.5,因地板/天花板同次重算)。所以 PLAN 的"要求<0.1126"阈值实际是和一次噪声采样比较;同尺度下 smooth 各档(0.1143)与 identity(0.1144)不可区分,sharpen 略差且触发结构门(nb skill<0.5 → shape_scale 49.74,这解释了 node7 的 48.33)。 -1. 位移非常数:per-cell 调制 max(0,1+0.3·s_i),dp 范数 0.295(alpha=0.5),500 个基因 dp 全非零——机制确实改变了表达。-2. dp 方向沿 v_clean(构造保证,clip 前逐位平行)。-3. **de_score 原始值 +0.042 < PLAN 阈值 0.05,且 de_direction 为负(−0.015)** → 按 PLAN 判定标准机制方向信号不足:E8.25→E8.75 速度在 PC5/PC8 上的去噪投影与 E8.75→E9.5 真值变化的秩相关≈0 或略负;零膨胀下行基因的 clip 衰减进一步压低 de_direction。-4. 任何 alpha>0 都损伤 variogram(.058→.064–.073,clip 对共变结构的非线性破坏),损失(−0.13~−0.29 分)超过 de 组收益(+0.14 分),全网格低于地板。-5. 对照(mechanism_off_control):VEC_ALPHA=0 跳过全部速度计算与位移,输出走与父节点 6 相同的 take()/write_t2 路径,逐位等于 copy_last;本地双跑逐位一致,`vec-check --task T2:heart:val_extrap/proxy_noscale` 通过。+## 机制生效证据(按 PLAN mechanism_evidence) -## 结论与提交+1. (a) 移动比例:B=2/5/10% 分别 499/620/1241 次交换(预算饱和),moved>0,机制确实运行。+2. (b) neighborhood_mmd:smooth 各档与 identity 差 <0.0002(噪声内),sharpen +0.0012(略差)→ **机制未产生有效信号**。+3. (c) 校验:smooth B=5% 输出与 identity 输出——坐标逐位相等、表达行多重集逐位相等(排序后 ravel 与逐行和均一致)、伪批量逐基因相等、5.0% 行改变位置;只有配对变,符合设计。+4. (d) 四组分:expression_change/cell_state/shape_scale 全部钉在 50.00(表达多重集与坐标点集不变 + noscale 下形状 skill 钉地板);local_spatial 50.00–50.03(噪声)。sharpen 例外:nb skill 掉破地板 → 结构门把 shape_scale 拉到 49.74。+5. (e) B 单调性:不存在——2%/5%/10% 的 nb 原始值平坦(0.11433/0.11440/0.11431),说明该轴上再配对对邻域分布的影响是"立即饱和的噪声级扰动",不是随预算增长的定向改善。 -按 PLAN 风险条款 1 与边界规则(网格单调劣于地板时取边界)提交 alpha=0(=copy_last,对照实测 50.00)。未使用任何由已发布/保留阶段尺寸或保留信息算出的常数;未用外部数据(external/ 的 Qiu E8.75 未读)。知识来源:仅通用线性外推/PCA 去噪方法学,无阶段特异性生物学先验。+## 机制关闭对照(mechanism_off_control) -下一步最值得试:(a) expression_change 族在本地代理上已三度证伪(顶部 PC、速度投影 PC、per-type damped_shift),E8.25→E8.75 速度对 E8.75→E9.5 的秩预测力≈0,建议该榜放弃表达位移族,转向 node 5 已证明有效的坐标-表达配对重排(shape_scale +10)与外部 Qiu E8.75 型内状态细化(mmd_u 苗头)。+`VEC_SWAP=0`(默认):跳过全部2-opt,走与父节点8相同的 take()/write_t2 路径,输出与父节点逐位一致(本地比对 final==off==父代码路径 True);vec-check 通过;vec-score 实测 **50.00**,四组全 50.00。提交态即此对照(边界规则,与 node6/node8 先例一致):网格无档超过地板噪声,按 PLAN no-go 条款取 identity。++## 结论++- node5 的 52.74(shape_scale 59.99)在 noscale 尺子下无法由纯配对置换产生(形状 skill 钉 0.5、门只减不增;local_spatial 50.98 也在噪声带上沿)——大概率是单次评分噪声/伪影,rank3 未复跑支持此判断。本族(T2HX-04/T2HX-06)两个方向、三个预算均已测尽,无信号。+- 未使用任何保留阶段/保留基因型信息;未读 external/;知识来源仅评分规则简报里的邻域定义(代码事实)。++## 下一步建议++- 该榜 copy_last 邻域结构已近局部最优:任何动配对的操作(平滑/锐化)都只能加噪声。表达位移族三度证伪、配对族两度证伪,剩下未试的杠杆只有 cell_state 组的 mmd_u/variogram(用 external/ 的 Qiu E8.75 做型内状态细化,node3 报告有苗头)——但注意 mmd_u 逐次噪声 ±0.0002,需要原始值明显低于同次 identity 才算信号,且本地对外推榜系统性高估。diff --git a/solution/run.py b/solution/run.pyindex 06e8daf..ec77bf7 100644--- a/solution/run.py+++ b/solution/run.py@@ -1,74 +1,114 @@ #!/usr/bin/env python3-"""Velocity-projected PC displacement (T2 heart extrap, family T2HX-01).--copy_last base (stratified sample of the anchor = last input stage, coordinates,-cell count and composition untouched), then a directed per-cell displacement:--  v        = pseudobulk(anchor) - pseudobulk(previous input)      # global velocity-  V_sel    = top-m anchor-sample PCs by |V^T v|                   # denoising subspace-  v_clean  = V_sel (V_sel^T v), L2-normalised-  s_i      = (X_i - mu) . v_clean                                 # developmental lead-  X_new[i] = max(0, X_i + alpha * max(0, 1 + beta * s_i) * v_clean)--alpha = 0 (default / VEC_ALPHA=0) skips everything and reproduces copy_last-bit-for-bit (mechanism-off control). If the view has a single input stage,-velocity is undefined and the program falls back to copy_last.+"""Expression-kNN-guided bounded 2-opt re-pairing (T2 heart extrap, family T2HX-04).++copy_last base (anchor = last input stage, stratified sample to max_cells if+needed; expression matrix and coordinate point set bit-for-bit unchanged).++Mechanism: re-pair cells to coordinate slots. On the fixed coordinate 15-NN+graph (matching the scorer's neighbourhood definition), greedily swap the+expressions of two coordinate slots when the swap strictly increases the total+cosine expression similarity over coordinate-NN edges. Candidate partners for+each cell are its expression-space kNN (cells with similar expression sitting+at far-away coordinates). A budget B (fraction of cells allowed to move)+bounds the perturbation. VEC_SWAP=0 skips everything and reproduces copy_last+bit-for-bit (mechanism-off control). Works on a single input stage view: only+the anchor's own expression + coordinates are used. """  from __future__ import annotations  import argparse import os+import time  import numpy as np  from src.task2_spatial.sample import take from src.task2_spatial.view_io import anchor_entry, load_manifest, panel_genes, read_stage, write_t2 -ALPHA = float(os.environ.get("VEC_ALPHA", "0.0"))-M_PC = int(os.environ.get("VEC_M", "2"))-BETA = float(os.environ.get("VEC_BETA", "0.3"))-CLIP = os.environ.get("VEC_CLIP", "1") != "0"+# Mechanism switch. Grid {2%,5%,10%} x {smooth,sharpen} all raised+# neighborhood_mmd above the copy_last floor (0.1126 -> >=0.1143), so the+# boundary rule applies: default 0 = off = bit-for-bit copy_last.+SWAP = float(os.environ.get("VEC_SWAP", "0.0"))  # fraction of cells allowed to move; 0 = off+N_CAND = int(os.environ.get("VEC_CAND", "10"))  # expression-kNN candidate partners+SIGN = float(os.environ.get("VEC_SIGN", "1"))  # +1 smooth (similarity up), -1 sharpen+DEBUG = bool(os.environ.get("VEC_DEBUG"))  -def velocity_direction(Xa: np.ndarray, v: np.ndarray, m: int) -> np.ndarray | None:-    """Project global velocity v onto the top-m PCs of anchor sample Xa; return unit vector.+def repermute(X: np.ndarray, coords: np.ndarray, budget_frac: float, seed: int):+    """Greedily re-pair expression rows to fixed coordinate slots. -    PCs via eigendecomposition of the gene covariance (500x500); v_clean =-    V_sel V_sel^T v is invariant to eigenvector sign, hence deterministic.+    Objective: maximise sum over coordinate-NN edges (i,j) of cosine similarity+    between the expressions currently sitting at slots i and j. Only the pairing+    changes; the multiset of expression rows and the coordinate array are+    untouched. Returns (X_permuted, swaps_made).     """-    mu = Xa.mean(axis=0)-    var = Xa.var(axis=0)-    keep = var > 0-    Xc = Xa[:, keep] - mu[keep]-    kk = int(min(max(m, 1), Xc.shape[1] - 1, Xc.shape[0] - 1))-    if kk < 1:-        return None-    C = Xc.T @ Xc-    C = 0.5 * (C + C.T)-    w, V = np.linalg.eigh(C)  # ascending eigenvalues-    Vt = V[:, ::-1].T  # descending-    vk = v[keep]-    proj = Vt @ vk-    sel = np.argsort(-np.abs(proj))[:kk]-    Vsel = Vt[sel]-    v_clean = np.zeros_like(v)-    v_clean[keep] = Vsel.T @ (Vsel @ vk)-    nrm = np.linalg.norm(v_clean)-    if not np.isfinite(nrm) or nrm <= 0:-        return None-    return v_clean / nrm---def displace(X: np.ndarray, v_unit: np.ndarray, alpha: float, beta: float) -> tuple[np.ndarray, float]:-    mu = X.mean(axis=0)-    s = (X - mu) @ v_unit  # developmental lead along the velocity direction-    fac = np.maximum(0.0, 1.0 + beta * s)-    Xn = X + alpha * fac[:, None] * v_unit[None, :]-    if not CLIP:-        return Xn, float("nan")-    clipped = float((Xn < 0).mean())-    return np.maximum(Xn, 0.0), clipped+    n = X.shape[0]+    budget = int(budget_frac * n / 2)  # swaps; each swap moves 2 cells+    if budget <= 0 or n < 64:+        return X, 0+    from scipy.spatial import cKDTree+    from sklearn.neighbors import NearestNeighbors++    rng = np.random.default_rng(seed)+    K = 15+    ctree = cKDTree(coords)+    nb = ctree.query(coords, k=K + 1)[1][:, 1:]  # coordinate 15-NN, self excluded+    nb = np.ascontiguousarray(nb)++    Xf = X.astype(np.float32)+    Xn = Xf / (np.linalg.norm(Xf, axis=1, keepdims=True) + 1e-9)+    etree = NearestNeighbors(n_neighbors=min(N_CAND + 1, n)).fit(Xn)+    cand = etree.kneighbors(Xn, return_distance=False)[:, 1:]++    t0 = time.time()+    S = Xn @ Xn.T  # cosine similarity, float32+    if DEBUG:+        print(f"S built in {time.time()-t0:.1f}s")++    moved = np.zeros(n, dtype=bool)+    order = rng.permutation(n)+    swaps = 0+    gains = []+    t0 = time.time()+    ar = np.arange(n)+    for i in order:+        i = int(i)+        if swaps >= budget:+            break+        if moved[i]:+            continue+        nbi = nb[i]+        base_i = S[i, nbi].sum()+        best_j, best_gain = -1, 0.0+        for j in cand[i]:+            j = int(j)+            if j == i or moved[j]:+                continue+            nbj = nb[j]+            nbj_f = nbj[nbj != i]+            nbi_f = nbi[nbi != j]+            gain = SIGN * float(+                (S[i, nbj_f].sum() + S[j, nbi_f].sum())+                - (S[i, nbi_f].sum() + S[j, nbj_f].sum())+            )+            if gain > best_gain:+                best_gain, best_j = gain, j+        if best_j >= 0:+            j = best_j+            X[[i, j]] = X[[j, i]]+            S[[i, j]] = S[[j, i]]+            S[:, [i, j]] = S[:, [j, i]]+            moved[i] = moved[j] = True+            swaps += 1+            gains.append(best_gain)+    if DEBUG:+        tot = float(np.sum(gains)) if gains else 0.0+        print(+            f"2-opt done in {time.time()-t0:.1f}s swaps={swaps} moved={2*swaps} "+            f"({2*swaps/n:.3%}) total_gain={tot:.2f}"+        )+    return X, swaps   def main() -> None:@@ -80,7 +120,6 @@ def main() -> None:      manifest = load_manifest(args.data)     genes = panel_genes(args.data, manifest)-    inputs = sorted(manifest["inputs"], key=lambda e: float(e["time"]))     stage = read_stage(args.data, anchor_entry(manifest), genes)     n = int(np.clip(stage.n, manifest["min_cells"], manifest["max_cells"]))     rng = np.random.default_rng(args.seed)@@ -91,16 +130,10 @@ def main() -> None:     X = stage.X[rows].toarray().astype(np.float32)     coords = stage.coords[rows] -    if ALPHA != 0.0 and len(inputs) >= 2:-        prev = read_stage(args.data, inputs[-2], genes)-        anchor_full = read_stage(args.data, inputs[-1], genes)-        v = np.asarray(anchor_full.X.mean(axis=0)).ravel() - np.asarray(prev.X.mean(axis=0)).ravel()-        v_unit = velocity_direction(X.astype(np.float64), v.astype(np.float64), M_PC)-        if v_unit is not None:-            X64, clip_frac = displace(X.astype(np.float64), v_unit, ALPHA, BETA)-            if os.environ.get("VEC_DEBUG"):-                print(f"clip_frac={clip_frac:.4f} ||v||={np.linalg.norm(v):.4f}")-            X = X64.astype(np.float32)+    if SWAP > 0.0:+        X, swaps = repermute(X, coords, SWAP, args.seed)+        if DEBUG:+            print(f"VEC_SWAP={SWAP} swaps={swaps}")      write_t2(args.out, X, coords, genes, seed=args.seed) 

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

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k026Canonicalise predicted 3D coordinates before submissionnotes/pitfalls/04_scorer_invariance.md
k016Degenerate-solution checks for population predictionsnotes/handover/02_知识学习路线.md

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

改了什么把 T2HX-01 速度位移代码整体换成 T2HX-04:copy_last 基座上实现表达kNN引导的有界贪心2-opt坐标-细胞再配对(坐标15-NN图 + 余弦相似度目标 + 预算B,开关 VEC_SWAP/VEC_SIGN/VEC_CAND);本地网格无档超过地板后按 PLAN no-go 条款以 VEC_SWAP=0 提交,提交态输出与父节点8逐位相同。
各组分数的变化cell_state:噪声内/无变化:mmd_u 0.05832、variogram 0.05806 与父节点逐位相同,skill 0.500,各 6.25 分(+0.00)。
expression_change:噪声内/无变化:de_score、de_direction 原始值均 0(无变化保护),skill 0.500,各 6.25 分,与父节点完全一致(+0.00)。
local_spatial:无变化:neighborhood_mmd 0.1126、skill 0.500、12.50 分(+0.00)。
shape_scale:无变化:d2_shape 0.04911、occupancy_dice 0.8066、scale_log_ratio -0.4334 与父节点相同,skill 均 0.500,三项各 4.17 分(+0.00);结构门未触发。
family_idT2HX-04
假设是否成立否
经验
  1. 在 T2:heart:val_extrap 的 copy_last 基座上,只重排“细胞↔坐标”配对(表达矩阵与坐标点集逐位不变)的有界2-opt,smooth B∈{2%,5%,10%} 与 sharpen B=5% 都无法把 neighborhood_mmd 推离地板:Engineer 报告 local_spatial 仅在 50.00–50.03 波动(远小于 T2 约 1 分噪声),机制运行(499/620/1241 次交换)但无有效信号。
  2. 把配对往“坐标邻居表达更不相似”方向做(sharpen,SIGN=-1)会把 neighborhood_mmd 从 ~0.1144 抬到 ~0.1156、nb skill 跌破 0.5,结构门随即把 shape_scale 拉到 49.74(Engineer 网格),这解释了 node7 的 48.33:动配对的下行风险是形状组连坐,上行收益为零。
  3. 本节点提交态的八项原始值与父节点逐位一致(变化量表),因此 Engineer “评分器原始值逐次调用有噪声(nb 0.1126 vs 0.11445)”的说法无法从变化量表验证,只来自它自己的多次本地网格调用;在把某个原始值阈值(如 PLAN 的“nb < 0.1126”)当 go/no-go 判据前,应先对同一份输出重复查分标定该指标的重复性。
  4. 单种子未复跑的高分(node5 的 52.74 / shape_scale 59.99)不可作为方法族成立证据:在 noscale 尺子下形状 skill 钉 0.5、结构门只减不增,纯配对置换在原理上产生不了 +10 的 shape_scale,本次同族复现全部落在地板。
  5. 把机制开关默认设为“关”并让关闭态走与父节点相同的 take()/write_t2 路径,可以在网格全灭时零成本交回地板分(50.00)而不是负分——这是本树第 3 次靠边界规则止损(node6/node8/node10)。
mechanism_active否
下一步建议
  1. 针对 local_spatial 组:停止在该榜继续做坐标-表达配对重排(T2HX-04/T2HX-06 两方向三预算已测尽),copy_last 的邻域结构已近局部最优,任何动配对的操作只加噪声并有结构门下行风险。
  2. 针对 cell_state 组:先做一次“同一份 copy_last 输出重复查分 3–5 次”的噪声标定(记录 mmd_u/variogram 原始值的重复标准差),把该标准差的 3 倍设为任何后续候选的最小可判信号;这一步不花机制开发成本,却能防止再把 ±0.0002 级波动读成收益。
  3. 针对 expression_change/cell_state:若尝试 external/ 的 Qiu E8.75 做型内状态细化,必须同时报告 mmd_u 与 variogram 两项原始值相对同次 identity 的变化,并只在两项都超过上条标定的噪声带时才提交;注意本地代理对外推榜系统性高估(心脏外推 本地 54.2 → 官网 49.6),本地领先 <1.5 分不算信号。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数17
工具调用共 20 次:bash 13、edit 3、read 2、write 2
用时12 分
token 数输入 48,306 · 输出 7,475 · 思考 14,114
任务(第一行)按计划修改程序:表达kNN引导坐标-细胞再配对改善邻域组(复刻并约束node5)
最后的回答(摘录)
完成。总结:

**做了什么**:按 PLAN(T2HX-04)在 copy_last 基座上实现表达kNN引导的有界贪心2-opt坐标-细胞再配对(坐标15-NN图、余弦目标、预算B限移动比例、VEC_SWAP开关),跑了 smooth B∈{2%,5%,10%} 与 sharpen B=5% 共5个配置,6次查分。

**查分结果**:全部无信号——smooth 各档 50.00–50.02、sharpen 49.89(触发结构门)。关键发现:评分器原始值逐次调用有噪声(同一份 identity 输出 neighborhood_mmd 父测 0.1126、本测 0.11445),smooth 与地板不可区分。按 PLAN no-go 条款以机制关闭(VEC_SWAP=0,逐位=copy_last,vec-check 通过,实测 50.00,seed 0/1/7 确定)提交。node5 的 52.74 在 noscale 尺子下无法由纯配对置换产生,判定为单次评分伪影。

**下一步最值得试**:该榜配对族与表达位移族均已证伪,唯一未试杠杆是 cell_state 组——用 external/ 的 Qiu E8.75 做型内状态细化(mmd_u/variogram),需以同次 identity 为基准判断信号,且警惕本地对外推榜的系统性高估。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-105537-search-t2-heart-extrap-g24-D/nodes/10/engineer.jsonl 87 KB
/home/spark-longxinyang/vec/runs/formal/20261003-105537-search-t2-heart-extrap-g24-D/nodes/10/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时8 分
token 数输入 14,792 · 输出 10,495 · 思考 8,192
任务(第一行)为节点 n10(改进,父节点 n8)写改进计划 PLAN.json
最后的回答(摘录)
明确建议放弃表达位移、转向坐标-表达配对。树中唯一高于地板的结果是node5(52.74,shape_scale 50→59.99),做法是'表达kNN引导的坐标置换',只改表达-位置配对、表达矩阵与坐标点集逐位不变,恰好命中权重最大的neighborhood_mmd(25分+结构门住形状组25分,当前0.1126在地板)。本节点在copy_last基座上复刻该机制并加界与早停,避开node7(Dirichlet能量最小化、过度平滑,shape_scale跌到48.33)的失败模式。",
  "approach": "基座=copy_last(末输入阶段分层抽到max_cells,表达X与坐标C原样)。机制:在坐标15-NN图(与评分器邻域定义一致)上做有界贪心2-opt再配对——每次考虑交换两个坐标槽上的细胞,仅当交换严格提升'坐标邻居间表达相似度'(即降低坐标-NN边上表达距离之和的相反数)才接受;用交换预算B限制扰动幅度,避免node7式过度平滑。B初值取让≤5%细胞移动,搜索范围{2%,5%,10%}三档。关键:表达矩阵与坐标点集逐位不变,只重排细胞↔坐标的配对,因此de_score/de_direction/mmd_u/variogram保持地板不受损,只可能改善neighborhood_mmd与(通过结构门)形状组。单输入阶段视图:再配对只需锚阶段自身的表达+坐标,天然成立,无需速度,无需退路特判;若n过小或NN图退化则回退identity。vec-score快筛:先跑B=5%单档,读score_parts中neighborhood_mmd原始值,要求<0.1126且形状三项不恶化才继续;否则直接提交identity(=copy_last)。因预期增量贴近T2约1分噪声,任何候选须在A半上复查一次且领先≥1.5分才视为信号(正式分用B半,本地对外推榜高估,勿把小幅领先当真)。坐标可选做k026规范化(减质心→PCA轴→det=+1→三阶矩定向)仅作方差去除,放在机制开关之后,保证off对照逐位等于copy_last。",
  "expected_groups": ["local_spatial", "shape_scale"],
  "risks": "(1) node5的+10是单种子未复跑(rank3=-),可能是噪声或取向伪影;node7同族却失败(48.33),说明该机制不稳——Engineer应第1-2次查分就看neighborhood_mmd原始值,若≥0.1126立刻回退identity,别耗满20次查分。(2) 评分端看不到真值,再配对只能靠输入自身结构做先验,可能并不更接近E9.5;若三档B都不改善即机制不成立。(3) 过度交换会重蹈node7过度平滑、伤形状;用预算B上限控制。(4) 本地代理对外推榜系统性高估,A半领先<1分不算数。尽早在第3次查分前做go/no-go。",
  "family_id": "T2HX-04",
  "mechanism": "保持表达矩阵与坐标点集不变,仅用有界贪心2-opt重排'哪个细胞占据哪个坐标',使坐标邻居的表达更相似,从而改善每个细胞15-NN平均表达分布(neighborhood_mmd)与其结构门住的形状组。",
  "vs_constant_shift": "完全不改动任何表达值:每型常数位移/全局组成重加权是给每个细胞的表达加同一向量或改组成,本方案表达逐位不变,只非均匀地(逐细胞、由局部结构引导)改变细胞的空间落点。任何按型常数位移都无法复现'表达不变、位置重排'的效果,二者作用对象不同(表达空间 vs 配对关系)。",
  "mechanism_evidence": "Engineer须报告:(a) 被移动的细胞比例与接受的交换数(>0才说明机制运行);(b) neighborhood_mmd原始值由0.1126是否下降;(c) 校验表达矩阵与坐标点集逐位不变(只有配对改变);(d) 四组分各自变化——预期local_spatial升、shape_scale经结构门不降、expression_change与cell_state保持地板;(e) 不同B档的单调性。若移动比例>0但neighborhood_mmd不降,即机制未产生有效信号。",
  "mechanism_off_control": "同一程序将交换预算B=0(或环境变量VEC_SWAP=0):跳过全部2-opt,配对为恒等,输出走与父节点8相同的take()/write_t2路径,逐位等于copy_last,榜分应恰为50.00、八项原始值与父节点完全一致。若off输出与copy_last有任何逐位差异,说明基座被污染,须先修复。",
  "sources": []
}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-105537-search-t2-heart-extrap-g24-D/nodes/10/researcher.jsonl 43 KB
/home/spark-longxinyang/vec/runs/formal/20261003-105537-search-t2-heart-extrap-g24-D/nodes/10/researcher.stderr

审查员

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