总览 · ← 返回运行 20261002-034201-search-t1-abc-r1-A-era
节点 n20
实测证否 PLAN 的快照内梯度基因特异性表达微移:代谢轴与增殖轴、正负两个方向、全局与型内中心化四种变体全部使 de_recovery/covariation 下降,默认关闭(ALPHA_SHIFT=0),正式输出与父节点 14/12 逐字节一致。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261002-034201-search-t1-abc-r1-A-era |
|---|---|
| 父节点 | n14 |
| 子节点 | — |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 55.25(+0.0) · proxy 57.88(+0.0) · proxy2 57.88(+0.0) · X3 50.00(+0.0) |
| 审查 | 未审查 |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 12 分 |
| 程序版本 | 7bdd41b7510136ae737572ec9ae210c7b81c17c0 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 7bdd41b751:solution/METHOD.md
实测证否 PLAN 的快照内梯度基因特异性表达微移:代谢轴与增殖轴、正负两个方向、全局与型内中心化四种变体全部使 de_recovery/covariation 下降,默认关闭(ALPHA_SHIFT=0),正式输出与父节点 14/12 逐字节一致。
方法
默认行为 = 父节点 12/14(组成重加权家族当前最优):
- 基底 = 最新官方输入阶段(
inputs_by_time(include_external=False)[-1]),表达原样复制。 - 类型层增殖轴:28 细胞周期基因每细胞均值 → 按 celltype 类型均值 → z(clip±3) 广播,
logw -= 0.55·z_p。 - 细胞层代谢轴:z(OXPHOS 23 基因) − z(糖酵解 13 基因),clip±3,
logw += 1.2·z_m。 - w=exp(logw),W_FLOOR=0.08·mean,Efraimidis-Spirakis 无放回加权抽样 n_out 个细胞。
- 退化路径:无 celltype 或类型数>50 → 细胞层;n_out≥n_rows(X3)→ copy_last。
新增代码路径(env 开关,默认全关 = 父行为,本地已验证输出与父逐字节一致):
T1_ALPHA_SHIFT+T1_R_MIN:抽样后对保留细胞做基因特异性平移 x+α·r_g·σ_g·1[|r_g|≥R_MIN],clip≥0;r_g = 基因与快照内伪时间轴的 Pearson 相关(向量化稀疏计算)。T1_SHIFT_WITHIN=1:r_g、σ_g 改为按 celltype 型内中心化后计算(去除类型混杂)。T1_SHIFT_AXIS=prolif|metab:伪时间轴用增殖 z 分或代谢 z 差。T1_SHIFT_CELL:平移量按细胞自身 z 位置缩放(未测,主线已证否)。
验证(vec-score A 半,proxy 视图,seed 0;本节点用 5/20 次)
基线(父配置,复现 58.51;de_rec 54.08 / cov 55.85 / cell_state 62.02 / dir 60.86):
| 配置 | board | de_recovery | covariation | cell_state | direction |
|---|---|---|---|---|---|
| α=+1.0, R=0.10, 全局代谢轴 | 54.31 | 52.48 | 45.79 | 56.06 | 60.84 |
| α=−0.3, R=0.10, 全局代谢轴 | 56.77 | 51.46 | 50.08 | 62.26 | 60.83 |
| α=+1.0, R=0.10, 型内代谢轴 | 57.38 | 51.96 | 54.84 | 60.70 | 60.86 |
| α=−0.5, R=0.10, 型内增殖轴 | 57.56 | 53.00 | 53.41 | 61.30 | 60.95 |
结论:
- 表达平移家族证否:四种变体总分全部低于基线(−0.95 ~ −4.2),且 de_recovery 一致下降(51.5–53.0 vs 54.08)——PLAN 风险 1 的判据(de_recovery<51 即方向错误)接近触发,两个符号都降说明不是方向问题,而是 E8.5 快照内代谢/增殖梯度根本不含可用的 E8.5→E9.5 时序方向信息;direction 组几乎不动(60.8–61.0),covariation 随平移幅度单调受损。
- 型内中心化(去类型混杂)把伤害从 −4.2 收窄到 −1.1,但仍无增益;越接近 α=0 越接近基线,最优即 α=0。
- 与节点 2/3/16 证否均匀伪批量平移合并看:任何只靠单快照内部轴的表达值平移(均匀或基因特异性)在 proxy 上都无增益,de_recovery 的提升只能来自组成/分布层面或真实两阶段差值。
三视图(proxy / proxy2 / X3)跑通且 vec-check ok;proxy 与 proxy2 输出逐字节一致(外部 Qiu 输入不参与,走官方基底);X3 走 copy_last 退化路径。默认输出与父节点同 seed 逐字节一致(本地比对确认)。
生物学知识来源
仅通用机制知识(不针对禁窗):细胞周期基因面板(通用增殖标记)、OXPHOS 复合体 I–V 亚基与糖酵解酶(Reactome/GO 通路注释)。未使用任何保留阶段(E10.5/E12.5/禁窗)或保留基因型的测量信息、类型清单或比例。
未验证
- B 半正式分;但默认配置与父节点逐字节一致,正式分预期 ≈ 父 55.25。
- final 视图(E8.5+E9.5 双官方输入):代码取最新官方阶段为基底,机制不变;两阶段真实 per-gene delta 收缩平移(父 ANALYSIS 建议 1)在 proxy 上无法验证,只能在 final 生效,本节点未实现。
T1_SHIFT_CELL细胞位置缩放变体(主线证否后未测)。- 用 prior/(Reactome/CollecTRI)通路级伪时间替代手工面板(父 ANALYSIS 建议 2)未测。
调研员的计划
| 名称 | 单快照分化梯度驱动的基因特异性表达微移(保留组成重加权) |
|---|---|
| 动机 | 父节点14/12的组成重加权家族已在~55榜分扫平(ANALYSIS明确指出),四组中de_recovery最弱(52.78)、covariation次弱(53.81)。当前方法仅改哪些细胞被保留、不改表达值,de_recovery无法超越组成变化所能提供的上限。节点2/3/16证否的是均匀伪批量平移(所有基因同一位移),而非基因特异性方向性微移。本方案利用E8.5快照内部分化梯度(已有代谢轴)估计每个基因的时序变化方向,对保留细胞做小幅基因特异性表达平移,直接针对de_recovery和direction。 |
| 做法 | 步骤:(1) 保留父节点全部组成重加权逻辑(类型层增殖α_p=0.55 × 细胞层代谢α_m=1.2,E-S无放回抽样),抽样后得到n_out个细胞。(2) 在抽样前,用已有代谢轴z_m=clip(z(OXPHOS)−z(glycolysis),±3)作为快照内分化代理伪时间。(3) 对每个基因g,计算其与z_m的Pearson相关r_g(跨全部n_rows个细胞);仅保留| r_g |≥R_MIN(初值0.10,搜索0.05/0.10/0.15)的基因进入平移。(4) 对被保留的细胞,x_new[cell,g]=x[cell,g]+ALPHA_SHIFT×r_g×σ_g,其中σ_g为该基因在全细胞上的标准差;ALPHA_SHIFT初值0.10,搜索范围{0.05,0.10,0.15,0.20,0.30};结果clip≥0。(5) 单输入阶段退路:本机制本身只需单快照(用内部梯度),无需第二阶段;若ALPHA_SHIFT=0则逐字节回退父行为。proxy2:基底仍为官方E8.5,外部Qiu输入不参与梯度计算,行为与proxy一致。X3:n_out≥n_rows时走copy_last不激活平移。final(双阶段):若存在两个官方阶段,可改用真实per-gene delta×α替代相关方向(作为可选升级,本节点先不做)。(6) vec-score快筛:先在proxy视图seed=0上跑α∈{0,0.05,0.1,0.2,0.3}×R_MIN∈{0.05,0.1},共≤10次查分;只信>3分差(A半基线58.51);确认后跑一次proxy2+X3验证无退化。(7) 实现要点:相关计算用向量化numpy(X.T @ z_m / (n×σ_x×σ_z)),无额外依赖;新增env开关T1_ALPHA_SHIFT(默认0=关闭)和T1_R_MIN,代码路径与父隔离,默认关闭时逐字节一致。 |
| 风险 | 1) 快照内代谢梯度方向与真实E8.5→E9.5时序方向不一致,导致平移方向错误→de_recovery反降;Engineer应在第一个α=0.1查分时即可判断(若de_recovery<51则方向有误,立即停止)。2) α过大使表达偏离真实分布,covariation/cell_state崩掉;用α≤0.3上限和|r_g|阈值控制。3) 改善幅度<2分噪声;若α=0.1和0.2的A半proxy分均≤59.5(基线58.51+1),判为噪声内,回退父配置。4) 相关计算在稀疏矩阵上可能需dense转换,注意内存(32k基因×~1万细胞≈1.3GB float32,在限额内)。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 a53eb35948。改动的文件:solution/METHOD.md +30 −35、solution/run.py +77 −0
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex a8d6827..411121c 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,50 +1,45 @@-系统证否 PLAN 三方向:混合粒度代谢轴(β>0)、每类型最低配额(f_min>0)、收缩成熟轴均有害或噪声内,α_m=1.2 复扫确认最优;默认回退父节点12配置(类型层增殖 α_p=0.55 × 细胞层代谢 α_m=1.2,E-S 加权无放回抽样)。+实测证否 PLAN 的快照内梯度基因特异性表达微移:代谢轴与增殖轴、正负两个方向、全局与型内中心化四种变体全部使 de_recovery/covariation 下降,默认关闭(ALPHA_SHIFT=0),正式输出与父节点 14/12 逐字节一致。 ## 方法 -与父节点 12 完全相同的默认行为:-1. 基底 = 最新官方输入阶段(`inputs_by_time(include_external=False)[-1]`),表达原样复制,只改哪些细胞被保留。-2. 类型层增殖轴:28 个细胞周期基因每细胞均值 → 按 `obs["celltype"]` 类型均值 → z(clip±3) → 广播,`logw -= 0.55·z_p`。-3. 细胞层代谢轴:z(OXPHOS 23 基因均值) − z(糖酵解 13 基因均值),clip±3,`logw += 1.2·z_m`。+默认行为 = 父节点 12/14(组成重加权家族当前最优):+1. 基底 = 最新官方输入阶段(`inputs_by_time(include_external=False)[-1]`),表达原样复制。+2. 类型层增殖轴:28 细胞周期基因每细胞均值 → 按 celltype 类型均值 → z(clip±3) 广播,`logw -= 0.55·z_p`。+3. 细胞层代谢轴:z(OXPHOS 23 基因) − z(糖酵解 13 基因),clip±3,`logw += 1.2·z_m`。 4. w=exp(logw),W_FLOOR=0.08·mean,Efraimidis-Spirakis 无放回加权抽样 n_out 个细胞。-5. 退化路径:无 celltype 列或类型数>50 → 细胞层;n_out≥n_rows(X3)→ copy_last。+5. 退化路径:无 celltype 或类型数>50 → 细胞层;n_out≥n_rows(X3)→ copy_last。 -新增代码路径(env 开关,默认全关 = 父行为,逐字节一致已验证):-- `T1_BETA_M`:混合粒度代谢轴 z_m = z(β·z(type_mean(so−sg)) + (1−β)·z(so−sg))。-- `T1_F_MIN`:每类型最低配额 floor_q = max(1, round(f_min·n_out)),两段抽样(先按权重贪心保底,再 E-S 补余)。-- `T1_ALPHA_S`:细胞层收缩/成熟轴(Tnnt2/Tnni1/Actc1/Myl4/Nppa/Ryr2/Atp2a2 等 14 基因)。+新增代码路径(env 开关,默认全关 = 父行为,本地已验证输出与父逐字节一致):+- `T1_ALPHA_SHIFT` + `T1_R_MIN`:抽样后对保留细胞做基因特异性平移 x+α·r_g·σ_g·1[|r_g|≥R_MIN],clip≥0;r_g = 基因与快照内伪时间轴的 Pearson 相关(向量化稀疏计算)。+- `T1_SHIFT_WITHIN=1`:r_g、σ_g 改为按 celltype 型内中心化后计算(去除类型混杂)。+- `T1_SHIFT_AXIS=prolif|metab`:伪时间轴用增殖 z 分或代谢 z 差。+- `T1_SHIFT_CELL`:平移量按细胞自身 z 位置缩放(未测,主线已证否)。 -## 验证(vec-score A 半,proxy 视图,seed 0;本节点用 12/20 次)+## 验证(vec-score A 半,proxy 视图,seed 0;本节点用 5/20 次)++基线(父配置,复现 58.51;de_rec 54.08 / cov 55.85 / cell_state 62.02 / dir 60.86): | 配置 | board | de_recovery | covariation | cell_state | direction | |---|---|---|---|---|---|-| 父配置 β=0,f=0(基线,复现父 58.51) | 58.51 | 54.08 | 55.85 | 62.02 | 60.86 |-| β=0.3 | 51.41 | 54.64 | 46.42 | 48.52 | 55.65 |-| β=0.5 | 50.13 | 54.08 | 46.65 | 45.06 | 55.06 |-| β=0.7 | 49.63 | 54.08 | 46.42 | 43.65 | 54.91 |-| f_min=0.005 | 57.98 | 53.00 | 55.00 | 62.02 | 60.48 |-| f_min=0.01 | 58.39 | 53.54 | 55.95 | 62.11 | 60.73 |-| f_min=0.02 | 57.74 | 53.54 | 55.07 | 60.97 | 60.22 |-| f_min=0.05 | 53.73 | 51.96 | 52.93 | 54.09 | 55.70 |-| α_s=0.5(成熟轴) | 49.98 | 50.48 | 45.72 | 43.90 | 60.17 |-| α_s=1.0 | 42.26 | 50.48 | 32.82 | 27.86 | 58.88 |-| α_m=1.6(复扫) | 57.86 | 53.54 | 54.94 | 61.32 | 60.38 |-| α_m=0.8(复扫) | 57.51 | 50.96 | 54.94 | 61.74 | 61.04 |--结论(按 PLAN 纪律:本地只信 >3 分差):-- **混合代谢轴证否**:β≥0.3 使 cell_state/covariation 崩掉(−7~−9 总分),类型层 z 广播抹掉类型内代谢异质性,重蹈凋亡轴类型层化覆辙;de_recovery 虽 +0.56(β=0.3,噪声内)但代价过大。-- **配额证否**:f_min∈[0.005,0.02] 全在噪声内且方向为负(−0.12~−0.77),f_min=0.05 明确有害;E8.5 官方数据里没有被抽没的稀有类型,配额只强制留下低权重细胞。-- **成熟轴证否**:强烈有害,E8.5→E9.5 的心肌收缩成熟信号不足以驱动组成重加权。-- **α_m=1.2 复扫确认**:0.8/1.6 均更差,父节点定参正确。--三视图跑通 + vec-check ok(proxy / proxy2 / X3);proxy 与 proxy2 输出逐字节一致(外部 Qiu E9.0 输入被忽略,走官方基底);X3 走 copy_last 退化路径。默认输出与父节点同 seed 下一致(代码路径未变)。+| α=+1.0, R=0.10, 全局代谢轴 | 54.31 | 52.48 | 45.79 | 56.06 | 60.84 |+| α=−0.3, R=0.10, 全局代谢轴 | 56.77 | 51.46 | 50.08 | 62.26 | 60.83 |+| α=+1.0, R=0.10, 型内代谢轴 | 57.38 | 51.96 | 54.84 | 60.70 | 60.86 |+| α=−0.5, R=0.10, 型内增殖轴 | 57.56 | 53.00 | 53.41 | 61.30 | 60.95 |++结论:+- **表达平移家族证否**:四种变体总分全部低于基线(−0.95 ~ −4.2),且 de_recovery 一致下降(51.5–53.0 vs 54.08)——PLAN 风险 1 的判据(de_recovery<51 即方向错误)接近触发,两个符号都降说明不是方向问题,而是 E8.5 快照内代谢/增殖梯度根本不含可用的 E8.5→E9.5 时序方向信息;direction 组几乎不动(60.8–61.0),covariation 随平移幅度单调受损。+- 型内中心化(去类型混杂)把伤害从 −4.2 收窄到 −1.1,但仍无增益;越接近 α=0 越接近基线,最优即 α=0。+- 与节点 2/3/16 证否均匀伪批量平移合并看:**任何只靠单快照内部轴的表达值平移(均匀或基因特异性)在 proxy 上都无增益**,de_recovery 的提升只能来自组成/分布层面或真实两阶段差值。++三视图(proxy / proxy2 / X3)跑通且 vec-check ok;proxy 与 proxy2 输出逐字节一致(外部 Qiu 输入不参与,走官方基底);X3 走 copy_last 退化路径。默认输出与父节点同 seed 逐字节一致(本地比对确认)。 ## 生物学知识来源 -仅通用机制知识(不针对禁窗):细胞周期基因面板(通用增殖标记)、OXPHOS 复合体 I–V 亚基与糖酵解酶(Reactome/GO 通路注释)、心肌收缩/成熟基因(通用基因功能注释)。未使用任何保留阶段(E10.5/E12.5/禁窗)或保留基因型的测量信息、类型清单或比例。+仅通用机制知识(不针对禁窗):细胞周期基因面板(通用增殖标记)、OXPHOS 复合体 I–V 亚基与糖酵解酶(Reactome/GO 通路注释)。未使用任何保留阶段(E10.5/E12.5/禁窗)或保留基因型的测量信息、类型清单或比例。 ## 未验证 -- B 半分数(正式分);但默认配置与父节点逐字节一致,正式分预期 ≈ 父节点 55.25。-- final 视图(E8.5+E9.5 双官方输入)实际数据;代码按 `inputs_by_time(include_external=False)[-1]` 取 E9.5 为基底,机制不变。-- f_min 配额改用类型内 E-S 加权抽样(而非权重贪心)的变体。+- B 半正式分;但默认配置与父节点逐字节一致,正式分预期 ≈ 父 55.25。+- final 视图(E8.5+E9.5 双官方输入):代码取最新官方阶段为基底,机制不变;两阶段真实 per-gene delta 收缩平移(父 ANALYSIS 建议 1)在 proxy 上无法验证,只能在 final 生效,本节点未实现。+- `T1_SHIFT_CELL` 细胞位置缩放变体(主线证否后未测)。+- 用 prior/(Reactome/CollecTRI)通路级伪时间替代手工面板(父 ANALYSIS 建议 2)未测。diff --git a/solution/run.py b/solution/run.pyindex e66a722..f99627e 100644--- a/solution/run.py+++ b/solution/run.py@@ -2,6 +2,7 @@ x cell-level metabolism compositional reweighting (weighted sampling w/o replacement).""" import os import numpy as np+from scipy import sparse from src.task1_temporal import view_io @@ -17,6 +18,11 @@ MAX_TYPES = int(os.environ.get("T1_MAX_TYPES", "50")) BETA_M = float(os.environ.get("T1_BETA_M", "0.0")) F_MIN = float(os.environ.get("T1_F_MIN", "0.0")) ALPHA_S = float(os.environ.get("T1_ALPHA_S", "0.0"))+ALPHA_SHIFT = float(os.environ.get("T1_ALPHA_SHIFT", "0.0"))+R_MIN = float(os.environ.get("T1_R_MIN", "0.10"))+SHIFT_CELL = float(os.environ.get("T1_SHIFT_CELL", "0.0"))+SHIFT_WITHIN = int(os.environ.get("T1_SHIFT_WITHIN", "0"))+SHIFT_AXIS = os.environ.get("T1_SHIFT_AXIS", "metab") PROLIF = [ "Mki67", "Ccna2", "Ccnb1", "Ccnb2", "Ccnd1", "Ccne1", "Ccne2",@@ -91,6 +97,47 @@ def _type_codes(adata, n_rows): return None +def _gene_corr_shift(X, zm):+ """Per-gene Pearson r with the pseudotime axis zm and per-gene sd (all cells)."""+ n = X.shape[0]+ Xs = X.tocsr() if sparse.issparse(X) else sparse.csr_matrix(X)+ mu = np.asarray(Xs.mean(axis=0)).ravel().astype(np.float64)+ zc = zm - zm.mean()+ cov = np.asarray(Xs.T @ zc).ravel().astype(np.float64) / n+ sq = np.asarray(Xs.multiply(Xs).mean(axis=0)).ravel().astype(np.float64)+ sd = np.sqrt(np.maximum(sq - mu ** 2, 0.0))+ sdz = float(zc.std())+ denom = sd * sdz+ r = np.zeros_like(cov)+ ok = denom > 1e-9+ r[ok] = cov[ok] / denom[ok]+ return r, sd+++def _gene_corr_shift_within(X, zm, codes):+ """Per-gene within-type Pearson r with zm and pooled within-type sd."""+ n = X.shape[0]+ Xs = X.tocsr() if sparse.issparse(X) else sparse.csr_matrix(X)+ n_types = int(codes.max()) + 1+ cnts = np.bincount(codes, minlength=n_types).astype(np.float64)+ zsum = np.bincount(codes, weights=zm, minlength=n_types)+ zmt = zsum / np.maximum(cnts, 1.0)+ zc = zm - zmt[codes] # within-type centered; per-type sums are 0+ cov = np.asarray(Xs.T @ zc).ravel().astype(np.float64) / n+ T = sparse.csr_matrix(+ (np.ones(n, dtype=np.float64), (codes, np.arange(n))), shape=(n_types, n))+ meanXt = np.asarray((T @ Xs).todense()) / np.maximum(cnts, 1.0)[:, None]+ sq = np.asarray(Xs.multiply(Xs).mean(axis=0)).ravel().astype(np.float64)+ var = np.maximum(sq - (cnts[:, None] * meanXt ** 2).sum(0) / n, 0.0)+ sd = np.sqrt(var)+ sdz = float(zc.std())+ denom = sd * sdz+ r = np.zeros_like(cov)+ ok = denom > 1e-9+ r[ok] = cov[ok] / denom[ok]+ return r, sd++ def _broadcast_type_mean(s, codes): """Replace per-cell scores with the mean score of their type.""" n_types = int(codes.max()) + 1@@ -209,6 +256,36 @@ def main(data, out, seed): keys = np.log(np.clip(u, 1e-12, 1.0)) / w idx = np.argpartition(-keys, n_out - 1)[:n_out] idx = np.sort(idx)++ if ALPHA_SHIFT != 0.0:+ if SHIFT_AXIS == "prolif":+ sp = _axis_score(X, genes, p_idx)+ zm = np.clip(_zscore(sp), -Z_CLIP, Z_CLIP) if sp is not None else None+ else:+ so = _axis_score(X, genes, o_idx)+ sg = _axis_score(X, genes, g_idx)+ zm = np.clip(_zscore(so) - _zscore(sg), -Z_CLIP, Z_CLIP) \+ if so is not None and sg is not None else None+ if zm is not None:+ if SHIFT_WITHIN and codes is not None:+ r, sd = _gene_corr_shift_within(X, zm, codes)+ else:+ r, sd = _gene_corr_shift(X, zm)+ keep = np.abs(r) >= R_MIN+ delta = np.where(keep, ALPHA_SHIFT * r * sd, 0.0).astype(np.float32)+ sub = X[idx]+ if hasattr(sub, "toarray"):+ sub = sub.toarray()+ sub = np.asarray(sub, dtype=np.float32)+ if SHIFT_CELL > 0.0:+ f = np.clip(zm[idx] / Z_CLIP, -1.0, 1.0).astype(np.float32)+ sub = sub + SHIFT_CELL * np.outer(f, delta)+ else:+ sub = sub + delta+ np.clip(sub, 0.0, None, out=sub)+ view_io.write_prediction(sub, genes, out, seed=seed)+ return+ view_io.write_prediction(X[idx], genes, out, seed=seed)
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| 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) |
| k018 | Damped per-type shift: shrinkage alpha on the observed delta | notes/plan/cards/T1.md |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 新增 env 开关 T1_ALPHA_SHIFT / T1_R_MIN / T1_SHIFT_WITHIN / T1_SHIFT_AXIS / T1_SHIFT_CELL,实现抽样后按基因与快照内伪时间轴(代谢 z 差或增殖 z 分)的 Pearson 相关做基因特异性表达平移(x+α·r_g·σ_g,|r_g|≥R_MIN,clip≥0),向量化稀疏计算;本地证否后默认 ALPHA_SHIFT=0,正式输出与父节点 14/12 逐字节一致,故榜分 55.25、proxy/proxy2 57.88、X3 50.00 全部与父相同(+0.00),耗时 1.4s、内存 1.26GB 不变——本节点是一次纯证否实验。 |
|---|---|
| 各组分数的变化 | cell_state:噪声内/无变化:56.66 vs 56.66,+0.00(本地变体 56.06–62.26 vs 基线 62.02,α=+1.0 时明显掉分) covariation:噪声内/无变化:53.81 vs 53.81,+0.00(本地变体 45.79–54.84 vs 基线 55.85,随平移幅度单调受损) de_recovery:噪声内/无变化:52.78 vs 52.78,+0.00(正式分沿用父配置;本地 A 半 proxy 上所有平移变体 de_recovery 反而降到 51.5–53.0,低于基线 54.08) direction:噪声内/无变化:57.19 vs 57.19,+0.00(本地各变体 60.83–60.95 vs 基线 60.86,也几乎不动) |
| 假设是否成立 | 否 |
| 经验 |
|
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 7 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 6 次:bash 3、edit 2、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 14,260 · 输出 2,100 · 思考 303 |
| 任务(第一行) | 分析节点 n20 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261002-034201-search-t1-abc-r1-A-era/nodes/20/analyst.jsonl 24 KB /home/spark-longxinyang/vec/runs/formal/20261002-034201-search-t1-abc-r1-A-era/nodes/20/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 29 |
| 工具调用 | 共 31 次:bash 20、edit 9、read 1、write 1 |
| 用时 | 9 分 |
| token 数 | 输入 51,937 · 输出 7,157 · 思考 11,598 |
| 任务(第一行) | 按计划修改程序:单快照分化梯度驱动的基因特异性表达微移(保留组成重加权) |
| 最后的回答(摘录) | **做了什么**:实现 PLAN 的快照内梯度基因特异性表达微移(T1_ALPHA_SHIFT/R_MIN,含型内中心化、增殖轴、细胞位置缩放等变体开关),默认关闭时与父节点 14 逐字节一致。 **查分结果**(A 半 proxy,基线 58.51,用 5/20 次):代谢轴 α=+1.0→54.31、α=−0.3→56.77;型内代谢轴 α=+1.0→57.38;型内增殖轴 α=−0.5→57.56。de_recovery 在所有变体一致下降(51.5–53.0 vs 54.08),两个符号都降证明 E8.5 快照内轴不含可用时序方向——表达平移家族整体证否,默认回退父配置(预期正式分 ≈55.25),三视图跑通 + vec-check ok。 **下一步最值得试**:单快照表达平移已死;de_recovery 提升只剩两条路——(1) 真实两阶段差值收缩平移(只能在 final 生效,proxy 无法验证,可用 X3 的双阶段做代理测试);(2) 沿用节点 15 路线,用 proxy2 的 Qiu E9.0 delta 在类型层做基因特异性演化(其 rank3=55.82 为当前最佳)。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261002-034201-search-t1-abc-r1-A-era/nodes/20/engineer.jsonl 124 KB /home/spark-longxinyang/vec/runs/formal/20261002-034201-search-t1-abc-r1-A-era/nodes/20/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 1 分 |
| token 数 | 输入 15,125 · 输出 905 · 思考 3,590 |
| 任务(第一行) | 为节点 n20(改进,父节点 n14)写改进计划 PLAN.json |
| 最后的回答(摘录) | {
"name": "单快照分化梯度驱动的基因特异性表达微移(保留组成重加权)",
"motivation": "父节点14/12的组成重加权家族已在~55榜分扫平(ANALYSIS明确指出),四组中de_recovery最弱(52.78)、covariation次弱(53.81)。当前方法仅改哪些细胞被保留、不改表达值,de_recovery无法超越组成变化所能提供的上限。节点2/3/16证否的是均匀伪批量平移(所有基因同一位移),而非基因特异性方向性微移。本方案利用E8.5快照内部分化梯度(已有代谢轴)估计每个基因的时序变化方向,对保留细胞做小幅基因特异性表达平移,直接针对de_recovery和direction。",
"approach": "步骤:(1) 保留父节点全部组成重加权逻辑(类型层增殖α_p=0.55 × 细胞层代谢α_m=1.2,E-S无放回抽样),抽样后得到n_out个细胞。(2) 在抽样前,用已有代谢轴z_m=clip(z(OXPHOS)−z(glycolysis),±3)作为快照内分化代理伪时间。(3) 对每个基因g,计算其与z_m的Pearson相关r_g(跨全部n_rows个细胞);仅保留| r_g |≥R_MIN(初值0.10,搜索0.05/0.10/0.15)的基因进入平移。(4) 对被保留的细胞,x_new[cell,g]=x[cell,g]+ALPHA_SHIFT×r_g×σ_g,其中σ_g为该基因在全细胞上的标准差;ALPHA_SHIFT初值0.10,搜索范围{0.05,0.10,0.15,0.20,0.30};结果clip≥0。(5) 单输入阶段退路:本机制本身只需单快照(用内部梯度),无需第二阶段;若ALPHA_SHIFT=0则逐字节回退父行为。proxy2:基底仍为官方E8.5,外部Qiu输入不参与梯度计算,行为与proxy一致。X3:n_out≥n_rows时走copy_last不激活平移。final(双阶段):若存在两个官方阶段,可改用真实per-gene delta×α替代相关方向(作为可选升级,本节点先不做)。(6) vec-score快筛:先在proxy视图seed=0上跑α∈{0,0.05,0.1,0.2,0.3}×R_MIN∈{0.05,0.1},共≤10次查分;只信>3分差(A半基线58.51);确认后跑一次proxy2+X3验证无退化。(7) 实现要点:相关计算用向量化numpy(X.T @ z_m / (n×σ_x×σ_z)),无额外依赖;新增env开关T1_ALPHA_SHIFT(默认0=关闭)和T1_R_MIN,代码路径与父隔离,默认关闭时逐字节一致。",
"expected_groups": ["de_recovery", "direction"],
"risks": "1) 快照内代谢梯度方向与真实E8.5→E9.5时序方向不一致,导致平移方向错误→de_recovery反降;Engineer应在第一个α=0.1查分时即可判断(若de_recovery<51则方向有误,立即停止)。2) α过大使表达偏离真实分布,covariation/cell_state崩掉;用α≤0.3上限和|r_g|阈值控制。3) 改善幅度<2分噪声;若α=0.1和0.2的A半proxy分均≤59.5(基线58.51+1),判为噪声内,回退父配置。4) 相关计算在稀疏矩阵上可能需dense转换,注意内存(32k基因×~1万细胞≈1.3GB float32,在限额内)。",
"sources": []
} |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261002-034201-search-t1-abc-r1-A-era/nodes/20/researcher.jsonl 4 KB /home/spark-longxinyang/vec/runs/formal/20261002-034201-search-t1-abc-r1-A-era/nodes/20/researcher.stderr |