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

总览 · ← 返回运行 20261003-094242-search-t2-embryo-interp-g24-D-s2

节点 n27

实现软阈值基因加权位移(PLAN T2EI-01):表达位移的基因参与从硬阈值 1{|Δ|≥0.25} 改为连续幂次权重 w_g=clip(|Δ_g|/τ,0,1)^p(τ=0.25、p=1.0 提交),off/on 对照显示 de_direction 微升、de_score 不动,净效应 +0.03~0.04 榜分,在噪声(~1 分)内;提交保持机制打开。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-094242-search-t2-embryo-interp-g24-D-s2
父节点n22
子节点—
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 62.55(+0.0) · proxy 62.55(+0.0) · 3 次复测均分 62.29
审查通过 1 越界读取:未发现问题——run.py 仅通过 view_io 的 load_manifest/read_stage/panel_genes 读取 --data 指向的视图输入(run.py:579-589),无绝对路径、..、/mnt、/home、data/raw、打分器路径,无联网代码。; 2 硬编码目标统计量:未发现问题——所有位移/整形量(类型均值差 Δ、spread、RMS)均由输入阶段现场计算(run.py:274-309, 181-213),α/λ/β/τ/p/damp 等仅为通用超参数,无写死的类型比例、细胞数或基因列表。; 3 钻评分器漏洞:未发现问题——无手性/镜像修正…
用时?从运行开始到结束(或到现在)的挂钟时间。12 分
程序版本5af70edcb8b49229bf9d69ec127aec0b10d196be (programs.git)

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

来自 programs.git 5af70edcb8:solution/METHOD.md

实现软阈值基因加权位移(PLAN T2EI-01):表达位移的基因参与从硬阈值 1{|Δ|≥0.25} 改为连续幂次权重 w_g=clip(|Δ_g|/τ,0,1)^p(τ=0.25、p=1.0 提交),off/on 对照显示 de_direction 微升、de_score 不动,净效应 +0.03~0.04 榜分,在噪声(~1 分)内;提交保持机制打开。

方法(family T2EI-01,PLAN:软阈值基因加权位移攻 DE 排序)

保留父节点 13/19/22 全部管线(mix 分层混抽、procrustes3d、scale_damp=0.5、α=5 类型级收敛位移、λ=6 投影加权、β=0.2 型内 NN 配对收缩、全局 aniso damp=1.25、jitter、RMS 回缩;VARISO / TYPE_ANISO 关闭)。唯一改动在 mix_converge 的 Δ 构造处(run.py):

  • 硬阈值(off):d = where(|d|≥0.25, d, 0) —— |Δ|<0.25 的基因位移为零,dp 中被压平,破坏 de_direction 秩偏相关;阈值附近全有/全无。
  • 软权重(on,提交默认):d = d · clip(|d|/τ, 0, 1)^p,环境变量 T2_SOFT_ENABLE(默认 1)、T2_SOFT_TAU(默认 0.25)、T2_SOFT_P(默认 1.0)。位移仍是 x ← x ± α·(t 或 1−t)·w·d,nnz-only 与 clip≥0 保留,稀疏结构不变(nnz 比例 0.059 → 0.059,逐位验证)。λ 投影加权与 β 配对的 DE 掩码逻辑未改(β 的 de 掩码仍用硬阈值,只作用于配对距离与收缩维度选择)。
  • off 对照:T2_SOFT_ENABLE=0(或 T2_SOFT_P=0)走原硬阈值分支,seed 0 输出与父节点逐位一致(off 榜分 61.4533 = 父节点 A 半 61.45,验证通过)。
  • 单输入阶段(无括号)走上层既有 copy_last 退路,软权重代码不执行。确定性:无新增随机源。

机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4)

  • 参与位移基因数(sum(w_g>0.01),10 个共有类型均值):硬阈值 166.4 → 软权重 478.2;位移幅度按 |Δ| 幂次递减(maxAbsD 1.93,meanAbsD 0.0028)。
  • 四组分(A 半查分):expression_change 60.97→61.03(de_direction raw 0.3853→0.3879、skill 0.638→0.639;de_score raw 0.25 完全不动);cell_state 48.93→48.92(mmd_u +0.00003 微劣、variogram 0.01442→0.01432 微升,均在否决线内);local_spatial / shape_scale 逐位不变(坐标未动,nbr raw 0.05506→0.05505 来自表达经邻域平均的间接影响,<0.002 阈值)。

网格结果(A 半,共 10 次查分)

