总览 · ← 返回运行 20261003-004922-search-t2-heart-interp-g24-D
节点 n20
实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-004922-search-t2-heart-interp-g24-D |
|---|---|
| 父节点 | n19 |
| 子节点 | n22 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 61.41(+0.0) · proxy 61.41(+0.0) · 3 次复测均分 61.33 |
| 审查 | 通过 检查1(越界读取):未发现问题。run.py 只经 load_manifest/read_stage/panel_genes 读 --data 视图内路径;_load_external_prior (run.py:199-240) 仅遍历 manifest['external'] 挂载的视图内文件;无绝对路径、'..'、/mnt、/home、data/raw、打分器路径或联网下载(grep 无命中)。; 检查2(硬编码目标统计量):未发现问题。run.py:60-71 的常量均为机制超参(k、strength、max_frac、alpha、beta),无写死的细胞类型比例、细胞数、基因列表或… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 12 分 |
| 程序版本 | f6675a2f156172f2376230fe094dff3ed149becb (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git f6675a2f15:solution/METHOD.md
实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。
方法族 / 实现
family_id = T2HI-08(外部型内方差先验的方差增强),实现于 run.py::_var_expand + _load_external_prior:
- 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑保持关闭(alpha=0)。
- 新增
--qiu-var β(默认 0 = 完全跳过):对每个 ≥5 细胞的类型,X_new = (1−f_g)·μ_type + f_g·X,f_g = clamp(r_g^β, 0.25, 4),clip 到 ≥0(log1p 域)。μ_type 不动、细胞沿自身偏差双向外扩 → 保均值、保协方差形状、增型内离散。 - 外部先验自动检测(PLAN 步骤0 的免费诊断):遍历 manifest
external/,按数据内容(基因重叠 ≥30 且与本板类型词汇有交集)判断可用性,不看数据集 id / 路径(视图无关)。 - 单输入阶段退路:机制只作用于最终输出表达,不依赖输入阶段数;单阶段分支同样接入。
免费诊断结果(0 次查分)
本视图 external/ 只挂了 mosta_e95_v0(MOSTA E9.5 空间数据,496/500 基因重叠,但类型词汇为 Brain/Heart/Mesenchyme 等粗标签,与本板 E8.25/E9.5 官方词汇(V-CM、EXE-Endoderm…)零交集);PLAN 预期的 Qiu 2024 E9.0 未挂载。→ 按 PLAN 条款走对角退路:r_g 用本板该型自身 SD 结构,f_g = 1+β 均匀双向外扩(var_source 日志确认为 diagonal)。
机制生效证据(seed 0,全部 17616 细胞被改动,0 跳过)
| β | 方差比 after/before | mean|Δμ_type| | 改变>1%细胞比例 |
|---|---|---|---|
| 0.05 | 1.071 | 0.013 | 99.99% |
| 0.15 | 1.222 | 0.040 | 100% |
| 0.30 | 1.468 | 0.079 | 100% |
方差随 β 单调上升、型均值近似不动(Δμ 仅来自 clip≥0)、上/下均值细胞反向远离 → 是离散度变换而非位置平移(与常数位移可区分:常数位移型均值移动、方差不变)。坐标、细胞数、类型组成完全不动 → local_spatial/shape_scale 仅经表达相关项微动,符合 PLAN 预期指纹。
对照结果(mechanism_off_control)
--qiu-var 0(默认值)完全跳过增强步。关闭态输出与父节点19(=父17)管线输出 X 与 spatial_3D 均 np.array_equal = True(逐位一致,本节点直接验证);查分确认四组分与节点19 A 半记录逐一相同(65.93/63.83/61.70/52.68,board 61.033)。
机制检验:方向弱正、幅度不足(vec-score A 半,seed 0,共 5 次查分)
| 配置 | board | cell_state | expression_change | local_spatial | shape_scale |
|---|---|---|---|---|---|
| 关闭对照 β=0(=父) | 61.033 | 65.93 | 63.83 | 61.70 | 52.68 |
| β=0.05 对角 | 61.091 (+0.06) | 66.13 (+0.20) | 63.57 (−0.26) | 61.98 | 52.68 |
| β=0.15 对角 | 61.085 (+0.05) | 66.20 (+0.27) | 63.41 (−0.42) | 62.05 | 52.68 |
| β=0.30 对角 | 60.663 (−0.37) | 65.40 (−0.53) | 63.59 (−0.24) | 60.98 | 52.68 |
cell_state 随 β 先微升后降(峰值 ~0.15),expression_change 微降,净榜分增益 ≤ +0.06,远小于 1 分止损阈值(PLAN 步骤3:三档全部未超对照 +1 → 提交 β=0)。未提交非零 β 的理由:+0.05 在 A/B 半与种子噪声内无法区分,且以 expression_change 下降为代价。这与节点19合起来给出双侧证据:型内方差在本 board 已接近参考最优(收窄 −4.76/5%方差、放大 +0.27/22%方差),表达侧对角/低通类修饰均已到顶。
提交内容
默认参数即关闭态,输出与父节点17/19逐位一致(零损失保底)。vec-check 通过;seed 0/1 各自确定运行;EXECUTION.json 为 {"gpu": false}。
生物学知识来源
无新增外部生物学知识。外部先验使用逻辑仅依赖视图自带 external/ 数据(本视图为 MOSTA E9.5,已合规过滤),且因类型词汇不可映射而未实际使用其数值。
未验证
- 外部(Qiu 类)方差比路径的实际效果:本视图无可用外部 scRNA(类型词汇零交集),
_load_external_prior的比值分支只在代码层验证了触发条件,未能在数据上跑通端到端;若 final 视图挂载了词汇可映射的 Qiu E9.0,该分支会自动启用(但仍受 β 默认 0 保护,不会改变提交行为)。 - β ∈ (0.15, 0.3) 细网格与 clip 前负值处理变体(止损后不再消耗额度)。
- B 半与 final 视图(关闭态与父逐位一致,迁移性等同父节点17)。
调研员的计划
| 名称 | T2HI-08 Qiu E9.0 型内方差增强(保均值、双向外扩,对照 β=0) |
|---|---|
| 动机 | 表达侧两条降多样性路线均已证伪:节点19 型内 kNN 表达平滑使 cell_state 随 alpha 单调大跌(0.05 时 −4.76、0.10 时 −7.55),节点12 型×基因趋势位移 6 档全掉分;教训明确——表达修改必须保/增型内异质性。坐标侧已平台(节点15/17 local_spatial 60.40→62.34,mf 0.45–0.8 榜分 61.0–61.1 不再动),父19 ANALYSIS 明确要求把查分预算全投表达侧新机制。四组分中 cell_state 66.70 与 expression_change 63.90 自节点2 起从未被表达侧机制触碰。方向库 T2HI-08(外部 Qiu 2024 早期心脏 scRNA 补类型内方差)正为此设计:Qiu E9.0 在允许阶段(不在 T2 heart 禁窗 (8.25,8.75)/(9.5,13.5] 内)、心脏谱系、可作型内方差的独立先验。 |
| 做法 | 基线=节点17管线(mix + procrustes + kNN 坐标平滑 k=20, strength=1.5, max_frac=0.45, k_adaptive;保留节点19 的表达平滑代码但 alpha=0 关闭)。新增 --qiu-var 步骤,在最终输出表达上执行: 0) 免费诊断(0 次查分):从视图 external/ 读 Qiu 2024 E9.0,标签映射到本板类型词汇,统计与本板 500 基因面板的重叠数与每型中位方差比 r=SD_qiu/SD_mix。重叠<30 基因→退路:对角方差增强(σ_g 用本板该型该基因自身 SD,机制同构、不依赖外部数据);重叠≥30 才用 Qiu 比值。 1) 对每型(mix 中该型≥5 细胞,否则跳过)每个重叠基因:f_g=clamp(r_g^β, 0.25, 4.0),X_new=(1−f_g)·μ_type + f_g·X;非重叠基因不动。μ_type 不动、细胞双向远离型均值 → 增方差保均值。 2) β 网格 {0.2, 0.5, 1.0},默认 β=0 完全跳过。 3) 查分流程(额度 20):先跑 β=0 与父17输出 np.array_equal 逐位验证(不查分);再查 β=0 基线 1 次 + 三档各 1 次(共 4 次)。任一 β 比对照高 >1 分(超 T2 噪声)→ 在其 ±0.15 内细调 ≤3 次;三档全部 ≤对照 或 cell_state 随 β 单调下降 → 按止损提交 β=0(与父逐位一致,零损失)。 4) 单输入阶段退路:本机制只作用于最终输出表达,不依赖输入阶段数,单阶段照常执行。 5) 视图不变性:只用 manifest 相对时间与视图自带 external/ 路径,伪装/时间平移下行为一致。 |
| 风险 | ① 若参考分布的型内方差 ≤ mix 现有方差,增方差同样掉 cell_state(与平滑对称的错误方向)——判据:cell_state 随 β 单调降即止损提交 β=0;② Qiu 异技术(另一测序平台)批次效应经方差比注入、污染基因分布——诊断步打印每型中位 r,r 中位数在 0.7–1.3 外时把 β 上限收到 0.5 并优先看 expression_change 是否单独受益;③ Qiu 与 500 面板重叠太少或类型映射失败 → 对角退路,若对角也证伪则提交 β=0;④ 小类型方差估计噪声大 → ≥5 细胞门槛+比值 clamp;⑤ 预期增益可能 <1 分噪声 → 仅在 A 半提升 >1 才细调,终选护栏由 B 半多种子把关。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 738087c486。改动的文件:solution/METHOD.md +30 −27、solution/run.py +128 −2
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex d4535c2..7113976 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,50 +1,53 @@-实现 T2HI-04 型内坐标kNN表达平滑并在代理上证伪(cell_state 单调下降、expression_change 不动),按 PLAN 止损条款以关闭态(alpha=0,与父节点17逐位一致)提交。+实现 T2HI-08 型内方差增强(保均值双向外扩,外部先验缺失走对角退路);代理上 cell_state 微升但榜分增益 +0.06 远小于噪声,按 PLAN 止损以关闭态 β=0(与父17/19逐位一致)提交。 ## 方法族 / 实现 -family_id = **T2HI-04**(型内坐标 kNN 表达平滑),按 PLAN 完整实现于 `run.py::_expr_smooth`:+family_id = **T2HI-08**(外部型内方差先验的方差增强),实现于 `run.py::_var_expand` + `_load_external_prior`: -1. 在父管线(mix, align=procrustes, scale_damp=1 + 型内 kNN 坐标平滑 k=20, strength=1.5, max_frac=0.45, k_adaptive)产出的**最终坐标**上,对每个细胞类型分别建 cKDTree(`--k-expr 15`,k_eff=min(k, max(3, m−1)),m<4 的型跳过)。-2. 每个细胞 i 的 mu_i = 其 k_expr 个同型坐标近邻(去掉自身)的表达均值;`X_new[i] = (1−alpha)·X[i] + alpha·mu_i`,对全部 500 个基因。-3. 单输入阶段退路:mix 回退为父逻辑(分层抽末阶段),表达平滑仍在该单阶段输出的型内坐标上执行(不依赖两阶段信息)。-4. 关闭对照:`--expr-alpha 0`(**默认值**)完全跳过平滑步骤。+1. 父管线不变:mix(align=procrustes, scale_damp=1)+ 型内 kNN 坐标平滑(k=20, strength=1.5, max_frac=0.45, k_adaptive);T2HI-04 表达平滑保持关闭(alpha=0)。+2. 新增 `--qiu-var β`(默认 0 = 完全跳过):对每个 ≥5 细胞的类型,X_new = (1−f_g)·μ_type + f_g·X,f_g = clamp(r_g^β, 0.25, 4),clip 到 ≥0(log1p 域)。μ_type 不动、细胞沿自身偏差双向外扩 → 保均值、保协方差形状、增型内离散。+3. 外部先验自动检测(PLAN 步骤0 的免费诊断):遍历 manifest `external/`,按**数据内容**(基因重叠 ≥30 且与本板类型词汇有交集)判断可用性,不看数据集 id / 路径(视图无关)。+4. 单输入阶段退路:机制只作用于最终输出表达,不依赖输入阶段数;单阶段分支同样接入。 -## 对照结果(mechanism_off_control)+## 免费诊断结果(0 次查分) -用父节点17的原 run.py(逐行还原,字节数 12170 一致)在同一视图 seed 0 上生成输出,与本节点默认输出比较:**X 与 spatial_3D 均 `np.array_equal = True`(逐位一致)**。开启态仅 X 改变,坐标、细胞数、类型组成不变。+本视图 external/ 只挂了 `mosta_e95_v0`(MOSTA E9.5 空间数据,496/500 基因重叠,但类型词汇为 Brain/Heart/Mesenchyme 等粗标签,与本板 E8.25/E9.5 官方词汇(V-CM、EXE-Endoderm…)**零交集**);PLAN 预期的 Qiu 2024 E9.0 未挂载。→ 按 PLAN 条款走**对角退路**:r_g 用本板该型自身 SD 结构,f_g = 1+β 均匀双向外扩(`var_source` 日志确认为 `diagonal`)。 -## 机制生效证据(proxy A 半,seed 0,全部 17616 细胞被平滑,0 跳过)+## 机制生效证据(seed 0,全部 17616 细胞被改动,0 跳过) -| alpha | 型内基因方差比 after/before | mean\|ΔX\|/SD | 改变>1%的细胞比例 |+| β | 方差比 after/before | mean\|Δμ_type\| | 改变>1%细胞比例 | |---:|---:|---:|---:|-| 0.02 | 0.963 | 0.0068 | 100% |-| 0.05 | 0.909 | 0.0169 | 100% |-| 0.10 | 0.822 | 0.0339 | 100% |-| 0.15 | 0.741 | 0.0508 | 100% |-| 0.25 | 0.593 | 0.0846 | 100% |+| 0.05 | 1.071 | 0.013 | 99.99% |+| 0.15 | 1.222 | 0.040 | 100% |+| 0.30 | 1.468 | 0.079 | 100% |++方差随 β 单调上升、型均值近似不动(Δμ 仅来自 clip≥0)、上/下均值细胞反向远离 → 是离散度变换而非位置平移(与常数位移可区分:常数位移型均值移动、方差不变)。坐标、细胞数、类型组成完全不动 → local_spatial/shape_scale 仅经表达相关项微动,符合 PLAN 预期指纹。++## 对照结果(mechanism_off_control) -方差随 alpha 单调下降、幅度与 alpha 成正比 → 低通滤波确实运行。+`--qiu-var 0`(默认值)完全跳过增强步。关闭态输出与父节点19(=父17)管线输出 **X 与 spatial_3D 均 np.array_equal = True**(逐位一致,本节点直接验证);查分确认四组分与节点19 A 半记录逐一相同(65.93/63.83/61.70/52.68,board 61.033)。 -## 机制检验:证伪(vec-score,A 半,seed 0)+## 机制检验:方向弱正、幅度不足(vec-score A 半,seed 0,共 5 次查分) -| 配置 | cell_state | expression_change | local_spatial | shape_scale |-|---|---:|---:|---:|---:|-| **关闭对照 alpha=0(=父17)** | **65.93** | **63.83** | 61.70 | 52.68 |-| alpha=0.05, k=15 | 61.17 (−4.76) | 63.82 (−0.01) | 61.64 | 52.68 |-| alpha=0.10, k=15 | 58.38 (−7.55) | 63.81 (−0.02) | 61.58 | 52.68 |+| 配置 | board | cell_state | expression_change | local_spatial | shape_scale |+|---|---:|---:|---:|---:|---:|+| 关闭对照 β=0(=父) | 61.033 | 65.93 | 63.83 | 61.70 | 52.68 |+| β=0.05 对角 | 61.091 (+0.06) | 66.13 (+0.20) | 63.57 (−0.26) | 61.98 | 52.68 |+| β=0.15 对角 | 61.085 (+0.05) | 66.20 (+0.27) | 63.41 (−0.42) | 62.05 | 52.68 |+| β=0.30 对角 | 60.663 (−0.37) | 65.40 (−0.53) | 63.59 (−0.24) | 60.98 | 52.68 | -四组分变化完全符合 PLAN 预期模式(坐标不动 → local_spatial / shape_scale 只有噪声级微动;表达动 → cell_state / expression_change 动),但方向相反:**cell_state 随平滑强度单调大跌,expression_change 纹丝不动**。精确命中 PLAN 风险①的止损判据(cell_state 降 >1.5 且 expression_change 升 <1)。解释:评分器的细胞状态组看的是预测群体与参考群体的表达分布距离;mix 输出已是真实细胞,其"噪声"就是参考群体自带的单细胞异质性,对它做低通滤波只会把分布收窄、偏离参考。PLAN 步骤5的"仅高方差基因平滑"变体只会按比例缩小同一错误方向的效果,不再消耗查分额度。按 PLAN 止损条款:**两个非零 alpha 均低于关闭对照 → 提交关闭态**。+cell_state 随 β 先微升后降(峰值 ~0.15),expression_change 微降,净榜分增益 ≤ +0.06,远小于 1 分止损阈值(PLAN 步骤3:三档全部未超对照 +1 → 提交 β=0)。**未提交非零 β** 的理由:+0.05 在 A/B 半与种子噪声内无法区分,且以 expression_change 下降为代价。这与节点19合起来给出双侧证据:型内方差在本 board 已接近参考最优(收窄 −4.76/5%方差、放大 +0.27/22%方差),表达侧对角/低通类修饰均已到顶。 ## 提交内容 -默认参数即关闭态:输出与父节点17逐位一致(已验证)。查分共 5 次(额度 20)。`vec-check` 通过;seed 0/1 各自确定;`EXECUTION.json` 为 `{"gpu": false}`。+默认参数即关闭态,输出与父节点17/19逐位一致(零损失保底)。`vec-check` 通过;seed 0/1 各自确定运行;`EXECUTION.json` 为 `{"gpu": false}`。 ## 生物学知识来源 -无新增外部生物学知识;仅使用"发育中空间邻近细胞表达连续"这一通用先验(PLAN 给定),且该先验在本 board 的评分下被证伪——单细胞分辨率的异质性本身被评分器计为细胞状态相似度的一部分。+无新增外部生物学知识。外部先验使用逻辑仅依赖视图自带 `external/` 数据(本视图为 MOSTA E9.5,已合规过滤),且因类型词汇不可映射而未实际使用其数值。 ## 未验证 -- 高方差基因子集平滑(判定为同一方向、按比例更弱的效果,止损后不测)。-- k_expr ∈ {10, 20}(PLAN 规定仅当 alpha 方向正确时才调 k)。+- 外部(Qiu 类)方差比路径的实际效果:本视图无可用外部 scRNA(类型词汇零交集),`_load_external_prior` 的比值分支只在代码层验证了触发条件,未能在数据上跑通端到端;若 final 视图挂载了词汇可映射的 Qiu E9.0,该分支会自动启用(但仍受 β 默认 0 保护,不会改变提交行为)。+- β ∈ (0.15, 0.3) 细网格与 clip 前负值处理变体(止损后不再消耗额度)。 - B 半与 final 视图(关闭态与父逐位一致,迁移性等同父节点17)。diff --git a/solution/run.py b/solution/run.pyindex a073596..be31d54 100644--- a/solution/run.py+++ b/solution/run.py@@ -68,6 +68,7 @@ RESCALE_DAMP = 0.0 # uniform RMS restore FALSIFIED on proxy (moves RMS away fro ANISO = False # per-axis SD correction: also falsified (occupancy_dice drop); off ANISO_DAMP = 1.0 K_ADAPTIVE = True # k_eff = min(k, max(3, m-1)): smooth small types instead of skipping (robustness for finer type vocabularies; no-op when all types >= k+1)+QIU_VAR = 0.0 # family T2HI-08: per-type variance expansion exponent beta; 0 = off (control, bit-identical to parent node 19/17) def _knn_smooth(coords: np.ndarray, labels: np.ndarray, k: int, strength: float, max_frac: float, adaptive: bool = False):@@ -195,6 +196,121 @@ def _expr_smooth(expr: np.ndarray, coords: np.ndarray, labels: np.ndarray, k: in return Xn.astype(np.float32), ev +def _load_external_prior(view: str, manifest: dict, genes: list, out_labels: np.ndarray, min_overlap: int = 30):+ """Family T2HI-08: find a usable external scRNA variance prior in the view.++ Returns (ext_X_aligned (n_ext, G) with NaN for genes not measured,+ ext_labels, overlap_mask) or None when no mounted dataset shares+ enough genes AND cell-type vocabulary with the current output.+ View-independent: decision is based only on data content (gene overlap and+ label vocabulary overlap), never on dataset ids or paths.+ """+ import anndata as ad+ out_types = set(np.unique(out_labels).astype(str))+ best = None+ for ent in manifest.get("external") or []:+ path = ent.get("path")+ if not path:+ continue+ try:+ m = ad.read_h5ad(f"{view}/{path}")+ except Exception:+ continue+ if "celltype" not in m.obs.columns:+ continue+ ext_types = set(np.unique(m.obs["celltype"].values).astype(str))+ shared_types = out_types & ext_types+ g_idx = {g: i for i, g in enumerate(m.var_names.astype(str))}+ overlap = np.array([g in g_idx for g in genes])+ if overlap.sum() < min_overlap or not shared_types:+ continue+ X = m.X.toarray() if hasattr(m.X, "toarray") else np.asarray(m.X)+ X = np.asarray(X, dtype=np.float32)+ cols = np.full(len(genes), -1, dtype=np.int64)+ for i, g in enumerate(genes):+ j = g_idx.get(g, -1)+ if j >= 0:+ cols[i] = j+ score = (overlap.sum(), len(shared_types))+ if best is None or score > best[0]:+ best = (score, X, cols, np.asarray(m.obs["celltype"].values).astype(str))+ if best is None:+ return None+ _, X, cols, labs = best+ return X, cols, labs+++def _var_expand(expr: np.ndarray, labels: np.ndarray, beta: float, view: str, manifest: dict,+ genes: list, source: str = "auto", min_cells: int = 5):+ """Family T2HI-08: per-type variance augmentation about the type mean.++ X_new = (1 - f_g) * mu_type + f_g * X, f_g = clamp(r_g^beta, 0.25, 4.0),+ where r_g = SD_ext(g)/SD_mix(g) from an external scRNA prior when one is+ usable; otherwise the diagonal fallback f_g = 1 + beta (uniform two-sided+ expansion along each cell's own deviation, sigma_g taken from the board's+ per-type per-gene SD structure, mean-preserving, covariance-shape-preserving).+ Values are clipped at 0 (log1p domain). Returns (new_expr, evidence dict).+ """+ X = np.asarray(expr, dtype=np.float64)+ labels = np.asarray(labels).astype(str)+ n, G = X.shape+ Xn = X.copy()+ ev: dict = {"var_beta": beta, "var_min_cells": min_cells}+ ext = None+ if source in ("auto", "ext"):+ ext = _load_external_prior(view, manifest, genes, labels)+ use_ext = ext is not None+ ev["var_source"] = "external" if use_ext else "diagonal"+ var_ratio_num = 0.0+ var_ratio_den = 0.0+ dmu = []+ r_medians = []+ n_touched = 0+ n_skipped = 0+ for lab in np.unique(labels):+ idx = np.flatnonzero(labels == lab)+ m = idx.size+ if m < min_cells:+ n_skipped += m+ continue+ Xi = X[idx]+ mu = Xi.mean(axis=0)+ f = np.full(G, 1.0 + beta) # diagonal fallback factor+ if use_ext:+ Xe, cols, le = ext+ jdx = np.flatnonzero(le == lab)+ if jdx.size >= min_cells:+ sd_mix = Xi.std(axis=0)+ f = np.ones(G)+ for g in range(G):+ j = cols[g]+ if j < 0:+ continue+ sd_ext = float(Xe[jdx, j].std())+ r = sd_ext / max(sd_mix[g], 1e-6) if sd_mix[g] > 1e-6 else 1.0+ f[g] = min(max(r ** beta, 0.25), 4.0)+ r_medians.append(r)+ else:+ f = np.ones(G) # type absent from external prior: untouched+ Xnew_i = mu[None, :] + f[None, :] * (Xi - mu[None, :])+ np.maximum(Xnew_i, 0.0, out=Xnew_i)+ Xn[idx] = Xnew_i+ n_touched += m+ var_ratio_num += float(Xnew_i.var(axis=0).sum())+ var_ratio_den += float(Xi.var(axis=0).sum())+ dmu.append(float(np.abs(Xnew_i.mean(axis=0) - mu).mean()))+ ev["var_n_touched"] = int(n_touched)+ ev["var_n_skipped"] = int(n_skipped)+ ev["var_ratio_after_before"] = var_ratio_num / var_ratio_den if var_ratio_den > 0 else 1.0+ ev["var_mean_abs_dmu"] = float(np.mean(dmu)) if dmu else 0.0+ if r_medians:+ ev["var_ext_r_median"] = float(np.median(r_medians))+ d = np.abs(Xn - X).sum(axis=1)+ base = np.abs(X).sum(axis=1)+ ev["var_frac_cells_changed_gt1pct"] = float(np.mean(d > 0.01 * np.maximum(base, 1e-12))) if n else 0.0+ return Xn.astype(np.float32), ev++ def _pca_normalize(coords: np.ndarray) -> np.ndarray: """Deterministic PCA canonicalisation: centroid -> PCA axes -> det=+1 -> third-moment sign.""" C = np.asarray(coords, dtype=np.float64)@@ -275,6 +391,8 @@ def main() -> None: parser.add_argument("--k-adaptive", choices=("on", "off"), default=("on" if K_ADAPTIVE else "off")) parser.add_argument("--expr-alpha", type=float, default=EXPR_ALPHA) parser.add_argument("--k-expr", type=int, default=K_EXPR)+ parser.add_argument("--qiu-var", type=float, default=QIU_VAR)+ parser.add_argument("--var-source", choices=("auto", "diag", "ext"), default="auto") args = parser.parse_args() manifest = load_manifest(args.data)@@ -290,6 +408,9 @@ def main() -> None: Xe = stage.X[rows].toarray() if args.expr_alpha != 0.0: Xe, _ = _expr_smooth(Xe, coords, np.asarray(stage.labels)[rows], args.k_expr, args.expr_alpha)+ if args.qiu_var != 0.0:+ Xe, _ = _var_expand(Xe, np.asarray(stage.labels)[rows], args.qiu_var, args.data, manifest,+ genes, source=args.var_source) write_t2(args.out, Xe, coords, genes, seed=args.seed) return stage_a = read_stage(args.data, a, genes)@@ -298,7 +419,7 @@ def main() -> None: expr, coords, info = interpolate(stage_a, stage_b, t, params) ev = {}- need_labels = args.strength != 0.0 or args.expr_alpha != 0.0+ need_labels = args.strength != 0.0 or args.expr_alpha != 0.0 or args.qiu_var != 0.0 labels = None if need_labels: n = int(info["n"])@@ -327,11 +448,16 @@ def main() -> None: expr, ev3 = _expr_smooth(expr, coords, labels, args.k_expr, args.expr_alpha) ev.update(ev3) + if args.qiu_var != 0.0:+ expr, ev4 = _var_expand(expr, labels, args.qiu_var, args.data, manifest, genes, source=args.var_source)+ ev.update(ev4)+ keep = {k: info.get(k) for k in ("t", "n", "rms_a", "rms_b", "out_rms", "n_shared_types", "z_dot", "z_flipped", "align", "n_from_a", "n_from_b")} print(json.dumps({"bracket": [a["stage"], b["stage"]], **keep, "strength": args.strength, "k": args.k, "pca_norm": args.pca_norm, "rescale_damp": args.rescale_damp, "aniso": args.aniso, "aniso_damp": args.aniso_damp, "k_adaptive": args.k_adaptive,- "expr_alpha": args.expr_alpha, "k_expr": args.k_expr, **ev}, default=float), file=sys.stderr)+ "expr_alpha": args.expr_alpha, "k_expr": args.k_expr,+ "qiu_var": args.qiu_var, "var_source": args.var_source, **ev}, 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 |
| k027 | Joint expression-geometry generation with relative geometry | notes/competition/03_solution_landscape.md |
| k024 | World-model evaluation dimensions for state-transition predictors | notes/competition/07_biomedical_world_models.md |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父19管线上新增 T2HI-08 型内方差增强(_var_expand:X_new=(1−f)μ_type+f·X,保均值双向外扩)及视图无关的外部先验检测 _load_external_prior;因本视图 external/ 只有类型词汇零交集的 MOSTA E9.5(Qiu 未挂载),走对角退路 f=1+β。A 半测得 β=0.05/0.15/0.30 榜分增益 +0.06/+0.05/−0.37 全部 <1 分噪声,按 PLAN 止损以 β=0 关闭态提交,输出与父17/19 逐位一致。 |
|---|---|
| 各组分数的变化 | cell_state:噪声内(+0.00,66.70→66.70;关闭态提交) expression_change:噪声内(+0.00,63.90→63.90;关闭态提交) local_spatial:噪声内(+0.00,62.34→62.34) shape_scale:噪声内(+0.00,52.70→52.70) |
| family_id | T2HI-08 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 4 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 4 次:read 2、bash 1、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 13,761 · 输出 1,187 · 思考 507 |
| 任务(第一行) | 分析节点 n20 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/analyst.jsonl 12 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 18 |
| 工具调用 | 共 22 次:bash 12、edit 8、read 1、write 1 |
| 用时 | 8 分 |
| token 数 | 输入 49,245 · 输出 7,406 · 思考 8,158 |
| 任务(第一行) | 按计划修改程序:T2HI-08 Qiu E9.0 型内方差增强(保均值、双向外扩,对照 β=0) |
| 最后的回答(摘录) | **完成。** 做了什么:在父19管线上实现 PLAN 的 T2HI-08 型内方差增强(`_var_expand`:X_new=(1−f)μ_type+f·X,保均值双向外扩;含视图无关的外部先验自动检测 `_load_external_prior` 与单输入退路)。免费诊断发现本视图 external/ 只有 MOSTA E9.5(类型词汇与本板零交集,Qiu 未挂载)→ 按 PLAN 走对角退路 f=1+β。 查分(5/20 次,A 半):对照 β=0 = 61.033(与父19记录逐位吻合);β=0.05→61.091、β=0.15→61.085(cell_state +0.20/+0.27,expression_change −0.26/−0.42)、β=0.30→60.663。全部增益 <1 分噪声阈值,按 PLAN 止损条款提交关闭态 β=0,输出与父17/19 逐位一致(np.array_equal 验证),vec-check 通过,seed 0/1 确定。 下一步最值得试:表达侧对角/低通修饰已双侧封顶(收窄 −4.76、放大 +0.27)——型内方差已在参考最优附近;建议转向 cell_state 的非方差维度(如按参考可推断的型内亚结构/基因共变重塑),或接受表达侧平台、把剩余空间放在 mix 抽样策略(t、分层比例的组成侧微调)上。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/engineer.jsonl 135 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 2 分 |
| token 数 | 输入 11,380 · 输出 1,465 · 思考 4,843 |
| 任务(第一行) | 为节点 n20(改进,父节点 n19)写改进计划 PLAN.json |
| 最后的回答(摘录) | 2024 早期心脏 scRNA 补类型内方差)正为此设计:Qiu E9.0 在允许阶段(不在 T2 heart 禁窗 (8.25,8.75)/(9.5,13.5] 内)、心脏谱系、可作型内方差的独立先验。",
"approach": "基线=节点17管线(mix + procrustes + kNN 坐标平滑 k=20, strength=1.5, max_frac=0.45, k_adaptive;保留节点19 的表达平滑代码但 alpha=0 关闭)。新增 --qiu-var 步骤,在最终输出表达上执行:\n0) 免费诊断(0 次查分):从视图 external/ 读 Qiu 2024 E9.0,标签映射到本板类型词汇,统计与本板 500 基因面板的重叠数与每型中位方差比 r=SD_qiu/SD_mix。重叠<30 基因→退路:对角方差增强(σ_g 用本板该型该基因自身 SD,机制同构、不依赖外部数据);重叠≥30 才用 Qiu 比值。\n1) 对每型(mix 中该型≥5 细胞,否则跳过)每个重叠基因:f_g=clamp(r_g^β, 0.25, 4.0),X_new=(1−f_g)·μ_type + f_g·X;非重叠基因不动。μ_type 不动、细胞双向远离型均值 → 增方差保均值。\n2) β 网格 {0.2, 0.5, 1.0},默认 β=0 完全跳过。\n3) 查分流程(额度 20):先跑 β=0 与父17输出 np.array_equal 逐位验证(不查分);再查 β=0 基线 1 次 + 三档各 1 次(共 4 次)。任一 β 比对照高 >1 分(超 T2 噪声)→ 在其 ±0.15 内细调 ≤3 次;三档全部 ≤对照 或 cell_state 随 β 单调下降 → 按止损提交 β=0(与父逐位一致,零损失)。\n4) 单输入阶段退路:本机制只作用于最终输出表达,不依赖输入阶段数,单阶段照常执行。\n5) 视图不变性:只用 manifest 相对时间与视图自带 external/ 路径,伪装/时间平移下行为一致。",
"expected_groups": ["cell_state", "expression_change"],
"risks": "① 若参考分布的型内方差 ≤ mix 现有方差,增方差同样掉 cell_state(与平滑对称的错误方向)——判据:cell_state 随 β 单调降即止损提交 β=0;② Qiu 异技术(另一测序平台)批次效应经方差比注入、污染基因分布——诊断步打印每型中位 r,r 中位数在 0.7–1.3 外时把 β 上限收到 0.5 并优先看 expression_change 是否单独受益;③ Qiu 与 500 面板重叠太少或类型映射失败 → 对角退路,若对角也证伪则提交 β=0;④ 小类型方差估计噪声大 → ≥5 细胞门槛+比值 clamp;⑤ 预期增益可能 <1 分噪声 → 仅在 A 半提升 >1 才细调,终选护栏由 B 半多种子把关。",
"family_id": "T2HI-08",
"mechanism": "以外部 Qiu 2024 E9.0 心脏 scRNA 的型内基因方差为先验,把 mix 输出细胞的表达沿型均值双向外扩(f=r^β),保型均值、增型内离散,修补有限分层抽样造成的型内多样性不足。",
"vs_constant_shift": "常数位移对某型所有细胞加同一向量:型均值移动、方差不变;本机制型均值不动(验证 |Δμ|≈0)、方差增大、位移方向取决于细胞相对型均值的位置(上/下均值者反向),是分布形状(离散度)变换而非位置平移,也非按全局比例重加权组成。",
"mechanism_evidence": "免费诊断输出:每型每基因方差比 after/before 应随 β 单调上升、趋近 r^{2β};|Δμ_type|≈0(保均值);>1% 细胞被改动比例及其相对型均值的双向外扩幅度(上均值与下均值细胞各自远离);四组分变化模式(cell_state/expression_change 动、local_spatial/shape_scale 噪声内,因坐标不动)。该指纹与常数位移(均值动)、平滑(方差降)均可区分。",
"mechanism_off_control": "--qiu-var 0(默认)完全跳过增强步;先与父节点17输出做 X、spatial_3D、labels 的 np.array_equal 逐位一致验证再查分。预期:关闭态榜分与四组分同父(61.41 / 66.70 / 63.90 / 62.34 / 52.70);开启态仅 X 改变,坐标与细胞数/类型组成不变。",
"sources": []}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/researcher.jsonl 6 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 8 |
| 工具调用 | 共 7 次:bash 5、read 1、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 18,693 · 输出 1,143 · 思考 1,812 |
| 任务(第一行) | 审查节点 n20 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/reviewer.jsonl 95 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-heart-interp-g24-D/nodes/20/reviewer.stderr |