总览 · ← 返回运行 20261003-004922-search-t2-embryo-interp-g24-D
节点 n20
实现 PLAN 的 κ 份额调度(T2EI_KAPPA_MODE=sched)并双向查分:p=±1 均低于对称 κ=16,机制默认关闭,提交配置与父18逐位一致。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-004922-search-t2-embryo-interp-g24-D |
|---|---|
| 父节点 | n18 |
| 子节点 | n22 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 62.38(+0.0) · proxy 62.38(+0.0) · 3 次复测均分 62.05 |
| 审查 | 通过 1 越界读取:未发现问题。run.py 仅通过 --data/--out 参数与 src.task2_spatial 的 view_io(load_manifest/read_stage/panel_genes/write_t2,run.py:37,442-457)读写视图数据,无绝对路径、..、/mnt、/home、data/raw、评分器路径,无联网代码;导入的是任务工具库而非 src/common/evaluation。; 2 硬编码目标统计量:未发现问题。常量仅为超参数(GAMMA=1.75、SEL=16、DAMP=0.60、MIN_TYPE_CELLS=10,run.py:39-1… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 17 分 |
| 程序版本 | d0fc65445056705cfbcb8d8e4f9f86a08d476d98 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git d0fc654450:solution/METHOD.md
实现 PLAN 的 κ 份额调度(T2EI_KAPPA_MODE=sched)并双向查分:p=±1 均低于对称 κ=16,机制默认关闭,提交配置与父18逐位一致。
方法(family T2EI-05:实现与偏离)
基座 = 父18:procrustes3d、t_draw=t^1.75 时间扭曲分层混抽、成熟度选择 SEL=16(对称)、t_eff=(t+t_draw)/2、damp=0.60。
- sched κ 调度(PLAN 机制,已实现,默认关闭
T2EI_KAPPA_MODE=sym):κ_s = 16·(0.5/w_s)^p,w_s 为该侧本步抽样份额(w_a=n_a/n=0.7988、w_b=n_b/n=0.2012,含分层配额),clamp 到 [0.25×16, 4×16]=[4,64];只改型内沿型轴 a→b 的抽样权重,配额、表达值、坐标全部不动。PLAN 的 approach 公式(份额小侧更强 → p>0)与 motivation 数字(κ_a≈64、κ_b≈4 → a 侧更强)方向相反,故用 p 的正负两个方向各查一次判定。 - 探索性附加(均默认关闭):
T2EI_SHRINK(型内向质心坐标收缩)、T2EI_GAMMA_RMS(组成扭曲与 RMS 时间解耦),来自父18 ANALYSIS 的 next_suggestions,一并对照查分。
机制生效证据(mechanism_evidence)
- (a) 实际 κ:p=+1 → κ_a=10.0、κ_b=39.8(无 clamp);p=−1 → κ_a=25.6、κ_b=6.4;p=−2 → κ_b 触 4 下限(clamp 命中 b)。
- (b) 被抽细胞在型轴 a→b 上的投影均值(z=0 在 m_a、z=1 在 m_b):sym(=sched p=0)z_a=0.0613、z_b=0.5122;p=+1 → z_a=0.0518、z_b=0.6446;p=−1 → z_a=0.0676、z_b=0.6754。两侧均确实移动,非零调度。注意权重 exp 内 clip(κz,±10):κ_b 增大反而扩大饱和平台使 z_b 回升——κ_b=16 恰在裁剪交互下的锐利点。
- (c) 被换细胞比例:sched p=±1 相对 sym 输出 ~4970–4990/5000 行不同(99%+)。
- (d) 四组分(A半,vs 父18 基线 61.35 = 55.45/61.60/69.28/59.05):
配置 榜分 cell_state expr_change shape local sched p=+1(公式向) 61.03 54.72 59.92 70.51 58.95 sched p=−1(动机向) 60.79 53.89 60.60 69.69 58.97 shrink=0.075(型内坐标收缩) 61.43 55.45 61.60 69.45 59.23 shrink=0.15 61.35 55.45 61.60 69.27 59.07 GAMMA=1.5 60.84 52.80 61.09 70.50 58.99 GAMMA=2.0 60.55 57.41 60.74 66.00 58.06 GAMMA=2.0 + GAMMA_RMS=1.75(解耦) 61.04 57.41 60.74 67.95 58.06
mechanism_off_control
T2EI_KAPPA_MODE=sym(提交默认)本地校验与父18输出逐位一致(X 与 spatial_3D 全等,seed 0);sched p=0 亦逐位一致。sched 开启后 cell_state/expression_change 变化 ≥0.7–2.2 分但方向为负,机制生效但假设被否证。
结论与教训
- 非对称 κ 双向均被否证:PLAN 公式向(b 侧更强)与动机向(a 侧更强)都低于对称 κ=16。原因:① 权重裁剪 clip(±10) 使大 κ 饱和成平台、选择反而变钝;② κ=16 对称点是该选择机制在裁剪交互下的实测最优,份额非对称(4:1)不构成修正理由。与父18「κ 12–20 平坦」一致:平坦区内改分配方式也无信号。
- GAMMA=2.0 的 cell_state +1.96 不迁移:expression_change/shape/local 合计 −3.2,RMS 解耦(GAMMA_RMS=1.75)只挽回 shape 1.9 分,净 −0.31。γ 与四组分存在权衡,1.75 是净最优附近。
- shrink 0.075 +0.08、0.15 +0.00,均 <1(噪声),不采用。
- 提交 = 父18 配置(sym 默认,所有新开关关闭),预期官方分 ≈62.38。
验证过 / 没验证过
- 验证过:默认输出与父18逐位一致;seed 0 重跑确定;seed 1 输出不同;无括号退路(单输入→copy_last 分层抽样)不受改动影响,选择层/收缩层不触发;视图无关(只用份额、时间差与视图内数据,无绝对时间/路径/board 依赖);vec-check 通过;~2s、纯 CPU。
- 没验证过:sched 在 seed 1/2 或 final 括号上的行为(A半两方向均 <−0.3,无跨 seed 复核价值);shrink 与 GAMMA 的交互。
- 知识来源:仅通用发育生物学(型内成熟度谱连续、坐标尺度随发育单调增长),无保留阶段/基因型信息,无外部数据。
- 查分:7/20(sched p=±1、shrink×2、GAMMA 1.5/2.0、解耦 GAMMA)。
调研员的计划
| 名称 | 成熟度选择非对称化:κ 按两侧抽样份额反比调度(constant-product schedule) |
|---|---|
| 动机 | 最弱组是 cell_state 56.78(父18四组:56.78/61.99/60.65/70.09),且自节点16以来未再提升。父16的 SEL 机制假设是'让 a 端抽超前细胞、b 端抽落后细胞以把混合表达拉向目标时刻',但 κ=16 对两侧一视同仁,而 t_draw=t^1.75 使两侧份额极不对称(节点15记录:a 端 3994 vs b 端 1006,约 4:1):b 端每个被抽中细胞对混合的贡献约 4 倍于 a 端,却承受同样的选择强度——过选会放大 b 端极端细胞的噪声,a 端则选择不足。这是选择机制内部的结构性失配,不是调参:修正后 κ_a≈64、κ_b≈4(t=0.5),且 κ 在 12–20 区间实测平坦(父18),说明平坦区内改变'分配方式'比改变'总量'更可能有信号。已否证方向不重复:型内 SNR 自适应 κ(SNR CV=0.23)、型均值表达位移 α>0(单调降分)均不采用。 |
| 做法 | 基座=父18 提交配置(procrustes3d、GAMMA=1.75、t_eff=mid、DAMP=0.60、uniform κ=16),只改选择层:新增环境变量 T2EI_KAPPA_MODE∈{sym(默认,逐位复现父18),sched} 与 T2EI_KAPPA_P(初值1,搜索{0.5,1,1.5})。sched 模式:κ_a=16·(0.5/w_a)^p、κ_b=16·(0.5/w_b)^p,w_s 为该侧本步抽样份额(w_a=1−t_draw,含分层配额),并复用父18已有的 clamp(·,0.25×16,4×16) 安全界;κ 只决定型内沿型轴 a→b 抽哪一端的多,不改配额、不改任何表达值、不动坐标。单输入阶段退路不变(无括号→copy_last 分层抽样,选择层不触发)。查分流程:① 先在 n=1500 子采样上各跑一次确认实现无回归(不查分);② vec-score 查 sched p=1(1次);③ 若 Δcell_state≥1 再查 p∈{0.5,1.5}(≤2次);④ 任何候选若 A 半领先 <1 分(=T2 噪声),换 seed 重查一次确认,不追尖峰;⑤ 最后跑 sym 对照确认与父18逐位一致(1次)。总查分预算 ≤8/20。视图无关:只用份额与型轴,无绝对时间/路径依赖。 |
| 风险 | ① κ 平坦区(12–20)意味着选择强度本身不敏感,非对称化也可能无信号——第②步一次查分即可判定,Δcell_state<1 即止损,只提交 sym 对照;② b 端 κ 降到 4 等于放弃 b 端选择,若 b 端选择恰是当前增益主来源,会掉分——对照表里保留 p=0.5(κ_b≈11)区分;③ 份额随 t 变化,若本板 t 使 clamp 频繁触顶则调度退化为常数——Engineer 先打印 κ_a/κ_b 实际值;④ A/B 半偏移:沿用父18 经验(A→B 约 +1),只信分组方向与 ≥噪声的差值。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 8169a47fc5。改动的文件:solution/METHOD.md +29 −25、solution/README.md +1 −1、solution/run.py +81 −2
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 224b823..3dcad8b 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,38 +1,42 @@-组合父16成熟度选择(κ=16)与节点17坐标尺度修正(t_eff=(t+t_draw)/2, damp=0.60);PLAN型内SNR自适应κ已实现并对照,实测有害且SNR CV=0.23<0.3,按PLAN风险条款默认关闭。+实现 PLAN 的 κ 份额调度(T2EI_KAPPA_MODE=sched)并双向查分:p=±1 均低于对称 κ=16,机制默认关闭,提交配置与父18逐位一致。 ## 方法(family T2EI-05:实现与偏离) -基座 = 父节点 16:procrustes3d 对齐、t_draw=t^1.75 时间扭曲分层混抽真实细胞(表达+坐标同行)、成熟度选择 SEL=16(a 端偏向沿型轴 a→b 超前的细胞、b 端偏向落后的细胞,只改抽中哪些细胞、不改任何表达值)。本节点改动:+基座 = 父18:procrustes3d、t_draw=t^1.75 时间扭曲分层混抽、成熟度选择 SEL=16(对称)、t_eff=(t+t_draw)/2、damp=0.60。 -1. **步骤1(提交生效)**:坐标 RMS 插值时间从真实 t 改为 t_eff=(t+t_draw)/2(`T2EI_TEFF_MODE=mid`,默认),damp 0.5→0.60(`T2EI_DAMP` 默认 0.60)。即把节点 17 已验证的尺度修正(官方 shape_scale 69.03→70.25)与节点 16 已验证的选择机制(官方 cell_state +2.17)组合——两者一个只改坐标缩放、一个只改细胞选择,正交。proxy 实测 target_rms 149.2→146.4,scale_log_ratio −0.003(近 0)。-2. **步骤2(PLAN 机制,已实现,默认关闭 T2EI_SEL_ADAPT=0)**:型内自适应 κ。对每个两端共有型(各 ≥10 细胞):d_c=m_b−m_a;把该型两阶段细胞投影到 d_c,σ_c=合并型内标准差(pooled within-stage std);SNR_c=|d_c|/σ_c;κ_c=κ_base·clamp(SNR_c/median(SNR), 0.25, 2.0)。**先打印 SNR 分布:10 个共有型,SNR 3.57–8.04,CV=0.23 < 0.3**——PLAN 风险条款 1 命中(自适应近退化),仍按机制跑了一次对照查分。-3. **步骤3**:κ_base 细扫 {12,16,20,24}(PLAN 风险条款指定的替代方向)。+1. **sched κ 调度(PLAN 机制,已实现,默认关闭 `T2EI_KAPPA_MODE=sym`)**:κ_s = 16·(0.5/w_s)^p,w_s 为该侧本步抽样份额(w_a=n_a/n=0.7988、w_b=n_b/n=0.2012,含分层配额),clamp 到 [0.25×16, 4×16]=[4,64];只改型内沿型轴 a→b 的抽样权重,配额、表达值、坐标全部不动。PLAN 的 approach 公式(份额小侧更强 → p>0)与 motivation 数字(κ_a≈64、κ_b≈4 → a 侧更强)方向相反,故用 p 的正负两个方向各查一次判定。+2. 探索性附加(均默认关闭):`T2EI_SHRINK`(型内向质心坐标收缩)、`T2EI_GAMMA_RMS`(组成扭曲与 RMS 时间解耦),来自父18 ANALYSIS 的 next_suggestions,一并对照查分。 -## 结果(proxy A 半,seed 0,GAMMA=1.75,t_eff/damp0.60 基座)+## 机制生效证据(mechanism_evidence) -| 配置 | 榜分 | cell_state | expr_change | shape_scale | local_spatial |-|---|---:|---:|---:|---:|---:|-| SEL=0(≈节点17 A半复现) | 60.43 | 53.27 | 60.27 | 69.13 | 59.04 |-| **SEL=16 uniform(提交)** | **61.35** | 55.45 | 61.60 | 69.28 | 59.05 |-| SEL=16 adaptive(PLAN机制) | 61.08 | 55.41 | 61.22 | 69.29 | 58.41 |-| SEL=12 | 61.39 | 55.33 | 61.56 | 70.22 | 58.47 |-| SEL=20 | 61.31 | 55.42 | 61.03 | 69.77 | 59.03 |-| SEL=24 | 61.09 | 55.13 | 61.17 | 69.20 | 58.85 |+- (a) 实际 κ:p=+1 → κ_a=10.0、κ_b=39.8(无 clamp);p=−1 → κ_a=25.6、κ_b=6.4;p=−2 → κ_b 触 4 下限(clamp 命中 b)。+- (b) 被抽细胞在型轴 a→b 上的投影均值(z=0 在 m_a、z=1 在 m_b):sym(=sched p=0)z_a=0.0613、z_b=0.5122;p=+1 → z_a=0.0518、z_b=0.6446;p=−1 → z_a=0.0676、z_b=0.6754。两侧均确实移动,非零调度。注意权重 exp 内 clip(κz,±10):κ_b 增大反而扩大饱和平台使 z_b 回升——κ_b=16 恰在裁剪交互下的锐利点。+- (c) 被换细胞比例:sched p=±1 相对 sym 输出 ~4970–4990/5000 行不同(99%+)。+- (d) 四组分(A半,vs 父18 基线 61.35 = 55.45/61.60/69.28/59.05):+ | 配置 | 榜分 | cell_state | expr_change | shape | local |+ |---|---:|---:|---:|---:|---:|+ | sched p=+1(公式向) | 61.03 | 54.72 | 59.92 | 70.51 | 58.95 |+ | sched p=−1(动机向) | 60.79 | 53.89 | 60.60 | 69.69 | 58.97 |+ | shrink=0.075(型内坐标收缩) | 61.43 | 55.45 | 61.60 | 69.45 | 59.23 |+ | shrink=0.15 | 61.35 | 55.45 | 61.60 | 69.27 | 59.07 |+ | GAMMA=1.5 | 60.84 | 52.80 | 61.09 | 70.50 | 58.99 |+ | GAMMA=2.0 | 60.55 | 57.41 | 60.74 | 66.00 | 58.06 |+ | GAMMA=2.0 + GAMMA_RMS=1.75(解耦) | 61.04 | 57.41 | 60.74 | 67.95 | 58.06 | -- 组合相对父16(A半 61.04)+0.31,全部来自 shape_scale(68.06→69.28),其余三组逐位不变(t_eff 只动坐标缩放);相对节点17 A半(60.43)+0.92,来自 SEL。B 半官方分预期 ~62.3–62.4(父16 A→B 偏移 +1.03)。-- adaptive vs uniform:−0.27(de_direction 0.382→0.366,mmd_u 0.0107→0.0109),机制生效(99.4% 的行被换成不同细胞)但假设被否证:SNR 变异太小(乘子实际范围 0.53–1.20),把低 SNR 型的选择压平反而丢掉父节点验证过的增益。-- κ 细扫 12–20 平坦(61.31–61.39,差 <0.1 = 噪声),24 回落。保留父节点跨半验证过的 κ=16,不追 A 半 +0.05 的 κ=12 尖峰。+## mechanism_off_control -## 机制对照证据(mechanism_off_control)+`T2EI_KAPPA_MODE=sym`(提交默认)本地校验与父18输出**逐位一致**(X 与 spatial_3D 全等,seed 0);sched p=0 亦逐位一致。sched 开启后 cell_state/expression_change 变化 ≥0.7–2.2 分但方向为负,机制生效但假设被否证。 -- `T2EI_SEL_ADAPT=0`(提交默认)与 uniform κ=16 逐位相同(已本地验证);`=1` 改变 99.4% 被抽中细胞,四组分变化:cell_state −0.04、expr_change −0.38、shape +0.01、local −0.64(A半)。-- `T2EI_TEFF_MODE=off T2EI_DAMP=0.5` 逐位复现父节点 16 逻辑(target_rms 149.228 与父记录 149.2 一致);`T2EI_SEL=0`+t_eff 复现节点 17(A半 60.43 vs 官方 61.32,偏移与父16 A→B 一致)。-- 三层开关:选择层(SEL)、自适应层(SEL_ADAPT)、尺度层(TEFF_MODE/DAMP)各自独立可关。+## 结论与教训++- **非对称 κ 双向均被否证**:PLAN 公式向(b 侧更强)与动机向(a 侧更强)都低于对称 κ=16。原因:① 权重裁剪 clip(±10) 使大 κ 饱和成平台、选择反而变钝;② κ=16 对称点是该选择机制在裁剪交互下的实测最优,份额非对称(4:1)不构成修正理由。与父18「κ 12–20 平坦」一致:平坦区内改分配方式也无信号。+- **GAMMA=2.0 的 cell_state +1.96 不迁移**:expression_change/shape/local 合计 −3.2,RMS 解耦(GAMMA_RMS=1.75)只挽回 shape 1.9 分,净 −0.31。γ 与四组分存在权衡,1.75 是净最优附近。+- shrink 0.075 +0.08、0.15 +0.00,均 <1(噪声),不采用。+- 提交 = 父18 配置(sym 默认,所有新开关关闭),预期官方分 ≈62.38。 ## 验证过 / 没验证过 -- 验证过:默认参数输出与提交的 combo_s16 试跑逐位一致;seed 0 重跑逐位确定;seed 0/1/2 输出互异;vec-check 通过;n=5000、498 基因、~2s、纯 CPU;无括号退路(单输入→copy_last 分层抽样)不受本次改动影响,adaptive 不触发。-- 视图无关:只用时间差(t、t_draw、t_eff)与视图内数据,无绝对时间/路径/board 字段依赖。-- 没验证过:seed 1/2 查分(额度按 PLAN 限 6 次已用完);final 括号(E7.25+E8.0→?,t=1/3);SEL×GAMMA 交互。+- 验证过:默认输出与父18逐位一致;seed 0 重跑确定;seed 1 输出不同;无括号退路(单输入→copy_last 分层抽样)不受改动影响,选择层/收缩层不触发;视图无关(只用份额、时间差与视图内数据,无绝对时间/路径/board 依赖);vec-check 通过;~2s、纯 CPU。+- 没验证过:sched 在 seed 1/2 或 final 括号上的行为(A半两方向均 <−0.3,无跨 seed 复核价值);shrink 与 GAMMA 的交互。 - 知识来源:仅通用发育生物学(型内成熟度谱连续、坐标尺度随发育单调增长),无保留阶段/基因型信息,无外部数据。-- 查分:6/20。+- 查分:7/20(sched p=±1、shrink×2、GAMMA 1.5/2.0、解耦 GAMMA)。diff --git a/solution/README.md b/solution/README.mdindex f56ff54..6ea00ad 100644--- a/solution/README.md+++ b/solution/README.md@@ -1,3 +1,3 @@ # mix + 时间扭曲组成 + 成熟度选择 + t_eff 坐标尺度(T2:embryo:val_interp) -父节点16(mix, t_draw=t^1.75, SEL=16 成熟度选择)之上组合节点17的坐标尺度修正:target_rms 用 t_eff=(t+t_draw)/2、damp=0.60 插值。PLAN 的型内 SNR 自适应 κ 已实现(T2EI_SEL_ADAPT),实测 SNR CV=0.23<0.3 且对照降分,默认关闭。κ 细扫 {12,16,20,24} 平坦,保留 κ=16。纯 CPU ~2s。详见 METHOD.md。+父18 配置为提交默认(procrustes3d、t_draw=t^1.75、SEL=16 对称成熟度选择、t_eff=(t+t_draw)/2、damp=0.60)。本节点按 PLAN 实现 κ 份额调度层(T2EI_KAPPA_MODE=sched,T2EI_KAPPA_P),双向查分均降分(61.03 / 60.79 vs 61.35 A半),默认关闭;sym 模式与父18输出逐位一致。附加探索(SHRINK、GAMMA_RMS)亦无增益、默认关闭。纯 CPU ~2s。详见 METHOD.md。diff --git a/solution/run.py b/solution/run.pyindex 2c495ef..cd8c70b 100644--- a/solution/run.py+++ b/solution/run.py@@ -102,6 +102,18 @@ def _anchor_b_to_a(ca: np.ndarray, aligned_b: np.ndarray, labels_a: np.ndarray, SEL = float(os.environ.get("T2EI_SEL", "16")) SEL_ADAPT = os.environ.get("T2EI_SEL_ADAPT", "0") == "1"+# Constant-product kappa schedule (T2EI-05): kappa_s = SEL*(0.5/w_s)^P clamped+# to [0.25*SEL, 4*SEL], where w_s is that side's draw share this step+# (w_a = n_a/n, w_b = n_b/n from the warped quotas, including stratification).+# mode "sym" (default) keeps the uniform two-sided kappa=SEL and reproduces the+# parent submission bit-for-bit; mode "sched" activates the schedule.+KAPPA_MODE = os.environ.get("T2EI_KAPPA_MODE", "sym")+KAPPA_P = float(os.environ.get("T2EI_KAPPA_P", "1"))+# Mild within-type shrink of coordinates towards each drawn type's own centroid+# (expression-coordinate coupling kept row-wise; global RMS restored after).+SHRINK = float(os.environ.get("T2EI_SHRINK", "0"))+# Optional separate warp exponent for the coordinate-scale time (empty = use GAMMA).+GAMMA_RMS = os.environ.get("T2EI_GAMMA_RMS", "") def _rows(X, idx: np.ndarray) -> np.ndarray:@@ -142,6 +154,38 @@ def _adaptive_kappas(Xa, la: np.ndarray, Xb, lb: np.ndarray, means_a: dict, mean return {c: kappa_base * float(np.clip(snr[c] / med, 0.25, 2.0)) for c in snr} +def _drawn_axis_mean(X, drawn_labels: np.ndarray, means_self: dict, means_other: dict, cnt_self: dict, cnt_other: dict, self_is_a: bool) -> float:+ """Mean maturity position (units of the a->b type axis) of drawn cells.++ Both sides are measured on the canonical earlier->later axis d = m_b - m_a:+ z = (x.d - m_a.d)/|d|^2, so z=0 at the earlier-stage type mean and z=1 at+ the later-stage type mean. Cell-count weighted over shared types.+ """+ drawn_labels = np.asarray(drawn_labels).astype(str)+ num = 0.0+ den = 0+ for c in sorted(set(means_self) & set(means_other)):+ if cnt_self.get(c, 0) < MIN_TYPE_CELLS or cnt_other.get(c, 0) < MIN_TYPE_CELLS:+ continue+ idx = np.flatnonzero(drawn_labels == c)+ if idx.size == 0:+ continue+ if self_is_a:+ d = (means_other[c] - means_self[c]).astype(np.float64)+ base = float(np.asarray(means_self[c], dtype=np.float64) @ d)+ else:+ d = (means_self[c] - means_other[c]).astype(np.float64)+ base = float(np.asarray(means_other[c], dtype=np.float64) @ d)+ nrm = float(d @ d)+ if nrm < 1e-9:+ continue+ rows = _rows(X, idx)+ z = (rows @ d - base) / nrm+ num += float(z.sum())+ den += int(idx.size)+ return num / den if den else 0.0++ def _weighted_stratified(labels: np.ndarray, n: int, rng: np.random.Generator, weights: np.ndarray) -> np.ndarray: """Same allocation as stratified_choice, but within-type draws use per-cell weights.""" labels = np.asarray(labels).astype(str)@@ -213,6 +257,8 @@ def _selection_weights(X, labels: np.ndarray, means_self: dict, means_other: dic def mix_type_shift(stage_a, stage_b, t: float, params: dict, alpha: float, gamma: float = 1.0, rms_warp: bool = False, b_anchor: bool = False): t = float(t) t_draw = float(np.clip(t ** gamma, 0.0, 1.0)) if gamma != 1.0 else t+ gamma_rms = float(GAMMA_RMS) if GAMMA_RMS else gamma+ t_draw_rms = float(np.clip(t ** gamma_rms, 0.0, 1.0)) if gamma_rms != 1.0 else t damp = float(DAMP) if DAMP else float(params.get("scale_damp", 1.0)) align = str(params.get("align", "procrustes")) rng = np.random.default_rng(int(params.get("seed", 0)))@@ -221,12 +267,12 @@ def mix_type_shift(stage_a, stage_b, t: float, params: dict, alpha: float, gamma rms_a = rms_radius(stage_a.coords) rms_b = rms_radius(stage_b.coords) if rms_warp:- t_rms = t_draw+ t_rms = t_draw_rms elif TEFF_MODE == "mid": # Coordinate-scale time sits halfway between the true target time and the # warped composition time: the drawn cloud is composition-shifted towards # stage a, so its RMS should not follow the full linear-t interpolation.- t_rms = 0.5 * (t + t_draw)+ t_rms = 0.5 * (t + t_draw_rms) else: t_rms = t target_rms = log_interp(rms_a, rms_b, t_rms, damp)@@ -246,15 +292,37 @@ def mix_type_shift(stage_a, stage_b, t: float, params: dict, alpha: float, gamma means_b = type_means(stage_b.X, lb_s) n_b = int(np.clip(int(round(t_draw * n)), 0, n)) n_a = int(n) - n_b+ w_a = n_a / max(int(n), 1)+ w_b = n_b / max(int(n), 1) if SEL_ADAPT: kap = _adaptive_kappas(stage_a.X, la_s, stage_b.X, lb_s, means_a, means_b, cnt_a, cnt_b, SEL) ka, kb = kap, {c: -v for c, v in kap.items()}+ elif KAPPA_MODE == "sched":+ lo, hi = 0.25 * SEL, 4.0 * SEL+ kap_a_raw = SEL * (0.5 / max(w_a, 1e-9)) ** KAPPA_P+ kap_b_raw = SEL * (0.5 / max(w_b, 1e-9)) ** KAPPA_P+ kap_a = float(np.clip(kap_a_raw, lo, hi))+ kap_b = float(np.clip(kap_b_raw, lo, hi))+ ka, kb = kap_a, -kap_b else: ka, kb = SEL, -SEL wa = _selection_weights(stage_a.X, la_s, means_a, means_b, cnt_a, cnt_b, ka, SEL, True) wb = _selection_weights(stage_b.X, lb_s, means_b, means_a, cnt_b, cnt_a, kb, -SEL, False) ia = _weighted_stratified(la_s, n_a, rng, wa) ib = _weighted_stratified(lb_s, n_b, rng, wb)+ if KAPPA_MODE == "sched":+ za = _drawn_axis_mean(stage_a.X[ia], la_s[ia], means_a, means_b, cnt_a, cnt_b, True)+ zb = _drawn_axis_mean(stage_b.X[ib], lb_s[ib], means_b, means_a, cnt_b, cnt_a, False)+ clamp_hit = [+ side for side, raw in (("a", kap_a_raw), ("b", kap_b_raw))+ if raw < 0.25 * SEL or raw > 4.0 * SEL+ ]+ print(json.dumps({+ "kappa_mode": "sched", "kappa_p": KAPPA_P,+ "w_a": w_a, "w_b": w_b,+ "kappa_a": ka, "kappa_b": kap_b, "clamp_hit": clamp_hit,+ "drawn_z_a": za, "drawn_z_b": zb,+ }, default=float), file=sys.stderr) else: ia, ib = mix_indices(stage_a.labels, stage_b.labels, t_draw, n, rng) @@ -310,6 +378,17 @@ def mix_type_shift(stage_a, stage_b, t: float, params: dict, alpha: float, gamma else: coords = np.vstack([p for p in (ca[ia], cb[ib]) if len(p)]) coords = _jitter(coords, rng)+ if SHRINK > 0.0:+ lab_e = np.concatenate([+ np.asarray(stage_a.labels).astype(str)[ia],+ np.asarray(stage_b.labels).astype(str)[ib],+ ])+ s = float(np.clip(SHRINK, 0.0, 0.5))+ for c in np.unique(lab_e):+ m = lab_e == c+ if m.sum() >= 2:+ cent = coords[m].mean(axis=0)+ coords[m] = cent + (1.0 - s) * (coords[m] - cent) coords = scale_to_rms(coords, target_rms) info.update( t=t,
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| 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 |
| k026 | Canonicalise predicted 3D coordinates before submission | notes/pitfalls/04_scorer_invariance.md |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父18基座上实现了 PLAN 的 κ 份额调度(T2EI_KAPPA_MODE=sched,κ_s=16·(0.5/w_s)^p,clamp[4,64])及两个附加开关(SHRINK 型内坐标收缩、GAMMA_RMS 解耦);A半双向查分均降分,全部默认关闭,提交配置与父18逐位一致(sym 模式已本地校验全等)。 |
|---|---|
| 各组分数的变化 | cell_state:官方 56.78,Δ+0.00;A半 proxy 上 sched p=+1 −0.73(55.45→54.72)、p=−1 −1.56(→53.89),双向均变坏 expression_change:官方 61.99,Δ+0.00(提交=父18,逐位一致);A半 proxy 上 sched p=+1 −1.68、p=−1 −1.00 local_spatial:官方 60.65,Δ+0.00;A半各配置变化 ≤0.2,噪声内 shape_scale:官方 70.09,Δ+0.00;A半 sched p=+1 +1.23、p=−1 +0.41,无净收益 |
| family_id | T2EI-05 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 是 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 3 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 3 次:bash 2、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 13,109 · 输出 1,176 · 思考 442 |
| 任务(第一行) | 分析节点 n20 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/analyst.jsonl 9 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 32 |
| 工具调用 | 共 40 次:bash 25、edit 12、write 2、read 1 |
| 用时 | 15 分 |
| token 数 | 输入 63,949 · 输出 9,624 · 思考 12,210 |
| 任务(第一行) | 按计划修改程序:成熟度选择非对称化:κ 按两侧抽样份额反比调度(constant-product schedule) |
| 最后的回答(摘录) | **完成。** 做了什么:按 PLAN 在父18上实现成熟度选择的非对称化(κ_s=16·(0.5/w_s)^p,clamp [4,64],`T2EI_KAPPA_MODE=sched`)。PLAN 的公式向与动机向自相矛盾,故双向各查一次。 **查分(A半,父18基线 61.35,用 7/20)**:sched p=+1 → 61.03(cell_state 54.72↓)、p=−1 → 60.79(53.89↓)——非对称 κ 双向均被否证;机制确实生效(κ_a/κ_b=10/40 与 26/6,99% 行被换,drawn_z 两侧均移动),但权重内 clip(±10) 使大 κ 饱和变钝,对称 κ=16 恰是最优点。附加探索:型内坐标收缩 +0.08(噪声)、GAMMA=2.0 的 cell_state +1.96 被其余三组 −3.2 抵消(RMS 解耦后仍 −0.31)。提交默认 = sym,与父18逐位一致,vec-check 通过,预期官方 ≈62.38。 **下一步最值得试**:cell_state 对 t_draw 敏感但与 expression/shape/local 强权衡(γ=2.0:+1.96/−3.2),单独调 γ 已到头;更有希望的是打破权衡本身——如仅对共有型的 b 侧细胞做组成内的"成熟度加权重采样"同时保持整体配额与坐标尺度不变,或转向 local_spatial(60.65,从未被针对性优化过)。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/engineer.jsonl 167 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 1 分 |
| token 数 | 输入 12,420 · 输出 1,330 · 思考 2,500 |
| 任务(第一行) | 为节点 n20(改进,父节点 n18)写改进计划 PLAN.json |
| 最后的回答(摘录) | 99/60.65/70.09),且自节点16以来未再提升。父16的 SEL 机制假设是'让 a 端抽超前细胞、b 端抽落后细胞以把混合表达拉向目标时刻',但 κ=16 对两侧一视同仁,而 t_draw=t^1.75 使两侧份额极不对称(节点15记录:a 端 3994 vs b 端 1006,约 4:1):b 端每个被抽中细胞对混合的贡献约 4 倍于 a 端,却承受同样的选择强度——过选会放大 b 端极端细胞的噪声,a 端则选择不足。这是选择机制内部的结构性失配,不是调参:修正后 κ_a≈64、κ_b≈4(t=0.5),且 κ 在 12–20 区间实测平坦(父18),说明平坦区内改变'分配方式'比改变'总量'更可能有信号。已否证方向不重复:型内 SNR 自适应 κ(SNR CV=0.23)、型均值表达位移 α>0(单调降分)均不采用。",
"approach": "基座=父18 提交配置(procrustes3d、GAMMA=1.75、t_eff=mid、DAMP=0.60、uniform κ=16),只改选择层:新增环境变量 T2EI_KAPPA_MODE∈{sym(默认,逐位复现父18),sched} 与 T2EI_KAPPA_P(初值1,搜索{0.5,1,1.5})。sched 模式:κ_a=16·(0.5/w_a)^p、κ_b=16·(0.5/w_b)^p,w_s 为该侧本步抽样份额(w_a=1−t_draw,含分层配额),并复用父18已有的 clamp(·,0.25×16,4×16) 安全界;κ 只决定型内沿型轴 a→b 抽哪一端的多,不改配额、不改任何表达值、不动坐标。单输入阶段退路不变(无括号→copy_last 分层抽样,选择层不触发)。查分流程:① 先在 n=1500 子采样上各跑一次确认实现无回归(不查分);② vec-score 查 sched p=1(1次);③ 若 Δcell_state≥1 再查 p∈{0.5,1.5}(≤2次);④ 任何候选若 A 半领先 <1 分(=T2 噪声),换 seed 重查一次确认,不追尖峰;⑤ 最后跑 sym 对照确认与父18逐位一致(1次)。总查分预算 ≤8/20。视图无关:只用份额与型轴,无绝对时间/路径依赖。",
"expected_groups": ["cell_state", "expression_change"],
"risks": "① κ 平坦区(12–20)意味着选择强度本身不敏感,非对称化也可能无信号——第②步一次查分即可判定,Δcell_state<1 即止损,只提交 sym 对照;② b 端 κ 降到 4 等于放弃 b 端选择,若 b 端选择恰是当前增益主来源,会掉分——对照表里保留 p=0.5(κ_b≈11)区分;③ 份额随 t 变化,若本板 t 使 clamp 频繁触顶则调度退化为常数——Engineer 先打印 κ_a/κ_b 实际值;④ A/B 半偏移:沿用父18 经验(A→B 约 +1),只信分组方向与 ≥噪声的差值。",
"family_id": "T2EI-05",
"mechanism": "把固定 κ=16 换成按两侧抽样份额反比的常数积调度 κ_s=κ0·(0.5/w_s)^p:份额小的一侧选择更强、份额大的一侧选择更弱,使'每个被抽细胞携带的成熟度偏移量×其混合权重'在两侧均衡,只改抽中哪些真实细胞。",
"vs_constant_shift": "不移动任何细胞的表达或坐标(α 型位移已被否证且关闭);机制作用于'从真实细胞池里选谁',且 κ 随时间/份额变化,不是每型一个常数位移,也不是全局组成重加权(两侧配额与细胞数逐位不变)。",
"mechanism_evidence": "Engineer 打印:(a) 本步 κ_a、κ_b 实际值及 clamp 命中情况;(b) sched vs sym 下被抽细胞在型轴上的投影均值之差(a 端应更靠前、b 端应更靠后,且两侧加权后的平均成熟度更接近 t_draw 对应位置);(c) 被换掉的细胞比例;(d) 四组分逐项对比,重点看 cell_state/expression_change 是否同向。若 (b) 差值≈0 说明调度未运行。",
"mechanism_off_control": "T2EI_KAPPA_MODE=sym(或 p=0)即回到双侧 κ=16:要求与父18提交输出逐位一致(seed 0 本地校验,不耗查分);预期 sched 开启后 cell_state/expression_change 变化 ≥1 分(噪声),其余两组在噪声内;若 sched 与 sym 逐位相同则机制未生效,需查份额计算。",
"sources": []}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/researcher.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 7 |
| 工具调用 | 共 11 次:read 7、bash 3、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 24,141 · 输出 1,539 · 思考 2,149 |
| 任务(第一行) | 审查节点 n20 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/reviewer.jsonl 109 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/20/reviewer.stderr |