配置榜分de_scorede_dirmmd_uvariogramnbr
off(=父13/19/22)61.4530.25000.38530.011640.014420.05506
p=0.5, τ=0.2561.4830.25000.38780.011680.014300.05505
p=1.0, τ=0.25(提交)61.4830.25000.38790.011670.014320.05505
p=2.0, τ=0.2561.4740.25000.38740.011670.014350.05505
p=1.0, τ=0.1561.4900.25000.38830.011680.014280.05505
p=1.0, τ=0.5061.4110.25000.38580.011700.014500.05518
p=1.0, α=860.8080.25000.37960.015320.013520.05477
p=1.0, α=360.4300.21430.38430.012210.015940.05886

结论(诚实评估)

  • 机制方向正确但效应量远低于预期:de_direction raw +0.0026(PLAN 继续阈值 0.02 未达到),de_score 在所有软权重配置下纹丝不动——de_score 只看 |dp| 排序取 top-N 的命中率,小 |Δ| 基因的软位移量太小(α·t·Δ·(|Δ|/τ)^p,|Δ|≪τ 时近乎零),改变不了 top-N 集合,说明 de_score 缺口不在阈值压平而在位移方向本身(α·Δ_type 与真值 dt 的基因级错位)。
  • α 网格证实 α=5 仍是局部最优(α=3 de_score 崩到 0.214,α=8 mmd_u 崩到 0.0153)。
  • τ=0.5(对大 Δ 基因也衰减)净负:位移整体变弱等价于 α 减小。
  • 净榜分 +0.03(61.453→61.483),T2 噪声 ~1 分,A/B 半之间不保证重现;所有否决线(mmd_u < +0.001、variogram、nbr < +0.002)均满足且 variogram/nbr 微改善,故按 PLAN"提交时保持打开"提交 p=1.0、τ=0.25。若 B 半回归,教训是:DE 两项对幅度不敏感、只对排序敏感,任何不改变 dp 排序的幅度级微调都无效。

验证过 / 没验证

  • 验证:off 与父逐位一致;on 的稀疏结构保持;p/τ/α 网格 8 配置;vec-check ok;默认配置输出与 p1.0 网格文件逐位一致。
  • 没验证:seed 1/2 复跑(时间预算内查分优先给了网格);τ<0.15(PLAN 风险 4 的密集位移区);β 配对掩码同步改软权重(预期同样在噪声内)。
  • 知识来源:无外部生物学知识;全部为评分指标性质推理(DE 只看排序/符号)与代理网格实测。

调研员的计划

名称软阈值基因加权位移:连续参与度替代硬截断攻 DE 排序
动机父节点 22 提交配置与 13/19 逐位一致,de_score 0.3103(skill 0.600,7.50/12.5)、de_direction 0.3986(skill 0.642,8.03/12.5)是 expression_change 组(62.11)的主要缺口,两项合计还有 ~9 分空间。当前位移用硬阈值 |Δ|≥0.25 决定基因是否参与:阈值以下基因位移为零,导致 dp 中这些基因被压平到零、破坏 de_direction 的秩偏相关(小变化基因在真值中有非零排序但在预测中并列于零);同时阈值附近的基因获得不连续的全有/全无位移,扭曲 de_score 的排序。ANALYSIS 明确建议'对表达位移管线的 α/λ/β 做以 DE 两项 raw 值为目标的网格搜索'。occupancy_dice(skill 0.424)已被节点 7/21/22/24 从多个方向攻过均失败,不再重复。
做法在父节点 13/19 管线(mix 分层混抽 + procrustes3d + scale_damp=0.5 + α 收敛 + λ 投影加权 + β 配对收缩 + 全局 aniso damp=1.25 + jitter + RMS 回缩)的表达位移步,把基因参与权重从二值 w_g = 1{|Δ_g|≥0.25} 改为连续软权重 w_g = clip(|Δ_g|/τ_soft, 0, 1)^p,τ_soft 和 p 为可调参数。位移变为 x ← x + α·t·(w_g·Δ_g)(a 侧)/ x ← x − α·(1−t)·(w_g·Δ_g)(b 侧),仍保留 nnz-only 和 clip≥0。p=0 且 τ_soft=0.25 时 w_g 退化为原硬阈值,输出逐位一致(off 对照)。实现步骤:(1) 在 shift 模块中把 |Δ|≥CONVERGE_MIN_DELTA 的布尔掩码替换为软权重向量,用环境变量 T2_SOFT_TAU(默认 0.25)和 T2_SOFT_P(默认 1.0)控制;(2) 先用 seed 0 在 proxy 上跑 off 对照(p=0)确认与父节点逐位一致;(3) 网格第一维:p ∈ {0(off), 0.5, 1.0, 2.0},τ_soft 固定 0.25,查 4 次 vec-score,看 de_score/de_direction raw 变化;(4) 若 p=1.0 或 2.0 有 DE raw 改善,第二维:τ_soft ∈ {0.10, 0.15, 0.20, 0.25},固定最优 p,查 4 次;(5) 若 DE 改善 >0.02 raw 且 mmd_u/variogram/nbr raw 劣化在阈值内(mmd_u < +0.001,variogram < +0.001,nbr < +0.002),第三维:α ∈ {3, 5, 8},固定最优 τ/p,查 3 次;(6) 总计 ≤12 次查分。单输入阶段退路:无括号时走既有 copy_last 退路,软权重代码不执行。vec-score 快速筛选:每次只查 A 半,看 score_parts 中 de_score/de_direction 的 raw 和 skill,同时监控 mmd_u、variogram、neighborhood_mmd raw 是否越过否决线。
风险(1) 软权重让小 |Δ| 噪声基因获得位移,稀释真实信号,de_score 反而下降——Engineer 在第一步网格(4 次查分)即可发现,若 p=0.5/1.0/2.0 的 de_score raw 均 ≤0.3103 则止损;(2) 小变化基因的位移破坏稀疏结构(零值被抬高),损害 variogram/mmd_u——监控这两项 raw,劣化 >0.001 即放弃该配置;(3) 预期 DE raw 改善可能 <0.02(~1 分组分),在噪声内——需同一最优配置用 seed 0 和 seed 1 各查一次确认;(4) τ_soft 过低(0.10)等于几乎所有基因都参与,退化为密集位移,已知会摧毁稀疏结构——τ_soft ≤ 0.15 时额外检查零值比例是否 <90%。

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

