总览 · ← 返回运行 20261003-094242-search-t2-embryo-interp-g24-D-s2
节点 n8 在终选来历上
父节点 mix+类型级常数收敛位移之上,把位移改为逐细胞投影加权:细胞沿 Δ 方向已前伸的少移、极端的多移(w=clip(1∓λp,0.2,2.5),λ=6),型内分布向中间压缩而非刚性平移。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-094242-search-t2-embryo-interp-g24-D-s2 |
|---|---|
| 父节点 | n5 |
| 子节点 | n11 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 61.75(+0.2) · proxy 61.75(+0.2) · 3 次复测均分 61.77 |
| 审查 | 通过 1 越界读取:未发现问题——run.py 仅通过 --data 目录读入(load_manifest/read_stage/panel_genes,run.py:186-196),导入的是框架库 src.task2_spatial,无绝对路径、..、/mnt、下载或评分器路径。; 2 硬编码目标统计量:未发现问题——所有常量(α=5、λ=6、ε=1.0、|Δ|≥0.25、权重 clip [0.2,2.5]、scale_damp=0.5)是超参数而非目标统计量;Δ 与类型均值均由输入阶段现场计算(run.py:91-103),n 的上下限取自 manifest(run.py:80-81, 19… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 11 分 |
| 程序版本 | 95a9992ba8ea487693c1e4f1900a39a895fd22d2 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 95a9992ba8:solution/METHOD.md
父节点 mix+类型级常数收敛位移之上,把位移改为逐细胞投影加权:细胞沿 Δ 方向已前伸的少移、极端的多移(w=clip(1∓λp,0.2,2.5),λ=6),型内分布向中间压缩而非刚性平移。
方法(family T2EI-01,PLAN:型内投影加权异质位移)
保留父节点 5 全部管线(procrustes3d 对齐、scale_damp=0.5、按类型分层混抽 (1−t,t)、n=5000、共有类型 Δ=μ_b−μ_a 只保留 |Δ|≥0.25、nnz-only + clip≥0、坐标不动、α=5),只把常数位移改成逐细胞加权:
- 对每个共有类型 k、Δ≠0 的基因维度:a 侧细胞 i 计算偏差投影 p_i = dot(x_i − μ_a,k, Δ_k)/(‖Δ_k‖²+ε),ε=1.0;权重 w_i = clip(1 − λ·p_i, 0.2, 2.5);位移 x_i ← clip(x_i + α·t·w_i·Δ_k, 0),只作用于 x_i>0 的项。
- b 侧对称:p_i 相对 μ_b,k,w_i = clip(1 + λ·p_i, 0.2, 2.5),位移 −α·(1−t)·w_i·Δ_k。
- 直觉:已沿 Δ 方向伸展较远(更接近中间态)的细胞获得更小位移,极端细胞获得更大位移 → 型内端点双峰被压缩而非整块平移。
- λ=0 时 w≡1,退化为父节点常数位移(对照,验证逐位相同)。λ 默认 6.0,环境变量
T2_CONVERGE_LAMBDA/T2_CONVERGE_EPS可覆盖,提交时保持打开。 - 单输入阶段退路:同父节点,分层复制最后观测阶段,无位移。坐标完全不动,表达-位置配对不因机制被破坏。
机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4,10 个共有类型全部位移)
- 权重分布:λ=6 时 w_mean=1.096、w_std=0.652(≫0.05,投影有区分力;均值略高于 1 因下界 0.2/上界 2.5 的 clip 不对称)。λ=1/2/3 时 w_std=0.15/0.29/0.40,随 λ 单调。
- 型内表达标准差比(after/before)0.920、型间均值距离比 0.804;零元结构保持(nnz-only 位移)。
- λ=0 输出与父节点 run.py 输出逐位相同(X 与坐标 array_equal=True)——关闭对照通过。
对照与查分结果(全部为同一时段 A 半查分;父节点输出同日重查 = 60.55,此前变化量表中的 61.51 属另一次评分锚点,跨日绝对值不可直接比)
| 配置 | 总分 | mmd_u skill | variogram skill | neighborhood skill | cell_state 组 |
|---|---|---|---|---|---|
| λ=0(对照=父节点,逐位相同) | 60.55 | 0.585 | 0.371 | 0.583 | 47.82 |
| λ=0.5 | 60.60 | 0.587 | 0.374 | 0.583 | 48.07 |
| λ=1.0 | 60.65 | 0.590 | 0.376 | 0.582 | 48.29 |
| λ=2.0 | 60.67 | 0.596 | 0.373 | 0.581 | 48.47 |
| λ=3.0 | 60.69 | 0.599 | 0.371 | 0.582 | 48.50 |
| λ=6.0(提交) | 60.72 | 0.599 | 0.368 | 0.585 | 48.33 |
| λ=10.0 | 60.49 | 0.592 | 0.365 | 0.587 | 47.88 |
| λ=1/3, ε=0.1 | 60.65/60.69 | 0.590/0.599 | 0.376/0.371 | 0.582 | — |
- 收益来源是 mmd_u skill(0.585→0.599,随 λ 单调到 6 后在 10 回落),variogram 基本持平(0.371→0.368),neighborhood、DE 两项、形状三项不动。
- 如实说明:同日同锚点下总收益 +0.17(60.55→60.72),低于 T2 约 1 分的查分噪声,PLAN 预期的 variogram 明显上升没有出现;只有 mmd_u 的单调改善是跨 λ 一致的方向性信号(护栏 mmd_u≥0.585、neighborhood≥0.58 均未破)。λ=10 过冲回落,平台在 3–6,取 λ=6。
- 已验证:λ=0 逐位复现父节点;λ∈{0.5,1,2,3,6,10}、ε∈{0.1,1.0} 网格;vec-check 通过;默认参数输出与 λ=6 网格输出一致;无新增随机源,对 seed 确定。
- 未验证:λ 与 α 的联合网格(α 固定 5);真实括号(跨度更窄、Δ 更小,投影 p 的尺度随 ‖Δ‖ 变化,λ 的最优值可能移动——ε=1.0 在 ‖Δ‖² 小时会稀释权重,跨括号迁移性存疑);proxy2/final 视图未跑(本节点只挂 proxy 尺子)。
知识来源
未使用新的生物学知识;Δ 向量、类型均值全部由 view 内两个输入阶段现场计算,无硬编码统计量,无保留阶段/基因型信息。
下一步建议
- variogram 对"沿 Δ 的投影加权"不敏感,说明双峰残差主要不在 Δ 方向上;可试型内沿主成分的分位数压缩,或对 a/b 两侧细胞做型内 OT 配对后向配对中点收缩(保 nnz 结构)。
- occupancy_dice skill 0.369 仍是形状组主要失分项,与表达机制正交,值得单独做坐标侧改进。
调研员的计划
| 名称 | 型内投影加权异质位移:按细胞沿Δ方向的位置缩放位移量 |
|---|---|
| 动机 | 父节点5的cell_state组49.28是四组最弱,其中variogram skill 0.389远低于地板0.5(得分仅4.86/12.5)。ANALYSIS指出型均值常数位移已接近上限,型内端点双峰未消。原因:同型所有细胞被同一Δ平移,a/b两侧仍是两个平移块,混合后基因共变结构(variogram)仍呈双峰。需要型内异质性使分布从'两块平移'变为'向中间压缩'。 |
| 做法 | 在父节点run.py的mix_converge函数中,将常数位移改为逐细胞加权位移: 1. 对每个共有类型k,照旧计算Δ_k(|Δ|≥0.25过滤)。 2. 对a侧每个细胞i:计算偏差 d_i = x_i − μ_a,k(仅取Δ非零基因维度),投影 p_i = dot(d_i, Δ_k)/(dot(Δ_k,Δ_k)+ε),权重 w_i = clip(1 − λ·p_i, 0.2, 2.5)。位移 x_i ← clip(x_i + α·t·w_i·Δ_k, 0),仅作用于x_i>0的项。 3. b侧对称:p_i = dot(x_i−μ_b,k, Δ_k)/(dot(Δ_k,Δ_k)+ε),w_i = clip(1 + λ·p_i, 0.2, 2.5),x_i ← clip(x_i − α·(1−t)·w_i·Δ_k, 0),nnz-only。 4. 直觉:已沿Δ方向伸展较远的细胞(更接近中间态)获得更小位移,极端细胞获得更大位移→分布被压缩而非刚性平移,混合双峰减弱。 5. 参数:α=5(继承父节点),ε=1.0,λ初值1.0,网格λ∈{0, 0.5, 1.0, 2.0, 3.0}。λ=0退化为父节点(对照)。权重上下界[0.2,2.5]防止极端值。 6. 单输入阶段退路:同父节点,分层复制最后观测阶段,无位移。 7. vec-score快速筛选:先跑λ=0确认逐位复现父节点(56.36±噪声),再跑λ=1.0,若variogram skill>0.389则继续网格;若λ=1.0无改善则尝试ε=0.1。 8. 监控护栏:mmd_u skill≥0.585、neighborhood skill≥0.60、零元比例变化<0.02。若mmd_u skill<0.55则λ过大,回退。 |
| 风险 | 1) 高维稀疏数据上投影p_i噪声大(多数基因维度为0),权重退化为常数→无改善;尽早发现:检查w_i的标准差,若<0.05则机制未生效,需改用仅对nnz维度计算投影。2) λ过大导致极端权重破坏型内结构→mmd_u/variogram反降;发现:λ=2时若总分<对照则停止增大λ。3) 30分钟内需完成实现+5个λ查分;实现只改_shift函数内几行,风险低。4) 收益可能<1分噪声;需λ=1和λ=2各跑一次确认方向一致性。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 ce70a2f10a。改动的文件:solution/METHOD.md +31 −39、solution/run.py +36 −6
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex f16e960..4db8403 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,52 +1,44 @@-mix 混抽 + 共有类型时间差向量强收敛:a 侧细胞 +α·t·Δ_type、b 侧 −α·(1−t)·Δ_type(α=5,只移已表达项、只留 |Δ|≥0.25 基因),坐标不动。+父节点 mix+类型级常数收敛位移之上,把位移改为逐细胞投影加权:细胞沿 Δ 方向已前伸的少移、极端的多移(w=clip(1∓λp,0.2,2.5),λ=6),型内分布向中间压缩而非刚性平移。 -## 方法(family T2EI-01,PLAN 指定的类型级表达时间收敛)+## 方法(family T2EI-01,PLAN:型内投影加权异质位移) -在父节点 2 的 mix 管线(procrustes3d 对齐、scale_damp=0.5、按类型分层混抽 (1−t, t)、n=5000)之上,新增一步:+保留父节点 5 全部管线(procrustes3d 对齐、scale_damp=0.5、按类型分层混抽 (1−t,t)、n=5000、共有类型 Δ=μ_b−μ_a 只保留 |Δ|≥0.25、nnz-only + clip≥0、坐标不动、α=5),只把常数位移改成逐细胞加权: -1. 对两个括号阶段都出现(各 ≥10 细胞)的类型,Δ_type = μ_b − μ_a(该类型两阶段伪批量均值差),只保留 |Δ| ≥ 0.25 的基因(与 DE 阈值一致,小变化视为噪声)。-2. 来自 stage_a 的该类型细胞:x ← clip(x + α·t·Δ, 0);来自 stage_b 的:x ← clip(x − α·(1−t)·Δ, 0)。-3. **稀疏保持(关键结构修复)**:只对细胞中已表达(x>0)的项做位移,零项保持零。位移是逐类型常数向量,若不限制到已表达项,零元比例会从 93% 掉到 54%,细胞不再像真实细胞,variogram/mmd_u 崩溃(见下)。-4. 坐标完全不动 → 表达-位置配对(neighborhood_mmd)不因机制本身被破坏。-5. 单输入阶段退路:与父节点一致,分层复制最后观测阶段,不做位移。-6. 参数:α 默认 5.0,环境变量 `T2_CONVERGE_ALPHA` 覆盖(提交时保持打开);α=0 为机制关闭对照。+1. 对每个共有类型 k、Δ≠0 的基因维度:a 侧细胞 i 计算偏差投影 p_i = dot(x_i − μ_a,k, Δ_k)/(‖Δ_k‖²+ε),ε=1.0;权重 w_i = clip(1 − λ·p_i, 0.2, 2.5);位移 x_i ← clip(x_i + α·t·w_i·Δ_k, 0),只作用于 x_i>0 的项。+2. b 侧对称:p_i 相对 μ_b,k,w_i = clip(1 + λ·p_i, 0.2, 2.5),位移 −α·(1−t)·w_i·Δ_k。+3. 直觉:已沿 Δ 方向伸展较远(更接近中间态)的细胞获得更小位移,极端细胞获得更大位移 → 型内端点双峰被压缩而非整块平移。+4. λ=0 时 w≡1,退化为父节点常数位移(对照,验证逐位相同)。λ 默认 6.0,环境变量 `T2_CONVERGE_LAMBDA` / `T2_CONVERGE_EPS` 可覆盖,提交时保持打开。+5. 单输入阶段退路:同父节点,分层复制最后观测阶段,无位移。坐标完全不动,表达-位置配对不因机制被破坏。 -## 机制生效证据(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 个共有类型全部位移) -- α=0 输出与父节点 run.py 输出逐位相同(X 与坐标 array_equal=True),管线正确。-- α=5:10 个共有类型全部位移;型内表达标准差比 0.91(变化 <10%,型内结构未坍缩);型间均值距离比 0.79(收缩);零元比例 0.929→0.941(b 侧下移经 clip 略增,结构保持)。-- 加权伪批量几乎不动:抽样比例 (1−t, t) 使两侧位移在全局均值中精确抵消(α 大不改变整体均值,只消解型内端点双峰);de_score 的变化来自 clip 的不对称。+- 权重分布:λ=6 时 w_mean=1.096、w_std=0.652(≫0.05,投影有区分力;均值略高于 1 因下界 0.2/上界 2.5 的 clip 不对称)。λ=1/2/3 时 w_std=0.15/0.29/0.40,随 λ 单调。+- 型内表达标准差比(after/before)0.920、型间均值距离比 0.804;零元结构保持(nnz-only 位移)。+- λ=0 输出与父节点 run.py 输出逐位相同(X 与坐标 array_equal=True)——关闭对照通过。 -## 对照与查分结果(A 半,seed 0,除注明外)+## 对照与查分结果(全部为同一时段 A 半查分;父节点输出同日重查 = 60.55,此前变化量表中的 61.51 属另一次评分锚点,跨日绝对值不可直接比) -| 配置 | 总分 | cell_state | variogram skill | mmd_u skill | neighborhood skill |+| 配置 | 总分 | mmd_u skill | variogram skill | neighborhood skill | cell_state 组 | |---|---:|---:|---:|---:|---:|-| α=0(对照=父节点) | 56.36 | 36.23 | 0.216 | 0.509 | 0.545 |-| α=0.5 稠密位移(无稀疏保持) | 56.02 | 27.33 | 0.097 | 0.450 | 0.496 |-| α=0.2 稠密 | ~55.4 | 30.64 | 0.126 | 0.487 | 0.527 |-| α=0.5 稀疏 | 56.63 | 37.10 | 0.228 | 0.514 | 0.544 |-| α=1.0 稀疏 | 56.95 | 38.33 | 0.243 | 0.524 | 0.544 |-| α=1.5 稀疏 | 57.41 | 40.03 | 0.262 | 0.539 | 0.545 |-| α=2.5 稀疏 | 58.81 | 44.33 | 0.315 | 0.572 | 0.557 |-| α=4 稀疏 | 60.27 | 47.42 | 0.357 | 0.592 | 0.576 |-| **α=5 稀疏(提交)** | **60.55** | **47.82** | **0.371** | **0.585** | **0.583** |-| α=6 稀疏 | 60.43 | 47.26 | 0.381 | 0.565 | 0.584 |-| α=10 稀疏 | 57.93 | 40.82 | 0.392 | 0.424 | 0.543 |-| α=5,seed 1 | 60.34 | 47.82 | - | - | - |--稠密位移(PLAN 原式,不加稀疏保持)在所有 α 上都比对照差:它同时打坏稀疏结构。机制的收益全部来自"稀疏保持 + 大 α"这一修正版。--## 验证过 / 没验证--- 验证:α=0 逐位复现父节点;α 网格 0.2–10(A 半,13 次查分);平台在 4–6,取中值 5(对平台边缘最稳);seed 0/1 分数一致(60.55 / 60.34);输出确定(同 seed 逐位相同);vec-check 通过;运行 ~30s、峰值内存远低于限值。-- 没验证:final 视图真实括号(E7.25+E8.0→E7.5,t=1/3)无法本地查分。α=5 远超 PLAN 的 {0.2..1.0} 建议区间,是在代理的大跨度括号(E6.75→E8.0,Δ 很大)上调出的;真实括号更窄、Δ 更小,同样的 α 产生的绝对位移也更小(Δ 正比于括号跨度),预期方向可迁移,但平台位置可能偏移。α=10 时 mmd_u 崩溃说明过冲有真实代价,故不取平台右缘。-- B 半噪声 ~1 分:+4.2(56.36→60.55)远超噪声,但正式分是 B 半,幅度可能不同。+| λ=0(对照=父节点,逐位相同) | 60.55 | 0.585 | 0.371 | 0.583 | 47.82 |+| λ=0.5 | 60.60 | 0.587 | 0.374 | 0.583 | 48.07 |+| λ=1.0 | 60.65 | 0.590 | 0.376 | 0.582 | 48.29 |+| λ=2.0 | 60.67 | 0.596 | 0.373 | 0.581 | 48.47 |+| λ=3.0 | 60.69 | 0.599 | 0.371 | 0.582 | 48.50 |+| **λ=6.0(提交)** | **60.72** | 0.599 | 0.368 | 0.585 | 48.33 |+| λ=10.0 | 60.49 | 0.592 | 0.365 | 0.587 | 47.88 |+| λ=1/3, ε=0.1 | 60.65/60.69 | 0.590/0.599 | 0.376/0.371 | 0.582 | — |++- 收益来源是 mmd_u skill(0.585→0.599,随 λ 单调到 6 后在 10 回落),variogram 基本持平(0.371→0.368),neighborhood、DE 两项、形状三项不动。+- **如实说明**:同日同锚点下总收益 +0.17(60.55→60.72),低于 T2 约 1 分的查分噪声,PLAN 预期的 variogram 明显上升没有出现;只有 mmd_u 的单调改善是跨 λ 一致的方向性信号(护栏 mmd_u≥0.585、neighborhood≥0.58 均未破)。λ=10 过冲回落,平台在 3–6,取 λ=6。+- 已验证:λ=0 逐位复现父节点;λ∈{0.5,1,2,3,6,10}、ε∈{0.1,1.0} 网格;vec-check 通过;默认参数输出与 λ=6 网格输出一致;无新增随机源,对 seed 确定。+- 未验证:λ 与 α 的联合网格(α 固定 5);真实括号(跨度更窄、Δ 更小,投影 p 的尺度随 ‖Δ‖ 变化,λ 的最优值可能移动——ε=1.0 在 ‖Δ‖² 小时会稀释权重,跨括号迁移性存疑);proxy2/final 视图未跑(本节点只挂 proxy 尺子)。 ## 知识来源 -未使用任何文献/数据库先验;Δ_type 完全由视图内两个输入阶段现场计算(无保留阶段信息、无硬编码类型名/比例/表达值)。|Δ|≥0.25 阈值沿用评分简报中 DE 指标的显著性阈值,属通用约定而非禁窗知识。+未使用新的生物学知识;Δ 向量、类型均值全部由 view 内两个输入阶段现场计算,无硬编码统计量,无保留阶段/基因型信息。 -## 风险与下一步+## 下一步建议 -- variogram skill 仍只有 0.371(<0.5 地板):型内端点双峰未完全消除。下一步可试:按分位数把 a 侧型内分布映射到插值分布,或对 Δ 位移加型内随机权重(保持共变结构)。-- occupancy_dice skill 0.369 一直很低且对表达机制不敏感(坐标项),是形状组剩余失分主因,需坐标侧改进。+- variogram 对"沿 Δ 的投影加权"不敏感,说明双峰残差主要不在 Δ 方向上;可试型内沿主成分的分位数压缩,或对 a/b 两侧细胞做型内 OT 配对后向配对中点收缩(保 nnz 结构)。+- occupancy_dice skill 0.369 仍是形状组主要失分项,与表达机制正交,值得单独做坐标侧改进。diff --git a/solution/run.py b/solution/run.pyindex 28df8a5..201dac6 100644--- a/solution/run.py+++ b/solution/run.py@@ -55,6 +55,14 @@ 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"+# 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+# stretched toward the intermediate state move less, extreme cells move more,+# compressing the within-type endpoint bimodality instead of rigidly shifting+# it. λ = 0 gives w ≡ 1 and reproduces the constant-shift parent bit-for-bit.+CONVERGE_LAMBDA = float(os.environ.get("T2_CONVERGE_LAMBDA", "6.0"))+CONVERGE_EPS = float(os.environ.get("T2_CONVERGE_EPS", "1.0")) def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float):@@ -77,7 +85,8 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float): xb = as_dense(stage_b.X, ib) if ib.size else np.zeros((0, len(stage_b.genes)), np.float32) conv = {"alpha": alpha, "n_shared_types_converged": 0, "within_type_std_rel": None,- "between_type_mean_dist_rel": None}+ "between_type_mean_dist_rel": None, "lambda": CONVERGE_LAMBDA,+ "weight_mean": None, "weight_std": None} if alpha != 0.0 and ia.size and ib.size: means_a = type_means(stage_a.X, stage_a.labels) means_b = type_means(stage_b.X, stage_b.labels)@@ -96,8 +105,24 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float): before = np.vstack([xa, xb]).astype(np.float64) labs_a = np.asarray(stage_a.labels).astype(str)[ia] labs_b = np.asarray(stage_b.labels).astype(str)[ib]- def _shift(block, w, d):- out = np.clip(block + np.float32(w) * d, 0.0, None)+ all_w = []++ def _shift(block, c, d, mu, wsign):+ # Per-cell weighted displacement: scale each cell's shift by how+ # far it already sits along Δ from its own side's type mean.+ if CONVERGE_LAMBDA != 0.0:+ m = d != 0+ if m.any():+ dm = np.asarray(d[m], dtype=np.float64)+ dev = block[:, m].astype(np.float64) - np.asarray(mu[m], dtype=np.float64)+ p = dev @ dm / (dm @ dm + CONVERGE_EPS)+ w = np.clip(1.0 + wsign * CONVERGE_LAMBDA * p, 0.2, 2.5)+ else:+ w = np.ones(block.shape[0])+ else:+ w = np.ones(block.shape[0])+ all_w.append(w)+ out = np.clip(block + (np.float32(c) * w.astype(np.float32))[:, None] * d, 0.0, None) if CONVERGE_NNZ_ONLY: return np.where(block > 0, out, block) return out@@ -106,10 +131,14 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float): d = delta[lab] ma = labs_a == lab if ma.any():- xa[ma] = _shift(xa[ma], alpha * t, d)+ xa[ma] = _shift(xa[ma], alpha * t, d, means_a[lab], -1.0) mb = labs_b == lab if mb.any():- xb[mb] = _shift(xb[mb], -alpha * (1.0 - t), d)+ xb[mb] = _shift(xb[mb], -alpha * (1.0 - t), d, means_b[lab], +1.0)+ if all_w:+ wcat = np.concatenate(all_w)+ conv["weight_mean"] = float(wcat.mean())+ conv["weight_std"] = float(wcat.std()) after = np.vstack([xa, xb]).astype(np.float64) # mechanism evidence: within-type std and between-type mean distance labs = np.concatenate([labs_a, labs_b])@@ -169,7 +198,8 @@ def main() -> None: expr, coords, info = mix_converge(stage_a, stage_b, t, params, CONVERGE_ALPHA) 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")}+ "between_type_mean_dist_rel", "n_from_a", "n_from_b",+ "lambda", "weight_mean", "weight_std")} print(json.dumps({"bracket": [a["stage"], b["stage"]], **keep}, default=float), file=sys.stderr) write_t2(args.out, expr, coords, genes, seed=args.seed)
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| k007 | Interval staging and held-out-window filtering of external data | notes/official/来件/virtualembryo.ai/rules.md |
| k024 | World-model evaluation dimensions for state-transition predictors | notes/competition/07_biomedical_world_models.md |
| k008 | Navigo: iterative rectified flow matching on snapshot time series | 10.64898/2026.06.18.733286 |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父节点 5 的类型级常数收敛位移(α=5,nnz-only,坐标不动)之上,把位移改为逐细胞投影加权:w=clip(1∓λ·p, 0.2, 2.5),p 为细胞偏差沿 Δ 的投影(ε=1.0),λ 默认 6,可用环境变量覆盖;λ=0 逐位复现父节点(Engineer 已验证 array_equal)。 |
|---|---|
| 各组分数的变化 | cell_state:49.75 vs 49.28(+0.47),在噪声内;分解:mmd_u 0.0122→0.01158(skill 0.597→0.610,得分 +0.16),variogram 0.01395→0.01414(skill 0.389→0.386,得分 -0.04)——PLAN 预期的 variogram 上升没有出现,variogram 甚至微降 expression_change:62.02 vs 61.31(+0.71),在噪声内;分解:de_score 0.2759→0.3103(得分 +0.16),de_direction 0.3919→0.3944(+0.01),加权位移不改基因排序,这点变化应属抽样/clip 抖动的噪声 local_spatial:60.80 vs 61.02(-0.22),在噪声内;neighborhood_mmd 0.04971→0.05015(skill 0.610→0.608,-0.06),机制未破坏表达-位置配对 shape_scale:74.43 vs 74.43(+0.00),坐标不动,三项形状指标完全不变 |
| family_id | T2EI-01 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 是 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 6 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 5 次:bash 3、write 1、edit 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 14,983 · 输出 1,314 · 思考 739 |
| 任务(第一行) | 分析节点 n8 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/analyst.jsonl 19 KB /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 18 |
| 工具调用 | 共 19 次:bash 14、edit 3、read 1、write 1 |
| 用时 | 8 分 |
| token 数 | 输入 42,135 · 输出 7,349 · 思考 5,169 |
| 任务(第一行) | 按计划修改程序:型内投影加权异质位移:按细胞沿Δ方向的位置缩放位移量 |
| 最后的回答(摘录) | 做了什么:在父节点 5(mix + 类型级常数收敛位移)上实现 PLAN 的型内投影加权异质位移——每个细胞的位移按其沿 Δ 方向的投影缩放(w=clip(1∓λp,0.2,2.5),ε=1.0,nnz-only,坐标不动),λ=0 对照逐位复现父节点。
查分(8 次,均同日 A 半锚点):父节点输出同日重查 60.55;λ 网格 {0.5,1,2,3,6,10} 得 60.60/60.65/60.67/60.69/60.72/60.49,ε=0.1 无额外收益。提交 λ=6(60.72,+0.17,低于 ~1 分噪声,如实记录)。收益全部来自 mmd_u skill 0.585→0.599(随 λ 单调至平台),variogram 持平(0.371→0.368),PLAN 预期的 variogram 上升未出现;护栏(mmd_u≥0.585、nb≥0.58)未破。vec-check 通过,seed 0/1 均正常。
下一步最值得试:(1) variogram 残差不在 Δ 方向上——改做型内主成分分位数压缩或 a/b 型内 OT 配对向中点收缩;(2) occupancy_dice(skill 0.369)坐标侧各向异性缩放,与表达机制正交。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/engineer.jsonl 95 KB /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 2 分 |
| token 数 | 输入 15,125 · 输出 1,297 · 思考 3,999 |
| 任务(第一行) | 为节点 n8(改进,父节点 n5)写改进计划 PLAN.json |
| 最后的回答(摘录) | ift limit and suggests within-type heterogeneity.
```json
{
"name": "型内投影加权异质位移:按细胞沿Δ方向的位置缩放位移量",
"motivation": "父节点5的cell_state组49.28是四组最弱,其中variogram skill 0.389远低于地板0.5(得分仅4.86/12.5)。ANALYSIS指出型均值常数位移已接近上限,型内端点双峰未消。原因:同型所有细胞被同一Δ平移,a/b两侧仍是两个平移块,混合后基因共变结构(variogram)仍呈双峰。需要型内异质性使分布从'两块平移'变为'向中间压缩'。",
"approach": "在父节点run.py的mix_converge函数中,将常数位移改为逐细胞加权位移:\n\n1. 对每个共有类型k,照旧计算Δ_k(|Δ|≥0.25过滤)。\n2. 对a侧每个细胞i:计算偏差 d_i = x_i − μ_a,k(仅取Δ非零基因维度),投影 p_i = dot(d_i, Δ_k)/(dot(Δ_k,Δ_k)+ε),权重 w_i = clip(1 − λ·p_i, 0.2, 2.5)。位移 x_i ← clip(x_i + α·t·w_i·Δ_k, 0),仅作用于x_i>0的项。\n3. b侧对称:p_i = dot(x_i−μ_b,k, Δ_k)/(dot(Δ_k,Δ_k)+ε),w_i = clip(1 + λ·p_i, 0.2, 2.5),x_i ← clip(x_i − α·(1−t)·w_i·Δ_k, 0),nnz-only。\n4. 直觉:已沿Δ方向伸展较远的细胞(更接近中间态)获得更小位移,极端细胞获得更大位移→分布被压缩而非刚性平移,混合双峰减弱。\n5. 参数:α=5(继承父节点),ε=1.0,λ初值1.0,网格λ∈{0, 0.5, 1.0, 2.0, 3.0}。λ=0退化为父节点(对照)。权重上下界[0.2,2.5]防止极端值。\n6. 单输入阶段退路:同父节点,分层复制最后观测阶段,无位移。\n7. vec-score快速筛选:先跑λ=0确认逐位复现父节点(56.36±噪声),再跑λ=1.0,若variogram skill>0.389则继续网格;若λ=1.0无改善则尝试ε=0.1。\n8. 监控护栏:mmd_u skill≥0.585、neighborhood skill≥0.60、零元比例变化<0.02。若mmd_u skill<0.55则λ过大,回退。",
"expected_groups": ["cell_state"],
"risks": "1) 高维稀疏数据上投影p_i噪声大(多数基因维度为0),权重退化为常数→无改善;尽早发现:检查w_i的标准差,若<0.05则机制未生效,需改用仅对nnz维度计算投影。2) λ过大导致极端权重破坏型内结构→mmd_u/variogram反降;发现:λ=2时若总分<对照则停止增大λ。3) 30分钟内需完成实现+5个λ查分;实现只改_shift函数内几行,风险低。4) 收益可能<1分噪声;需λ=1和λ=2各跑一次确认方向一致性。",
"family_id": "T2EI-01",
"mechanism": "将父节点的型内常数位移改为逐细胞加权位移:每个细胞的位移量按其沿Δ方向的投影位置缩放(已前伸的少移、极端的不移),使型内分布从刚性平移变为向中间压缩,消除混合双峰、改善基因共变结构。",
"vs_constant_shift": "常数位移对同型所有细胞施加相同向量,保持型内方差不变(只平移分布);本方案按每个细胞在Δ方向上的投影给予不同权重,压缩型内分布的端点→改变型内分布形状(方差减小、双峰消除),不是全局组成重加权也不是每型常数。λ=0时退化为父节点。",
"mechanism_evidence": "Engineer应检查:(1) 权重w_i的分布:均值≈1、标准差>0.1(若<0.05说明投影无区分力);(2) 型内表达标准差比(after/before):应比父节点的0.91更低(压缩而非平移);(3) variogram skill从0.389上升;(4) 零元比例变化<0.02(稀疏保持);(5) mmd_u和neighborhood skill不降。",
"mechanism_off_control": "λ=0时w_i=1(所有细胞权重为1),位移公式退化为父节点的常数α·t·Δ,输出应与父节点逐位相同(array_equal=True)。预期差别:λ=0复现父节点分数(~56.36 A半),λ>0时variogram skill应上升、总分应>对照。"
}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/researcher.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 6 |
| 工具调用 | 共 11 次:read 6、bash 3、glob 1、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 19,590 · 输出 1,308 · 思考 1,907 |
| 任务(第一行) | 审查节点 n8 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/reviewer.jsonl 85 KB /home/spark-longxinyang/vec/runs/formal/20261003-094242-search-t2-embryo-interp-g24-D-s2/nodes/8/reviewer.stderr |