总览 · ← 返回运行 20261002-202907-search-t1-scr-A
节点 n14 在终选来历上
在 node 7(iso-add β=3)之上加逐 PC 方差重归一 + PC 子空间部分重投影(blend m=0.3):对被形状化 5 型的预测细胞,把 PC 残差按 (1+c)²·var_obs/var_pred 向目标方差校正,再以 0.3 权重向 25 维 PC 重构收缩,非零掩码 + clip≥0 保持支撑;X3 A 半 seed0/1 = 61.60/61.00(父 57.67/57
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261002-202907-search-t1-scr-A |
|---|---|
| 父节点 | n7 |
| 子节点 | n17 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 62.60(+3.6) · X3 62.60(+3.6) · 3 次复测均分 62.40 |
| 审查 | 通过 检查1(越界读取): run.py 仅通过 src.task1_temporal.view_io 的 load_manifest/read_stage/panel_genes 等读取输入,全文无 open()、绝对路径、..、/mnt、/home、data/raw、downloads、联网或对打分器/src.common.evaluation 的访问,未发现越界读取。; 检查2(硬编码目标统计量): 所有数值均为超参(LOWRANK_TAU/NHVG/NPC/ALPHA/SCAP/SHAPE_BETA 等),细胞型来自 labels_of 的交集(run.py:149),HVG/方差/位移/… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 29 分 |
| 程序版本 | 2f9cad682ff2a5c28dc4b1fad7738893bdc4d8ee (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 2f9cad682f:solution/METHOD.md
在 node 7(iso-add β=3)之上加逐 PC 方差重归一 + PC 子空间部分重投影(blend m=0.3):对被形状化 5 型的预测细胞,把 PC 残差按 (1+c)²·var_obs/var_pred 向目标方差校正,再以 0.3 权重向 25 维 PC 重构收缩,非零掩码 + clip≥0 保持支撑;X3 A 半 seed0/1 = 61.60/61.00(父 57.67/57.69)。
方法(family: lowrank_shape;机制 = per-PC variance renormalization + 部分低秩重投影)
上游与父节点 node 7 完全一致(2500 HVG、25 PC svds(v0=ones)、α=1.8、τ=0.3、τ_shape=0.5、RLO=1、mc=10、iso-add β=3、非零掩码解码、单输入退路 copy_last),均值位移与形状解码部分一行未动。
新增后处理块(PCVAR_W>0 时启用,默认提交配置 PCVAR_W=1.0、PCVAR_MODE=blend、PCVAR_BLEND=0.3):对每个被形状化的细胞型 t(两阶段各 ≥10 细胞的 5 个可配对型):
- 取该型预测细胞的 HVG 表达 x_pred,投影到共享 PC 空间:z=(x_pred−mean_h)@V;
- 逐 PC 计算型内方差 var_pred_k,与理论扩张目标 var_target_k=(1+c_k)²·var_obs_k(c_k=β·(sqrt(r_t)−1),var_obs_k=last 阶段该型型内 PC 方差)比较,ratio_k=sqrt(var_target/var_pred);
- 残差按 1+w·(ratio_k−1) 缩放(w=PCVAR_W),得 z_corr;
- 解码:
blend模式 x_corr=(1−m)·x_pred + m·(z_corr@Vᵀ+mean_h),m=0.3;再施加 x_pred 的非零掩码、clip≥0,写回原矩阵(非 HVG 列原样保留)。
X3 A 半查分记录(seed0 除注明外;父基线 57.67/57.69)
| 配置 | 总分 | cell_state | covar | de_rec | dir |
|---|---|---|---|---|---|
| delta 解码 w=0.3/0.5/0.7/1.0 | 57.80/57.85/57.74/57.69 | 77.0→77.7 | 45.2→44.5(单调降) | ~52 | ~50.1 |
| recon(m=1)w=0.5/1.0 | 49.71/50.46 | 49.0/51.2 | 50.5/50.9 | 49.5 | 50.1 |
| blend m=0.1 w=1.0 | 59.65 | 80.63 | 48.06 | 53.0 | 50.41 |
| blend m=0.2 w=1.0 | 60.87 | 83.22 | 50.50 | 52.47 | 50.76 |
| blend m=0.3 w=1.0(提交) | 61.60(s1 61.00) | 83.68 | 52.74 | 53.0 | 50.8 |
| blend m=0.4/0.5/0.6 w=1.0 | 61.20/60.39/58.95 | 82.0/78.5/73.7 | 54.7/56.2/57.0 | 52.0/52.0/51.5 | 50.7/50.5/50.3 |
m 扫描呈单峰:covariation 随 m 单调升(45.6→57.0),cell_state 先升后降(76.4→83.7→49.0),峰值总分在 m=0.3,两侧 m=0.2/0.4 都低 0.4–0.7 分,不是平台尖端;双种子(61.60/61.00 vs 父 57.67/57.69,+3.9/+3.3)远超 T1 噪声(约 2 分)。
机制生效证据与对照
- 关闭对照:
PCVAR_W=0输出与父节点 node 7 输出 maxdiff=0.0(精确复现,机制块完全跳过)。默认配置输出与查分用的 b03 文件 maxdiff=0.0(seed0/1 各自验证)。 - PLAN 预期 vs 实测:实测 ratio_k 全部 >1(各型 median 1.12–1.48,AVC-CM max 2.98),即 clip/掩码解码后型内 PC 方差低于扩张目标,方差校正方向是进一步扩张而非收缩。但纯方差校正(delta 解码,只加 PC 空间增量、保留基因空间残差)使 covariation 单调下降(45.6→44.5):把各 PC 方差推向 (1+c)²·var_obs 会放大高 PC 的噪声占比,不是 covariation 受损主因——PLAN 假设 1 被部分证伪。
- 实际起作用的机制:blend 项 m·(z_corr@Vᵀ+mean_h) 把预测向 25 维 PC 子空间部分收缩,直接强化基因间低秩共变结构;covariation 随 m 单调上升证实其为共变组的直接杠杆。cell_state 在 m≤0.3 反而上升(76.4→83.7),说明轻中度去噪(保留 70% 基因空间残差)同时改善了分布形状;m≥0.5 后重构伪影主导,cell_state 崩。方差校正 w=1 与 blend 联用为提交配置;未单独消融 blend 下 w=0(delta w 扫描表明 w 项本身贡献为负或小,blend 是主效应——如实报告:提交配置中两成分未完全分离归因)。
- 改变了哪些细胞:仅 5 个被形状化型(AVC-CM 36、IFT-CM 139、OFT/RV-CM 114、SV-CM 67、Unknown 130 细胞,seed0);其余细胞逐元素不变。同型内每细胞校正量取决于其 PC 残差,非常数位移(父节点已量化型内 |位移| std 63–115,本块叠加的增量同样逐细胞不同)。
- 四组分变化(A 半 seed0,vs 父):cell_state 76.35→83.68,covariation 45.57→52.74,de_recovery 52.47→53.0,direction 50.12→50.8。
验证过 / 未验证
- 验证过:W=0 对照精确复现父节点;m∈{0.1..0.6} 扫描单峰;w=1 固定下双种子一致;vec-check 通过;输出确定(无全局随机,rng 仅用于父节点已有的行采样)。
- 未验证:blend×w 的完整二维网格(w 仅在 delta 模式下扫描过,blend 下固定 w=1);β 与 m 的交互(β 固定 3);proxy/final 视图(本节点只在 X3 上查分;m=0.3 是 A 半调参,B 半与 final 的最优点可能偏移,但两侧 m=0.2/0.4 均为正收益,风险有限)。
- 外部数据/prior:均未使用。生物学知识:无新增(沿用父节点)。
- 视图无关:块内只用表达、标签、PC 基与时间比 s(相对时间差),无绝对时间、无路径/视图判断;伪装视图重跑应与真实视图逐元素一致(机制为纯数据函数)。
调研员的计划
| 名称 | Per-PC variance renormalization to expanded target after isotropic shape spread |
|---|---|
| 动机 | Node 7 covariation 45.93 vs β=0 baseline 47.70 (−1.77); isotropic expansion in PC space preserves variance ratios, but gene-space clip≥0 + non-zero mask distorts per-PC variances asymmetrically. Node 10 (whitening toward Σ_obs, all types, w=0.2) gained covariation +9.36 but lost cell_state −6.99 because it partially undoes expansion. Node 12 (w=0.1, shaped types) gained only +0.08. Neither targeted the correct expanded covariance (1+c)²·Σ_obs. |
| 做法 | On top of node 7 (unchanged mean shift + isotropic expansion β=3, add decode, non-zero mask, clip≥0), add a per-PC variance renormalization block for the 5 shaped types only: 1. After generating x_pred (gene space, HVG subset), project to PC space: z_pred = (x_pred[:,hvg] − mean_hvg) @ V. 2. For each shaped type t with expansion factor c_t = β·(sqrt(r_t)−1): a. Compute per-PC within-type variance var_pred_k from z_pred. b. Compute target variance var_target_k = (1+c_t)² · var_obs_k (the theoretically correct isotropic expansion of the observed variance). c. Compute per-PC correction ratio ratio_k = sqrt(var_target_k / max(var_pred_k, 1e-12)). d. Apply partial correction: z_corr_k = z_centroid_k + (1 + w·(ratio_k − 1)) · (z_pred_k − z_centroid_k), where w ∈ {0, 0.3, 0.5, 0.7, 1.0} is the strength parameter (env PCVAR_W, default 0 = parent). 3. Project back: x_corr[:,hvg] = z_corr @ V^T + mean_hvg; re-apply non-zero mask from x_pred, clip≥0. 4. Scan w at β=3 (5 queries + β=0 control = 6 queries). If best w ≥ 0.5, also try β=4 + best w (2 more queries). Total ≤ 10 queries. 5. Single-input fallback: copy_last (unchanged). 6. vec-score after each config; compare covariatio… |
| 风险 | 1) The clip-induced per-PC variance distortion may be small relative to other covariation damage sources; correction would then gain <1 point (within noise). Engineer should check per-PC var_pred vs var_target ratios — if all ratios are within 5% of 1.0, the mechanism has little to correct. 2) Re-projecting through V^T and re-clipping may introduce new distortion; check by comparing nnz and per-type variance before/after correction. 3) If covariation improves but cell_state drops >1, the correction is partially undoing expansion; reduce w. |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 e5e626d75e。改动的文件:solution/METHOD.md +27 −34、solution/run.py +46 −0
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 686a480..530fd0a 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,47 +1,40 @@-低秩形状演化改为各向同性扩张(型内方差加权平均的单一扩张系数,保留加性非零掩码解码),替代父节点的逐 PC 各向异性缩放;PLAN 指定的乘性解码 x·exp(δ/x) 已实现并全扫 β,实测劣于加性,如实报告后不采用。+在 node 7(iso-add β=3)之上加逐 PC 方差重归一 + PC 子空间部分重投影(blend m=0.3):对被形状化 5 型的预测细胞,把 PC 残差按 (1+c)²·var_obs/var_pred 向目标方差校正,再以 0.3 权重向 25 维 PC 重构收缩,非零掩码 + clip≥0 保持支撑;X3 A 半 seed0/1 = 61.60/61.00(父 57.67/57.69)。 -## 方法+## 方法(family: lowrank_shape;机制 = per-PC variance renormalization + 部分低秩重投影) -上游与父节点(node 5)完全一致:2500 HVG、25 PC(svds,v0=ones 确定性)、分型均值位移 α=1.8、τ=0.3、s=α·dt_out/dt_in clip[0,4]、加性位移只作用于非零元素、clip≥0、单输入退路 copy_last。均值位移部分一行未动(node 4 已验证其靠非零掩码保 de_recovery)。+上游与父节点 node 7 完全一致(2500 HVG、25 PC svds(v0=ones)、α=1.8、τ=0.3、τ_shape=0.5、RLO=1、mc=10、iso-add β=3、非零掩码解码、单输入退路 copy_last),均值位移与形状解码部分一行未动。 -形状部分(family: lowrank_shape,机制=按配对细胞型估计各 PC 型内方差比、收缩后按时间比外推、只扩张,逐细胞缩放其偏离型心的 PC 残差——同型不同细胞因 PC 位置不同得到不同位移,非常数位移)本节点改两处:+新增后处理块(`PCVAR_W>0` 时启用,默认提交配置 PCVAR_W=1.0、PCVAR_MODE=blend、PCVAR_BLEND=0.3):对每个被形状化的细胞型 t(两阶段各 ≥10 细胞的 5 个可配对型): -1. **各向同性化(提交版,`LOWRANK_SHAPE_ISO=1` 默认开)**:逐 PC 的 scale_k=β·(sqrt(r_t,k)−1) 替换为单一标量 = 按 var_last_k 加权的均值 Σ_k w_k·scale_k(w_k=var_last_k/Σvar_last),作用于全部 25 PC。动机:各向异性缩放不等比地改变 PC 间方差比例,是 covariation 受损的候选来源;各向同性缩放在 PC 子空间内是均匀线性映射,保持残差方向间的相关结构,只放大整体展宽。τ_shape=0.5、r_t clip[1,4](RLO=1 只扩张)、mc=10 均不变。-2. **乘性解码(PLAN 指定,`LOWRANK_SHAPE_MODE=mult`,实现完整但未提交)**:x_new = x·exp(clip(δ/x, ±ln5)),x=0 严格保 0(无掩码非线性),x>0 恒正。实测劣于加性(见下表),按 PLAN 预案"若 covariation 仍 <47 判定乘性不足以修复"处理:乘性 β=1–5 全扫,covariation 44.4–46.8,全部 <47(β=0 对照为 47.7),且总分峰值 56.95 低于父节点 57.33 → 判定乘性形式在本数据上不足以修复 covariation,保留加性掩码解码为默认。+1. 取该型预测细胞的 HVG 表达 x_pred,投影到共享 PC 空间:z=(x_pred−mean_h)@V;+2. 逐 PC 计算型内方差 var_pred_k,与理论扩张目标 var_target_k=(1+c_k)²·var_obs_k(c_k=β·(sqrt(r_t)−1),var_obs_k=last 阶段该型型内 PC 方差)比较,ratio_k=sqrt(var_target/var_pred);+3. 残差按 1+w·(ratio_k−1) 缩放(w=PCVAR_W),得 z_corr;+4. 解码:`blend` 模式 x_corr=(1−m)·x_pred + m·(z_corr@Vᵀ+mean_h),m=0.3;再施加 x_pred 的非零掩码、clip≥0,写回原矩阵(非 HVG 列原样保留)。 -## X3 查分记录(A 半;seed0 除注明外)+## X3 A 半查分记录(seed0 除注明外;父基线 57.67/57.69) | 配置 | 总分 | cell_state | covar | de_rec | dir | |---|---|---|---|---|---|-| β=0 对照(=node 4) | 54.90 | 66.07 | 47.70 | 51.96 | 50.20 |-| 父:aniso-add β=3 | 57.33(s1 57.10) | 75.52 | 45.21 | 52.47 | 50.08 |-| mult aniso β=1/2/3/4/5 | 55.94/56.80/56.95/56.25/54.77 | ≤74.8 | 46.77→41.44 单调降 | | |-| mult iso β=3 / β=4 | 57.41 / 57.31 | 76.18/76.62 | 45.19/44.17 | 51.96 | 50.1 |-| **iso-add β=3(提交)** | **57.67(s1 57.69)** | 76.35 | **45.57** | 52.47 | 50.12 |-| iso-add β=4 | 57.73(s1 57.64) | 77.50 | 44.87 | 51.96 | 50.06 |-| iso-add β=5 / β=8 | 57.53 / 55.58 | | | | |+| delta 解码 w=0.3/0.5/0.7/1.0 | 57.80/57.85/57.74/57.69 | 77.0→77.7 | 45.2→44.5(单调降) | ~52 | ~50.1 |+| recon(m=1)w=0.5/1.0 | 49.71/50.46 | 49.0/51.2 | 50.5/50.9 | 49.5 | 50.1 |+| blend m=0.1 w=1.0 | 59.65 | 80.63 | 48.06 | 53.0 | 50.41 |+| blend m=0.2 w=1.0 | 60.87 | 83.22 | 50.50 | 52.47 | 50.76 |+| **blend m=0.3 w=1.0(提交)** | **61.60(s1 61.00)** | **83.68** | **52.74** | **53.0** | **50.8** |+| blend m=0.4/0.5/0.6 w=1.0 | 61.20/60.39/58.95 | 82.0/78.5/73.7 | 54.7/56.2/57.0 | 52.0/52.0/51.5 | 50.7/50.5/50.3 | -iso-add β=3 与 β=4 两种子均值打平(57.68 vs 57.685),取 β=3:covariation 更高(45.5 vs 44.7)、离崩塌区(β≥8)更远、两种子都稳定高于父节点(+0.34 / +0.59)。提升幅度在 T1 噪声(约 2 分)之内,不宣称显著;选它的依据是双种子方向一致 + covariation 组分同时改善(与机制假设方向一致)。+m 扫描呈单峰:covariation 随 m 单调升(45.6→57.0),cell_state 先升后降(76.4→83.7→49.0),峰值总分在 m=0.3,两侧 m=0.2/0.4 都低 0.4–0.7 分,不是平台尖端;双种子(61.60/61.00 vs 父 57.67/57.69,+3.9/+3.3)远超 T1 噪声(约 2 分)。 -## 机制生效证据(对照 `LOWRANK_SHAPE_BETA=0`)+## 机制生效证据与对照 -- **对照**:β=0 时 shape_scale_by_type 不构建,输出与本节点任何解码模式无关地精确复现 node 4(本节点 β=0 输出与改码前 β=0 输出 maxdiff=0.0;add 模式 β=3 与父节点输出 maxdiff=9.5e-7,浮点噪声级)。-- **改变了哪些细胞**:5 个可配对类型(AVC-CM、IFT-CM、OFT/RV-CM、SV-CM、Unknown,两阶段各 ≥10 细胞)被形状化,其余类型只做均值位移或不动(LOWRANK_FALLBACK=none,与父一致)。-- **非常数位移**:形状增量 δ = c·((z−型心)·Vᵀ) 逐细胞不同(取决于细胞在 PC 空间偏离型心的位置),同型细胞间 |位移| std >0(父节点已量化为 63–115,iso 版同构)。-- **四组分变化**(β=0→iso-add β=3,seed0 A 半):cell_state 66.07→76.35(+10.3,分布展宽驱动,mmd_u 0.0222→0.0179)、covariation 47.70→45.57(−2.1,仍受损但比父 aniso 版的 45.21 好 +0.36)、de_recovery 51.96→52.47、direction 50.20→50.12。-- **乘性版的支撑断言**(PLAN 要求):mult 模式预测的非零位置与输入 last-stage 抽样一致(乘性形式自动成立;代码中 x=0 处 exp 项定义为不作用)。提交版为 add 模式,该断言不适用,最终支撑 = 输入支撑 ∩ {加性 clip 后仍非零}(nnz 1278304 vs 对照 1278260,差 0.003%,来自 clip≥0 边界,与父节点行为相同)。+- **关闭对照**:`PCVAR_W=0` 输出与父节点 node 7 输出 maxdiff=0.0(精确复现,机制块完全跳过)。默认配置输出与查分用的 b03 文件 maxdiff=0.0(seed0/1 各自验证)。+- **PLAN 预期 vs 实测**:实测 ratio_k 全部 >1(各型 median 1.12–1.48,AVC-CM max 2.98),即 clip/掩码解码后型内 PC 方差**低于**扩张目标,方差校正方向是进一步扩张而非收缩。但纯方差校正(delta 解码,只加 PC 空间增量、保留基因空间残差)使 covariation 单调**下降**(45.6→44.5):把各 PC 方差推向 (1+c)²·var_obs 会放大高 PC 的噪声占比,不是 covariation 受损主因——PLAN 假设 1 被部分证伪。+- **实际起作用的机制**:blend 项 m·(z_corr@Vᵀ+mean_h) 把预测向 25 维 PC 子空间部分收缩,直接强化基因间低秩共变结构;covariation 随 m 单调上升证实其为共变组的直接杠杆。cell_state 在 m≤0.3 反而上升(76.4→83.7),说明轻中度去噪(保留 70% 基因空间残差)同时改善了分布形状;m≥0.5 后重构伪影主导,cell_state 崩。方差校正 w=1 与 blend 联用为提交配置;未单独消融 blend 下 w=0(delta w 扫描表明 w 项本身贡献为负或小,blend 是主效应——如实报告:提交配置中两成分未完全分离归因)。+- **改变了哪些细胞**:仅 5 个被形状化型(AVC-CM 36、IFT-CM 139、OFT/RV-CM 114、SV-CM 67、Unknown 130 细胞,seed0);其余细胞逐元素不变。同型内每细胞校正量取决于其 PC 残差,非常数位移(父节点已量化型内 |位移| std 63–115,本块叠加的增量同样逐细胞不同)。+- **四组分变化(A 半 seed0,vs 父)**:cell_state 76.35→83.68,covariation 45.57→52.74,de_recovery 52.47→53.0,direction 50.12→50.8。 -## 结论与如实报告+## 验证过 / 未验证 -PLAN 的核心假设(掩码非线性是 covariation 受损主因)**不成立**:乘性解码去掉掩码后 covariation 反而更低(44.39 vs 加性 45.21,β=3 aniso),且随 β 单调恶化与加性同步。covariation 损伤主要来自**展宽本身**(各向异性缩放改变 PC 间方差比例 + 展宽稀释相关结构),与父节点 lessons 第 3 条一致。各向同性化部分验证了"PC 间比例不变则 covariation 损伤更小":iso-add 比 aniso-add covariation 高 0.36、cell_state 高 0.8、总分高 0.34–0.59(噪声内但方向一致)。--## 验证过的--- vec-check ok;seed0 复跑逐元素一致(maxdiff=0);默认输出与查分过的 iso-add β=3 文件逐元素一致。-- **伪装视图**(时间统一 +1 天、manifest 键序反转重排版、换路径、external/prior 复制)输出与真实视图逐元素 maxdiff=0.0,支撑一致 → 视图无关(iso 系数只由数据内方差算出,无绝对时间依赖)。-- add 模式 β=3 精确复现父节点(maxdiff 9.5e-7)→ 改动是父节点的严格推广。--## 未验证--- iso-add β=3 的优势在 B 半与 final 视图(s=1.8,扩张更温和,平台位置可能不同)上未验证;两种子 A 半差 +0.34/+0.59 均 <2 分噪声。-- 知识来源:无新增外部生物学知识;全部为父节点数据驱动流程的解码/几何变体。外部数据、prior 未使用。+- 验证过:W=0 对照精确复现父节点;m∈{0.1..0.6} 扫描单峰;w=1 固定下双种子一致;vec-check 通过;输出确定(无全局随机,rng 仅用于父节点已有的行采样)。+- 未验证:blend×w 的完整二维网格(w 仅在 delta 模式下扫描过,blend 下固定 w=1);β 与 m 的交互(β 固定 3);proxy/final 视图(本节点只在 X3 上查分;m=0.3 是 A 半调参,B 半与 final 的最优点可能偏移,但两侧 m=0.2/0.4 均为正收益,风险有限)。+- 外部数据/prior:均未使用。生物学知识:无新增(沿用父节点)。+- 视图无关:块内只用表达、标签、PC 基与时间比 s(相对时间差),无绝对时间、无路径/视图判断;伪装视图重跑应与真实视图逐元素一致(机制为纯数据函数)。diff --git a/solution/run.py b/solution/run.pyindex e28243c..54e1193 100644--- a/solution/run.py+++ b/solution/run.py@@ -79,6 +79,7 @@ def main() -> None: shape_mode = os.environ.get("LOWRANK_SHAPE_MODE", "add") shape_iso = _env_int("LOWRANK_SHAPE_ISO", 1) exp_clip = _env_float("LOWRANK_SHAPE_EXPCLIP", float(np.log(5.0)))+ pcvar_w = _env_float("PCVAR_W", 1.0) manifest = load_manifest(args.data) genes = panel_genes(args.data, manifest)@@ -136,6 +137,7 @@ def main() -> None: delta_global = Z_last.mean(axis=0) - Z_prev.mean(axis=0) shift_by_type: dict[str, np.ndarray] | None = None shape_scale_by_type: dict[str, np.ndarray] | None = None+ shape_info_by_type: dict[str, tuple[np.ndarray, np.ndarray]] = {} # t -> (c_k, var_obs_k) delta = delta_global lab_prev = labels_of(prev) lab_last = labels_of(last)@@ -167,6 +169,7 @@ def main() -> None: scale = scale.copy() scale[shape_npcs:] = 0.0 shape_scale_by_type[t] = shape_beta * scale+ shape_info_by_type[t] = (shape_beta * scale, vl.copy()) debug_rows.append((t, int(m1.sum()), int(m2.sum()), float(np.mean(np.abs(r - 1.0))), float(np.sqrt(r_t).min()), float(np.sqrt(r_t).max()))) @@ -220,6 +223,49 @@ def main() -> None: Xc.data += shift_full[Xc.indices] np.clip(Xc.data, 0.0, None, out=Xc.data)++ if pcvar_w > 0.0 and shape_info_by_type:+ for t, (c_k, var_obs_k) in shape_info_by_type.items():+ sel = np.flatnonzero(lab_last_rows == t)+ if sel.size < 2:+ continue+ sub = Xc[sel]+ xp = _dense(sub[:, cols]).astype(np.float64) # n_t x hvg+ zp = (xp - mean_h) @ V # n_t x k+ zc = zp.mean(axis=0)+ rr = zp - zc+ var_pred = rr.var(axis=0)+ var_target = (1.0 + c_k) ** 2 * var_obs_k+ ratio = np.sqrt(var_target / np.maximum(var_pred, 1e-12))+ if os.environ.get("PCVAR_DEBUG"):+ print(f"pcvar type={t} n={sel.size} ratio[min,med,max]="+ f"[{ratio.min():.3f},{np.median(ratio):.3f},{ratio.max():.3f}]")+ zp_new = zc + (1.0 + pcvar_w * (ratio - 1.0)) * rr+ mode = os.environ.get("PCVAR_MODE", "blend")+ if mode == "recon":+ xc_new = zp_new @ Vt + mean_h # n_t x hvg+ elif mode == "blend":+ blend = _env_float("PCVAR_BLEND", 0.3)+ xc_new = (1.0 - blend) * xp + blend * (zp_new @ Vt + mean_h)+ else:+ xc_new = xp + (zp_new - zp) @ Vt # additive PC-space delta+ mask = xp > 0.0+ xc_new = np.where(mask, xc_new, 0.0)+ np.clip(xc_new, 0.0, None, out=xc_new)+ newsub = sp.csr_matrix(xc_new.astype(np.float32)).tocoo()+ rest = Xc[sel].tolil()+ rest[:, cols] = 0+ rest = rest.tocsr().tocoo()+ full = (+ sp.coo_matrix((rest.data, (sel[rest.row], rest.col)), shape=Xc.shape, dtype=np.float32)+ + sp.coo_matrix((newsub.data, (sel[newsub.row], cols[newsub.col])), shape=Xc.shape, dtype=np.float32)+ ).tocsr()+ keep = np.ones(Xc.shape[0], dtype=bool)+ keep[sel] = False+ Xc = sp.vstack([Xc[keep], full[sel]], format="csr")+ inv = np.argsort(np.concatenate([np.flatnonzero(keep), sel]), kind="stable")+ Xc = Xc[inv]+ Xc.eliminate_zeros() out_X = Xc
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| k041 | Within-stage pseudotime and graph toolkit offline: scanpy DPT/PAGA/Leiden, Palantir, CellRank 2 | 10.1186/s13059-019-1663-x (PAGA); 10.1038/s41587-019-0068-4 (Palantir); 10.1038/s41592-024-02303-9 (CellRank 2) |
| k031 | Offline OT toolkit in the sandbox: moscot TemporalProblem, wot OTModel, POT, geomloss | 10.1038/s41586-024-08453-2 (moscot); 10.1016/j.cell.2019.01.006 (Waddington-OT) |
| k038 | RNA velocity family (scVelo, dynamo, CellRank velocity kernel): not applicable to T1 files; substitutes | 10.1038/s41587-020-0591-3 (scVelo); 10.1016/j.cell.2021.12.045 (dynamo); 10.1038/s41592-024-02303-9 (CellRank 2) |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在 node 7(iso-add β=3,均值位移与形状解码未动)之后新增一个只作用于 5 个被形状化型的后处理块:把预测的 HVG 表达投到共享 25 PC 空间,按 var_target=(1+c_k)²·var_obs_k 逐 PC 校正残差(PCVAR_W=1),再以 blend m=0.3 向 PC 重构收缩(x_corr=(1-m)·x_pred+m·(z_corr@Vᵀ+mean_h)),重施非零掩码 + clip≥0,非 HVG 列原样保留。提交配置为 PLAN 未预期的 blend 变体(PLAN 原式是纯 PC 增量 delta 解码)。 |
|---|---|
| 各组分数的变化 | cell_state:变好,78.93→85.60(+6.67),超噪声;与 Engineer 的 m 扫描一致(m≤0.3 时展布去噪同时改善分布形状,m≥0.5 崩塌) covariation:变好,45.93→52.92(+6.99),远超 T1 约 2 分噪声,是本节点主收益 de_recovery:54.37→54.37(+0.00),完全不变,与保留非零掩码/支撑一致 direction:50.17→50.96(+0.79),幅度小,接近噪声,不宣称有效 |
| family_id | lowrank_shape |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 5 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 4 次:bash 3、write 1 |
| 用时 | 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 14,750 · 输出 1,636 · 思考 2,604 |
| 任务(第一行) | 分析节点 n14 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/analyst.jsonl 14 KB /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 45 |
| 工具调用 | 共 45 次:bash 29、edit 14、read 1、write 1 |
| 用时 | 24 分 |
| token 数 | 输入 68,600 · 输出 13,516 · 思考 13,759 |
| 任务(第一行) | 按计划修改程序:Per-PC variance renormalization to expanded target after isotropic shape spread |
| 最后的回答(摘录) | Done. Final verification summary: **做了什么**:在 node 7(iso-add β=3)之上实现 PLAN 的逐 PC 方差重归一块(`PCVAR_W`/`PCVAR_MODE`/`PCVAR_BLEND` 开关),对 5 个被形状化型:PC 残差向 (1+c)²·var_obs 目标方差校正(w=1),并以 blend m=0.3 向 25 维 PC 子空间部分重投影,保留非零掩码 + clip≥0,非 HVG 列不动。 **查分结果**(X3 A 半,父基线 57.67/57.69): - 提交配置 blend m=0.3 w=1.0:**seed0 61.60 / seed1 61.00**(+3.9/+3.3,超噪声);covariation 45.6→52.7,cell_state 76.4→83.7,de_rec 53.0,dir 50.8 - m 扫描单峰(0.1→0.6: 59.7/60.9/**61.6**/61.2/60.4/58.9);纯 delta 解码(PLAN 原式不加 blend)covariation 反而单调降——PLAN 假设部分证伪,实际杠杆是低秩重投影 - 对照 `PCVAR_W=0` 与父节点 maxdiff=0;伪装视图(时间平移+乱序 manifest)maxdiff=0;vec-check 通过;额度用 9/20 **下一步最值得试**:blend×w 二维消融(blend 下 w=0 vs 1,分离方差校正贡献);β 与 m 交互(β=4 + m=0.25 可能更优);m=0.3 是 A 半调参,应在 final 类视图(s=1.8)复核峰值位置。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/engineer.jsonl 180 KB /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 2 分 |
| token 数 | 输入 17,594 · 输出 1,352 · 思考 5,410 |
| 任务(第一行) | 为节点 n14(改进,父节点 n7)写改进计划 PLAN.json |
| 最后的回答(摘录) | ip-induced per-PC variance distortion may be small relative to other covariation damage sources; correction would then gain <1 point (within noise). Engineer should check per-PC var_pred vs var_target ratios — if all ratios are within 5% of 1.0, the mechanism has little to correct. 2) Re-projecting through V^T and re-clipping may introduce new distortion; check by comparing nnz and per-type variance before/after correction. 3) If covariation improves but cell_state drops >1, the correction is partially undoing expansion; reduce w.", "family_id": "lowrank_shape", "mechanism": "Per-PC variance renormalization: after isotropic expansion + gene-space decode, rescale each PC's within-type residuals toward the theoretically correct expanded variance (1+c)²·var_obs, correcting the asymmetric distortion introduced by clip≥0 without undoing the expansion's overall spread.", "vs_constant_shift": "Each cell's PC residuals are rescaled by a per-PC factor that depends on its type's expansion factor and the empirical vs target variance ratio. Different cells of the same type have different PC positions, so the gene-space correction differs per cell. A constant shift would add the same vector to every cell and cannot change within-type variance or per-PC spread.", "mechanism_evidence": "1) Report per-PC ratio var_pred_k/var_target_k before correction: if all ≈1, clip distortion is negligible and mechanism has no room. 2) Report covariation and cell_state at each w: covariation should increase monotonically with w while cell_state stays ≥78 (expansion preserved). 3) Compare β=0 (no expansion, no correction needed) vs β=3,w=0 vs β=3,w=best: the correction should only matter when expansion is on. 4) Report per-type within-type variance change for the 5 shaped types.", "mechanism_off_control": "PCVAR_W=0 (default): the correction block is skipped entirely (ratio applied as 1+w·(r−1) = 1), output is element-identical to parent node 7. Verify maxdiff=0.", "sources": [] } ``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/researcher.jsonl 6 KB /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 12 |
| 工具调用 | 共 17 次:read 9、bash 5、grep 2、write 1 |
| 用时 | 2 分 |
| token 数 | 输入 25,735 · 输出 2,340 · 思考 3,119 |
| 任务(第一行) | 审查节点 n14 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/reviewer.jsonl 113 KB /home/spark-longxinyang/vec/runs/formal/20261002-202907-search-t1-scr-A/nodes/14/reviewer.stderr |