对比:父节点版本 2c66561966。改动的文件:solution/METHOD.md +30 −39、solution/run.py +26 −2

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 7419de5..e8a5573 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,50 +1,41 @@-实现分型各向异性坐标整形(TYPE_ANISO,PLAN T2EI-06)并完成 off/on 对照:occupancy_dice 在 damp −1.0…1.0 全网格上均比关闭时更差(两个方向单调劣化),净效应为负,提交默认 T2_TYPEANISO_ENABLE=0,输出与父节点 13/19 逐位一致。+实现软阈值基因加权位移(PLAN T2EI-01):表达位移的基因参与从硬阈值 1{|Δ|≥0.25} 改为连续幂次权重 w_g=clip(|Δ_g|/τ,0,1)^p(τ=0.25、p=1.0 提交),off/on 对照显示 de_direction 微升、de_score 不动,净效应 +0.03~0.04 榜分,在噪声(~1 分)内;提交保持机制打开。 -## 方法(family T2EI-06,PLAN:分型各向异性坐标整形攻 occupancy_dice)+## 方法(family T2EI-01,PLAN:软阈值基因加权位移攻 DE 排序) -保留父节点 13/19 全部管线(mix 分层混抽、procrustes3d 对齐、scale_damp=0.5、α=5 类型级收敛位移、λ=6 投影加权、β=0.2 型内 NN 配对收缩、全局 aniso 坐标整形 γ=damp×t(damp=1.25)、jitter、RMS 回缩;VARISO 默认关闭)。按 PLAN 在全局 aniso_reshape 之后、jitter 之前插入 TYPE_ANISO:+保留父节点 13/19/22 全部管线(mix 分层混抽、procrustes3d、scale_damp=0.5、α=5 类型级收敛位移、λ=6 投影加权、β=0.2 型内 NN 配对收缩、全局 aniso damp=1.25、jitter、RMS 回缩;VARISO / TYPE_ANISO 关闭)。唯一改动在 mix_converge 的 Δ 构造处(run.py): -1. 对每个在括号两阶段各 ≥T2_TYPEANISO_MIN_CELLS(默认 20)细胞的共有类型:在**对齐帧(全局 aniso 之前、已缩放到 target_rms 的 ca/cb)**里,两侧各绕自身类型质心中心化,合并求 3 维 PCA 轴,记录逐轴 std_a[k]、std_b[k]。-2. 逐轴目标:target_k = exp(log(std_a+ε) + t·(log(std_b+ε)−log(std_a+ε))),ε=0.01。-3. 该类型的输出细胞(全局 aniso 之后的坐标):绕输出型质心中心化、投影到类型 PCA 轴,轴 k 乘 r_k = 1 + γ_ta·(target_k/cur_k − 1),γ_ta = T2_TYPEANISO_DAMP × t,r_k 夹到 [0.5, 2.0],重构。-4. 之后的既有 scale_to_rms(jitter 后)把整朵云精确回缩到同一 target RMS,scale_log_ratio 不受影响。-5. 任一侧 <MIN_CELLS 的类型跳过;单输入阶段(无括号)走上层既有退路,TYPE_ANISO 不执行。+- 硬阈值(off):`d = where(|d|≥0.25, d, 0)` —— |Δ|<0.25 的基因位移为零,dp 中被压平,破坏 de_direction 秩偏相关;阈值附近全有/全无。+- 软权重(on,提交默认):`d = d · clip(|d|/τ, 0, 1)^p`,环境变量 T2_SOFT_ENABLE(默认 1)、T2_SOFT_TAU(默认 0.25)、T2_SOFT_P(默认 1.0)。位移仍是 x ← x ± α·(t 或 1−t)·w·d,nnz-only 与 clip≥0 保留,稀疏结构不变(nnz 比例 0.059 → 0.059,逐位验证)。λ 投影加权与 β 配对的 DE 掩码逻辑未改(β 的 de 掩码仍用硬阈值,只作用于配对距离与收缩维度选择)。+- off 对照:T2_SOFT_ENABLE=0(或 T2_SOFT_P=0)走原硬阈值分支,seed 0 输出与父节点逐位一致(off 榜分 61.4533 = 父节点 A 半 61.45,验证通过)。+- 单输入阶段(无括号)走上层既有 copy_last 退路,软权重代码不执行。确定性:无新增随机源。 -环境变量:T2_TYPEANISO_ENABLE(**提交默认 0**)、T2_TYPEANISO_DAMP(默认 0.5)、T2_TYPEANISO_MIN_CELLS=20、T2_TYPEANISO_CLIP_LO/HI=0.5/2.0、T2_TYPEANISO_EPS=0.01。全部为确定性数组运算,无新增随机源。+## 机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4) -## 机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4,10 个共有类型全部处理)+- 参与位移基因数(sum(w_g>0.01),10 个共有类型均值):硬阈值 166.4 → 软权重 478.2;位移幅度按 |Δ| 幂次递减(maxAbsD 1.93,meanAbsD 0.0028)。+- 四组分(A 半查分):expression_change 60.97→61.03(de_direction raw 0.3853→0.3879、skill 0.638→0.639;de_score raw 0.25 完全不动);cell_state 48.93→48.92(mmd_u +0.00003 微劣、variogram 0.01442→0.01432 微升,均在否决线内);local_spatial / shape_scale 逐位不变(坐标未动,nbr raw 0.05506→0.05505 来自表达经邻域平均的间接影响,<0.002 阈值)。 -- 逐型 r_k 异质、远离 1(PLAN 风险 1/4 排除——机制确实在动):damp=0.5(γ=0.2)时 r_mean=0.924、r∈[0.866, 0.981],仅 17% 落在 [0.95,1.05];damp=1.0 r_mean=0.848;damp=−1.0 r_mean=1.152。target/cur 均值 0.62:括号 log 插值目标要求**压缩**每个类型的子云。clip_frac=0(无类型触及 0.5/2.0 边界)。-- 四组分变化(A 半查分,off 与父 13/19 逐位一致,off 榜分 61.45):+## 网格结果(A 半,共 10 次查分) -| 配置 | 榜分 | occupancy raw/skill | d2 raw/skill | nbr raw | shape_scale 组 |-|---|---:|---|---|---|---:|-| off(=父13/19) | **61.45** | 0.8066 / 0.421 | 0.0047 / 0.979 | 0.05506 | 77.75 |-| damp=0.25 | 61.43 | 0.7972 / 0.404 | 0.00363 / 0.996 | 0.05520 | 77.73 |-| damp=0.5 | 61.28 | 0.7849 / 0.382 | 0.00338 / 1.000 | 0.05530 | 77.15 |-| damp=1.0 | 61.05 | 0.7742 / — | 0.00401 / — | 0.05530 | 76.26 |-| damp=−0.5(反向膨胀) | 60.76 | 0.7862 / — | 0.00783 / — | 0.05501 | 74.95 |-| damp=−1.0 | 60.18 | 0.7783 / — | 0.01189 / — | 0.05517 | 72.71 |+| 配置 | 榜分 | de_score | de_dir | mmd_u | variogram | nbr |+|---|---:|---:|---:|---:|---:|---:|+| off(=父13/19/22) | 61.453 | 0.2500 | 0.3853 | 0.01164 | 0.01442 | 0.05506 |+| p=0.5, τ=0.25 | 61.483 | 0.2500 | 0.3878 | 0.01168 | 0.01430 | 0.05505 |+| **p=1.0, τ=0.25(提交)** | **61.483** | 0.2500 | 0.3879 | 0.01167 | 0.01432 | 0.05505 |+| p=2.0, τ=0.25 | 61.474 | 0.2500 | 0.3874 | 0.01167 | 0.01435 | 0.05505 |+| p=1.0, τ=0.15 | 61.490 | 0.2500 | 0.3883 | 0.01168 | 0.01428 | 0.05505 |+| p=1.0, τ=0.50 | 61.411 | 0.2500 | 0.3858 | 0.01170 | 0.01450 | 0.05518 |+| p=1.0, α=8 | 60.808 | 0.2500 | 0.3796 | 0.01532 | 0.01352 | 0.05477 |+| p=1.0, α=3 | 60.430 | 0.2143 | 0.3843 | 0.01221 | 0.01594 | 0.05886 | -  expression_change / cell_state 四组在所有配置下逐位不变(表达未动,符合设计)。+## 结论(诚实评估) -## 关闭对照(mechanism_off_control)+- 机制方向正确但效应量远低于预期:de_direction raw +0.0026(PLAN 继续阈值 0.02 未达到),de_score 在所有软权重配置下纹丝不动——de_score 只看 |dp| 排序取 top-N 的命中率,小 |Δ| 基因的软位移量太小(α·t·Δ·(|Δ|/τ)^p,|Δ|≪τ 时近乎零),改变不了 top-N 集合,说明 de_score 缺口不在阈值压平而在位移方向本身(α·Δ_type 与真值 dt 的基因级错位)。+- α 网格证实 α=5 仍是局部最优(α=3 de_score 崩到 0.214,α=8 mmd_u 崩到 0.0153)。+- τ=0.5(对大 Δ 基因也衰减)净负:位移整体变弱等价于 α 减小。+- 净榜分 +0.03(61.453→61.483),T2 噪声 ~1 分,A/B 半之间不保证重现;所有否决线(mmd_u < +0.001、variogram、nbr < +0.002)均满足且 variogram/nbr 微改善,故按 PLAN"提交时保持打开"提交 p=1.0、τ=0.25。若 B 半回归,教训是:DE 两项对幅度不敏感、只对排序敏感,任何不改变 dp 排序的幅度级微调都无效。 -T2_TYPEANISO_ENABLE=0:TYPE_ANISO 代码块整体跳过,seed 0 下 X 与 spatial_3D 均与父节点输出 array_equal=True(逐位验证),8 项指标与父 13/19 完全相同(榜分 61.45,A 半;正式 B 半分即父节点 62.52)。提交默认即此配置。+## 验证过 / 没验证 -## 如实结论:机制净效应为负,提交默认关闭--1. **PLAN 验收条件失败**:要求 occupancy_dice raw 改善 ≥0.01,实测在 damp>0(压缩方向,即括号 log 插值目标方向)单调**劣化** 0.8066→0.7972→0.7849→0.7742;d2_shape 虽从 0.979 升到 1.000(+0.17 分),抵不过 occupancy 的损失(−0.15~−0.33 分)。damp=0.25 已触发 PLAN 风险 2 的邻域小幅劣化(0.05506→0.05520)。-2. **反向(膨胀,damp<0)更差**:occupancy 同样下降且 d2_shape 崩塌(raw 0.0047→0.0119),说明 occupancy_dice 的缺口(skill 0.42)不在“分型子云展幅”这个自由度上:全局 aniso(父 13,damp=1.25)已把整体各向异性调到网格最优,逐型再压缩会把云捏成带空隙的团块(dice 降),逐型膨胀会让类型互相重叠、破坏整体距离分布(d2 崩)。-3. 这印证了 PLAN 风险 3 的判据方向:occupancy 对分型整形有响应但全为负响应——mismatch 在体素占据的**全局分布/密度**,不在逐型 aspect ratio。-4. damp=0.75 未查分(介于 0.5 与 1.0 之间,单调性已确立,省额度)。查分额度用 6/20。-5. 已验证:off=父 13/19 逐位(seed 0);seed 1 两次运行逐位一致;vec-check 通过;n=5000 ∈ [583,5000];运行 ~9s、内存 <0.4GB。未验证:真实括号 t=1/3(机制已关闭,无影响);MIN_CELLS/clip 变体(occupancy 双向劣化,无继续扫的意义)。-6. 生物学知识来源:无外部知识;仅使用 PLAN 给定的分型整形假设与输入数据现场计算的几何统计量。--## 视图无关性--TYPE_ANISO(含关闭状态)只依赖:视图坐标数据、类型标签、t(manifest 时间差,平移不变)、seed(未新增随机源)。无绝对时间、无路径/文件名/board 字段、无硬编码统计量。默认路径与父节点 13/19 逐位一致,视图无关性继承自父节点。--## 下一步建议--occupancy_dice(skill 0.42)对全局各向异性(父 13 已最优)和逐型各向异性(本节点,双向劣化)都关不上口子。剩余可能自由度:(a) 逐型**质心位置**的插值/重排(不是展幅缩放,而是类型间相对布局向括号插值目标移动)——但需盯 neighborhood_mmd 与结构门;(b) z 轴单独处理(离散切片结构,occupancy 的 16³ 网格对 z 分层敏感,全局 PCA 整形可能把层间距调错);(c) 接受 shape_scale 现状,转攻 de_score/de_direction(0.58/0.64,权重各 12.5)——表达侧位移管线(α/λ/β)尚未做过针对 DE 排序指标的专门网格。+- 验证:off 与父逐位一致;on 的稀疏结构保持;p/τ/α 网格 8 配置;vec-check ok;默认配置输出与 p1.0 网格文件逐位一致。+- 没验证:seed 1/2 复跑(时间预算内查分优先给了网格);τ<0.15(PLAN 风险 4 的密集位移区);β 配对掩码同步改软权重(预期同样在噪声内)。+- 知识来源:无外部生物学知识;全部为评分指标性质推理(DE 只看排序/符号)与代理网格实测。diff --git a/solution/run.py b/solution/run.pyindex 19e9eba..cf4216b 100644--- a/solution/run.py+++ b/solution/run.py@@ -85,6 +85,16 @@ CONVERGE_ALPHA = float(os.environ.get("T2_CONVERGE_ALPHA", "5.0")) # cells is preserved (a dense per-gene shift destroys it and tanks variogram/mmd). CONVERGE_MIN_DELTA = float(os.environ.get("T2_CONVERGE_MIN_DELTA", "0.25")) CONVERGE_NNZ_ONLY = os.environ.get("T2_CONVERGE_NNZ_ONLY", "1") == "1"+# Soft-threshold gene weighting (family T2EI-01, this node): replace the binary+# participation mask w_g = 1{|Δ_g|>=0.25} with a continuous power weight+# w_g = clip(|Δ_g|/τ, 0, 1)^p applied to the full Δ (displacement α·t·w_g·Δ_g).+# Small-change genes get a proportional (monotone in |Δ|) displacement instead+# of exactly zero, restoring their rank ordering for de_direction, and removing+# the all-or-nothing jump at the threshold that distorts de_score ranking.+# ENABLE=0 or P=0 reproduces the hard-threshold parent bit-for-bit.+SOFT_ENABLE = os.environ.get("T2_SOFT_ENABLE", "1") == "1"+SOFT_TAU = float(os.environ.get("T2_SOFT_TAU", "0.25"))+SOFT_P = float(os.environ.get("T2_SOFT_P", "1.0")) # Per-cell heterogeneous displacement (family T2EI-01 refine): each cell's shift # is scaled by w = clip(1 -/+ λ·p, 0.2, 2.5), where p is the cell's deviation # from its type mean projected onto Δ (only genes with Δ≠0). Cells already@@ -286,11 +296,23 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float):         cnt_b = {k: int((lb == k).sum()) for k in means_b}         shared = sorted(k for k in set(means_a) & set(means_b) if cnt_a[k] >= 10 and cnt_b[k] >= 10)         delta = {}+        n_part, n_hard = [], []         for lab in shared:             d = (means_b[lab] - means_a[lab]).astype(np.float32)-            if CONVERGE_MIN_DELTA > 0:+            if SOFT_ENABLE and SOFT_P > 0:+                w = np.clip(np.abs(d) / max(SOFT_TAU, 1e-12), 0.0, 1.0) ** SOFT_P+                n_part.append(int((w > 0.01).sum()))+                n_hard.append(int((np.abs(d) >= CONVERGE_MIN_DELTA).sum()))+                d = (d * w).astype(np.float32)+            elif CONVERGE_MIN_DELTA > 0:                 d = np.where(np.abs(d) >= CONVERGE_MIN_DELTA, d, np.float32(0.0)).astype(np.float32)             delta[lab] = d+        if n_part:+            conv["soft_enable"] = True+            conv["soft_tau"] = SOFT_TAU+            conv["soft_p"] = SOFT_P+            conv["soft_n_participating_mean"] = float(np.mean(n_part))+            conv["soft_n_hard_mean"] = float(np.mean(n_hard))         if shared:             before = np.vstack([xa, xb]).astype(np.float64)             labs_a = np.asarray(stage_a.labels).astype(str)[ia]@@ -570,7 +592,9 @@ def main() -> None:     keep = {k: info.get(k) for k in ("t", "n", "rms_a", "rms_b", "out_rms", "n_shared_types", "z_dot", "z_flipped",                                      "align", "alpha", "n_shared_types_converged", "within_type_std_rel",                                      "between_type_mean_dist_rel", "n_from_a", "n_from_b",-                                      "lambda", "weight_mean", "weight_std",+                                       "lambda", "weight_mean", "weight_std",+                                        "soft_enable", "soft_tau", "soft_p",+                                        "soft_n_participating_mean", "soft_n_hard_mean",                                        "pair_beta", "n_paired_types", "n_pairs", "pair_within_std_rel",                                        "pair_orth_var_rel", "pair_dist_over_diam",                                        "aniso_enable", "aniso_damp", "aniso_gamma", "aniso_spread_a",

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

用到的知识库条目

编号标题出处
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
k021Low-rank covariance residuals to avoid mean collapsenotes/guides/modeling_and_evaluation_guide.html

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

改了什么在父节点 13/19/22 表达位移步把硬阈值掩码 1{|Δ|≥0.25} 换成连续幂次软权重 w_g=clip(|Δ|/τ,0,1)^p(提交 p=1.0、τ=0.25,环境变量 T2_SOFT_*),位移变为 x ± α·t·w_g·Δ_g,nnz-only 与 clip≥0 保留;off 对照(T2_SOFT_ENABLE=0)seed 0 与父节点逐位一致。
各组分数的变化cell_state:噪声内 +0.05(50.31→50.36):mmd_u raw 0.01123→0.01126(得分 -0.01,微劣),variogram raw 0.01392→0.01382(得分 +0.02,微改善),两者互抵
expression_change:噪声内 +0.05(62.11→62.16):de_direction raw 0.3986→0.4009(得分 +0.01),de_score raw 0.3103 完全不动;B 半重现了 A 半方向但幅度远低于 PLAN 的 0.02 继续阈值
local_spatial:噪声内 +0.03(60.34→60.37):neighborhood_mmd raw 0.05112→0.05106(得分 +0.01),来自表达变化的间接微弱影响
shape_scale:完全不变 +0.00(77.31),坐标未动,符合设计
family_idT2EI-01
假设是否成立否
经验
  1. 在 T2 表达位移管线上,把硬阈值换成软权重(参与基因数 166→478)只动了 de_direction(raw +0.002~0.003),de_score 在所有 p/τ 配置下纹丝不动:de_score 取 |dp| top-N 命中率,小 |Δ| 基因的软位移量近乎零、改变不了 top-N 集合,说明 de_score 缺口在位移方向(α·Δ_type 与真值 dt 的基因级错位)而不是阈值压平。
  2. DE 两项对幅度级微调不敏感:p∈{0.5,1,2}、τ∈{0.15,0.25,0.5} 共 6 个软权重配置的榜分差 <0.08(61.41~61.49,A 半),全部在 T2 噪声内;不改变 dp 排序结构的参数微调不值得继续扫。
  3. α=5 已确认为局部最优:α=3 使 de_score 崩到 0.214,α=8 使 mmd_u 崩到 0.0153,α 维度不必再扫。
  4. τ=0.5(对大 Δ 基因也衰减)净负(61.41),等价于整体减弱位移即缩小 α,方向已由 α 网格覆盖。
  5. nnz-only + clip≥0 保留时,软权重不破坏稀疏结构(nnz 比例 0.059→0.059),variogram/mmd_u 否决线全部满足——稀疏结构保护本身有效。
mechanism_active是
下一步建议
  1. 针对 expression_change:de_score 的缺口在位移方向的基因级错位,用外部通路先验(Reactome/CollecTRI,仓库 prior/ 若有)对逐类型 Δ 做方向校正或投影,直接改变 dp 的 top-N 排序集合,而不是幅度参数。
  2. 针对 cell_state:variogram skill 0.391 是该组最大缺口且软权重下已有微改善迹象(raw 0.01392→0.01382),可试在混抽时对基因共变结构做显式保持/修复(如型内协方差插值),否决线盯 mmd_u。
  3. 停止在 occupancy_dice(skill 0.424)上重复投入:节点 7/21/22/24/26 已从全局各向异性、逐型展幅等多方向攻过均失败或负效应。

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

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

分析员

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

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数18
工具调用共 19 次:bash 12、read 3、edit 3、write 1
用时7 分
token 数输入 54,108 · 输出 6,679 · 思考 5,867
任务(第一行)按计划修改程序:软阈值基因加权位移:连续参与度替代硬截断攻 DE 排序
最后的回答(摘录)
Done. Summary:

**做了什么**:按 PLAN(T2EI-01)在父节点 22 表达位移步实现软阈值基因加权 w_g=clip(|Δ|/τ,0,1)^p,替代硬阈值 1{|Δ|≥0.25};off 对照与父节点逐位一致(61.453=父 A 半)。网格 p×τ×α 共 8 配置、10 次查分。

**查分结果**:de_direction raw 0.3853→0.3879(+0.0026,远低于 PLAN 0.02 继续阈值),de_score 0.25 纹丝不动;净榜分 61.453→61.483(噪声内)。所有否决线满足、variogram/nbr 微改善,按 PLAN 提交机制打开(p=1.0、τ=0.25),vec-check 通过,输出确定。

**下一步最值得试**:de_score 缺口不在阈值压平而在位移方向——α·Δ_type 与真值 dt 的基因级错位;建议用 prior/(Reactome/CollecTRI)对 Δ 做通路级方向校正,或攻 variogram(skill 0.37,细胞状态组最大缺口)。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/27/engineer.jsonl 130 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/27/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时4 分
token 数输入 17,830 · 输出 3,766 · 思考 8,192
任务(第一行)为节点 n27(改进,父节点 n22)写改进计划 PLAN.json
最后的回答(摘录)
(off 对照)。实现步骤:(1) 在 shift 模块中把 |Δ|≥CONVERGE_MIN_DELTA 的布尔掩码替换为软权重向量,用环境变量 T2_SOFT_TAU(默认 0.25)和 T2_SOFT_P(默认 1.0)控制;(2) 先用 seed 0 在 proxy 上跑 off 对照(p=0)确认与父节点逐位一致;(3) 网格第一维:p ∈ {0(off), 0.5, 1.0, 2.0},τ_soft 固定 0.25,查 4 次 vec-score,看 de_score/de_direction raw 变化;(4) 若 p=1.0 或 2.0 有 DE raw 改善,第二维:τ_soft ∈ {0.10, 0.15, 0.20, 0.25},固定最优 p,查 4 次;(5) 若 DE 改善 >0.02 raw 且 mmd_u/variogram/nbr raw 劣化在阈值内(mmd_u < +0.001,variogram < +0.001,nbr < +0.002),第三维:α ∈ {3, 5, 8},固定最优 τ/p,查 3 次;(6) 总计 ≤12 次查分。单输入阶段退路:无括号时走既有 copy_last 退路,软权重代码不执行。vec-score 快速筛选:每次只查 A 半,看 score_parts 中 de_score/de_direction 的 raw 和 skill,同时监控 mmd_u、variogram、neighborhood_mmd raw 是否越过否决线。",
  "expected_groups": ["expression_change"],
  "risks": "(1) 软权重让小 |Δ| 噪声基因获得位移,稀释真实信号,de_score 反而下降——Engineer 在第一步网格(4 次查分)即可发现,若 p=0.5/1.0/2.0 的 de_score raw 均 ≤0.3103 则止损;(2) 小变化基因的位移破坏稀疏结构(零值被抬高),损害 variogram/mmd_u——监控这两项 raw,劣化 >0.001 即放弃该配置;(3) 预期 DE raw 改善可能 <0.02(~1 分组分),在噪声内——需同一最优配置用 seed 0 和 seed 1 各查一次确认;(4) τ_soft 过低(0.10)等于几乎所有基因都参与,退化为密集位移,已知会摧毁稀疏结构——τ_soft ≤ 0.15 时额外检查零值比例是否 <90%。",
  "family_id": "T2EI-01",
  "mechanism": "将表达位移的基因参与从硬阈值二值开关(|Δ|≥0.25 → 1,否则 0)改为连续幂次软权重 w_g = clip(|Δ_g|/τ, 0, 1)^p,使小变化基因获得与其真实变化幅度成比例的位移,修复 de_direction 秩相关中被零化压平的小变化基因排序,同时消除阈值附近的全有/全无跳变对 de_score 排序的扭曲。",
  "vs_constant_shift": "常数位移对每个类型的所有基因施加相同方向和幅度的平移;本机制按每个基因的 |Δ| 赋予不同的连续参与权重(幂次曲线),小变化基因获得按比例缩减的位移而非零或全量,改变的是基因间的相对位移结构(哪些基因动多少),不是整体平移或组成比例。",
  "mechanism_evidence": "(1) 位移前后逐基因 |dp| 排序与 |dt| 排序的 Spearman ρ 应随软权重开启而上升(硬阈值下小 |Δ| 基因的 dp=0 破坏排序);(2) de_direction raw(偏相关)和 de_score raw(命中率)在 score_parts 中的变化方向和幅度;(3) 参与位移的基因数从硬阈值的 ~|Δ|≥0.25 基因数增加到软权重下的更多基因(但幅度递减),Engineer 可打印 sum(w_g>0.01) 对比;(4) 四组分各自变化:expression_change 应升,cell_state/local_spatial/shape_scale 应不变或在否决线内。",
  "mechanism_off_control": "T2_SOFT_P=0(或 T2_SOFT_ENABLE=0):w_g = 1{|Δ_g|≥0.25},即原硬阈值逻辑,输出与父节点 13/19 逐位一致(seed 0 下 array_equal 验证)。预期差别:off 时 de_score raw=0.3103、de_direction raw=0.3986 不变;on 时这两项应变化(改善或劣化),其余六项指标不变(坐标和混抽未动)。",
  "sources": []
}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/27/researcher.jsonl 14 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/27/researcher.stderr

审查员

角色审查员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数9
工具调用共 12 次:read 7、bash 3、write 1、edit 1
用时1 分
token 数输入 31,091 · 输出 1,442 · 思考 1,475
任务(第一行)审查节点 n27 的程序是否越界读取、写死目标、钻评分器漏洞
最后的回答(摘录)
REVIEW.json written
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/27/reviewer.jsonl 143 KB
/home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/27/reviewer.stderr