总览 · ← 返回运行 20261003-004922-search-t2-embryo-interp-g24-D
节点 n18
组合父16成熟度选择(κ=16)与节点17坐标尺度修正(t_eff=(t+t_draw)/2, damp=0.60);PLAN型内SNR自适应κ已实现并对照,实测有害且SNR CV=0.23<0.3,按PLAN风险条款默认关闭。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-004922-search-t2-embryo-interp-g24-D |
|---|---|
| 父节点 | n16 |
| 子节点 | n20 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 62.38(+0.3) · proxy 62.38(+0.3) · 3 次复测均分 62.05 |
| 审查 | 通过 1 越界读取:未发现问题。run.py 只经 src.task2_spatial.view_io 的 load_manifest/interp_bracket/read_stage 读取 manifest['inputs'] 给出的阶段(E6.75/E8.0),无绝对路径、..、/mnt、/home、data/raw、downloads、打分器或 src/common/evaluation 路径,无联网代码。; 2 硬编码目标统计量:未发现问题。常量仅为标量超参(GAMMA=1.75、SEL=16、DAMP=0.60、MIN_TYPE_CELLS=10、clip ±10,run.py:39-… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 19 分 |
| 程序版本 | 8169a47fc573d032c4479234959d15ec7ff0b769 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 8169a47fc5:solution/METHOD.md
组合父16成熟度选择(κ=16)与节点17坐标尺度修正(t_eff=(t+t_draw)/2, damp=0.60);PLAN型内SNR自适应κ已实现并对照,实测有害且SNR CV=0.23<0.3,按PLAN风险条款默认关闭。
方法(family T2EI-05:实现与偏离)
基座 = 父节点 16:procrustes3d 对齐、t_draw=t^1.75 时间扭曲分层混抽真实细胞(表达+坐标同行)、成熟度选择 SEL=16(a 端偏向沿型轴 a→b 超前的细胞、b 端偏向落后的细胞,只改抽中哪些细胞、不改任何表达值)。本节点改动:
- 步骤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(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:κ_base 细扫 {12,16,20,24}(PLAN 风险条款指定的替代方向)。
结果(proxy A 半,seed 0,GAMMA=1.75,t_eff/damp0.60 基座)
| 配置 | 榜分 | 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 |
- 组合相对父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)
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)各自独立可关。
验证过 / 没验证过
- 验证过:默认参数输出与提交的 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 交互。
- 知识来源:仅通用发育生物学(型内成熟度谱连续、坐标尺度随发育单调增长),无保留阶段/基因型信息,无外部数据。
- 查分:6/20。
调研员的计划
| 名称 | SEL+t_eff组合加型内SNR自适应κ成熟度选择 |
|---|---|
| 动机 | 父节点16的cell_state=56.78仍是最弱组;κ=32回落(61.04→60.60)说明全局κ在低信噪比型上过选。节点17的t_eff=(t+t_draw)/2+damp=0.60在shape_scale上+1.22(69.03→70.25),与SEL正交(一个改选哪些细胞,一个改坐标缩放),但两者从未组合。组合后基线预计~62.5-63;在此基础上加型内自适应κ攻cell_state。 |
| 做法 | 步骤1(~8min):在父节点16代码上加入节点17的RMS缩放改动:T2EI_TEFF_MODE='mid'即t_eff=(t+t_draw)/2,scale_damp=0.60。SEL=16、GAMMA=1.75不变。vec-score验证,预期shape_scale从68.87升至~70,其余组不变。步骤2(~12min):实现型内自适应κ。对每个两端共有型c(≥10细胞):(a)算轴d_c=m_b(c)-m_a(c);(b)将该型在两阶段的所有细胞投影到d_c,算型内投影标准差σ_c;(c)SNR_c=|d_c|/σ_c;(d)κ_c=κ_base×clamp(SNR_c/median(SNR), 0.25, 2.0)。用κ_c替代全局κ计算选择权重。κ_base初值16。环境变量T2EI_SEL_ADAPT=1启用,=0时退化为全局κ=16(逐位复现步骤1)。步骤3(~8min):vec-score查分,比较adaptive vs uniform。若adaptive有效,试κ_base∈{20,24}(最多再查2次)。总查分预算≤6次。单输入阶段退路:无括号时取最近单阶段,自适应κ不触发(只有一端),等价于均匀抽样。 |
| 风险 | 1) 若所有型的SNR接近(变异系数<0.3),自适应κ退化为全局κ,无增益——Engineer先打印SNR分布,若CV<0.3则跳过步骤2,把剩余时间用于κ_base细扫{12,16,20,24}。2) t_eff/damp与SEL可能有微弱交互(坐标缩放改变型质心位置,影响z投影)——步骤1先验证组合基线与预期一致。3) 30分钟很紧:若步骤1耗时超预期,砍步骤2,只提交组合基线。4) 自适应κ可能反而在低SNR型上选到噪声细胞——设κ下限0.25×κ_base=4,不会完全关闭选择。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 907b2c5da5。改动的文件:solution/METHOD.md +26 −22、solution/README.md +2 −4、solution/run.py +66 −8
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 6075488..224b823 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,34 +1,38 @@-mix+扭曲组成之上加"成熟度选择":按 t_draw=t^1.75 分层抽取时,a 端偏向沿型 a→b 轴更超前的细胞、b 端偏向更落后的细胞(SEL=16,只选细胞不改表达),PLAN 的 RMS 扭曲已实现但对照证明有害,默认关闭。+组合父16成熟度选择(κ=16)与节点17坐标尺度修正(t_eff=(t+t_draw)/2, damp=0.60);PLAN型内SNR自适应κ已实现并对照,实测有害且SNR CV=0.23<0.3,按PLAN风险条款默认关闭。 -## 方法(family T2EI-05 的实现与偏离)+## 方法(family T2EI-05:实现与偏离) -基座 = 父节点 12:procrustes3d 对齐、scale_damp=0.5、target_rms=log 线性、t_draw=t^GAMMA (GAMMA=1.75) 分层混抽真实细胞(表达+坐标同行)。本节点新增:+基座 = 父节点 16:procrustes3d 对齐、t_draw=t^1.75 时间扭曲分层混抽真实细胞(表达+坐标同行)、成熟度选择 SEL=16(a 端偏向沿型轴 a→b 超前的细胞、b 端偏向落后的细胞,只改抽中哪些细胞、不改任何表达值)。本节点改动: -1. **PLAN 机制(T2EI_RMS_WARP,默认 0=关闭)**:target_rms 用 t_draw 而非 t 插值。对照结果:off 60.12(与父逐位相同)vs on **58.06**(shape_scale 67.9→59.7,scale_log_ratio +0.016→−0.081)。机制生效(target_rms 149.2→135.4,更靠近 rms_a=122.7)但假设被否证:真实目标 RMS≈147,父节点 damp=0.5 已近最优,shape_scale 的损失来自 d2_shape(点云形状,0.006→0.029),不是尺度失配。按 PLAN 风险条款回退。-2. **成熟度选择(T2EI_SEL,默认 16,提交生效的机制)**:对两端共有型(各 ≥10 细胞),算型轴 d_c=m_b(c)−m_a(c),a 端细胞权重 exp(+κ·z)、b 端 exp(−κ·z),z=(x−m_self)·d/|d|²,按权重做同配额分层无放回抽样(配额与父节点 stratified_choice 完全一致,只改型内选哪些细胞)。**不改任何表达值**,保持型内真实多样性——与父节点已否证的 alpha 型均值位移本质不同。依据是通用谱系知识:中间时刻每个型横跨一段成熟度谱,应偏向谱的中间段。-3. 另试并放弃(各 1 次查分,均默认关闭):b 端按型锚回 a 端领地(B_ANCHOR,59.22,d2_shape 反升 0.042);表达组成与坐标组成解耦(COORD_T,坐标用线性 t 混、按型配对:d2_shape 修复 0.029→0.008 但 neighborhood_mmd 0.053→0.101,总分 55.1,证明表达-坐标耦合不能拆)。+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 风险条款指定的替代方向)。 -## 结果(proxy A 半,seed 0,GAMMA=1.75 固定)+## 结果(proxy A 半,seed 0,GAMMA=1.75,t_eff/damp0.60 基座) -| SEL (κ) | 榜分 | cell_state | expr_change | shape | local_spatial |+| 配置 | 榜分 | cell_state | expr_change | shape_scale | local_spatial | |---|---:|---:|---:|---:|---:|-| 0(=父节点,逐位相同) | 60.12 | 53.27 | 60.27 | 67.91 | 59.04 |-| 2 | 60.21 | 52.80 | 60.29 | 69.27 | 58.50 |-| 4 | 60.43 | 54.37 | 60.22 | 68.41 | 58.71 |-| 8 | 60.72 | 54.81 | 61.41 | 68.22 | 58.45 |-| **16(提交)** | **61.04** | **55.45** | **61.60** | 68.06 | 59.05 |-| 32 | 60.60 | 54.71 | 60.68 | 68.60 | 58.40 |+| 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 | -κ=16 峰:mmd_u 0.0113→0.0107、de_direction 0.354→0.382、variogram 微降,d2_shape 略好(0.0287→0.0257)。+- 组合相对父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) -- off(SEL=0)与父节点 12 输出**逐位相同**(X 与 spatial_3D 全等,已本地验证);on(SEL=16)改变了型内被抽中的细胞(同配额、不同个体),四组分变化:cell_state +2.2、expression_change +1.3、local_spatial 0.0、shape_scale +0.15(A 半)。-- 局限:A 半增益 +0.9(60.12→61.04)在 T2 噪声(~1)边缘,但 κ 曲线 2→16 单调、各组方向一致,且机制只重排真实细胞、不引入新自由度,迁移风险低。未跑 seed 1/2(时限 30 分钟用尽);未验证 final 括号(t=1/3, t_draw=0.146),逻辑与 t 单调相关、视图无关(只用时间差与视图内数据,无绝对时间/路径依赖)。+- `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)各自独立可关。 ## 验证过 / 没验证过 -- 验证过:默认参数输出与 SEL=16 试跑逐位一致;SEL=0 逐位复现父节点;vec-check 通过;n=5000、498 基因、~2s、纯 CPU、seed 确定(default_rng(seed))。-- 没验证过:seed 1/2 复跑;final 括号;SEL×GAMMA 交互(GAMMA 固定 1.75,κ 增大后最优 GAMMA 可能略移)。-- 知识来源:仅通用发育生物学(型内成熟度谱系连续),无保留阶段/基因型信息,无外部数据,无 prior 文件。-- 查分:9/20。+- 验证过:默认参数输出与提交的 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 交互。+- 知识来源:仅通用发育生物学(型内成熟度谱连续、坐标尺度随发育单调增长),无保留阶段/基因型信息,无外部数据。+- 查分:6/20。diff --git a/solution/README.md b/solution/README.mdindex f47a3a9..f56ff54 100644--- a/solution/README.md+++ b/solution/README.md@@ -1,5 +1,3 @@-# mix + 时间扭曲组成(T2:embryo:val_interp)+# mix + 时间扭曲组成 + 成熟度选择 + t_eff 坐标尺度(T2:embryo:val_interp) -父节点 2(mix,A半 56.42)之上把抽取比例从线性 t 改为 `t_draw = t^1.75`:坐标、RMS 缩放、细胞数、表达逻辑逐位沿用,只把混抽组成拉向早端括号阶段。proxy A半 60.12(seed 0/1/2 = 60.12/59.72/59.63),cell_state 36→53,local_spatial 54→59,代价 shape_scale 75→68。-PLAN 的型均值表达位移(T2EI-01)已实现(`T2EI_ALPHA` 开关,默认 0):对照实测 alpha=0.5/1.0 把榜分打到 52.8/48.4,cell_state 反而降,故关闭;证据与四组分见 METHOD.md。-无括号时退路 = 父节点 copy_last 逻辑。纯 CPU,~2s,5000 细胞 × 498 基因。+父节点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。diff --git a/solution/run.py b/solution/run.pyindex 5b3e60d..2c495ef 100644--- a/solution/run.py+++ b/solution/run.py@@ -62,7 +62,8 @@ def _pair_by_label(labels_expr: np.ndarray, labels_coord: np.ndarray, rng: np.ra rng.shuffle(rem_coord) perm[rem_expr] = rem_coord[: rem_expr.size] return perm-DAMP = os.environ.get("T2EI_DAMP", "")+DAMP = os.environ.get("T2EI_DAMP", "0.60")+TEFF_MODE = os.environ.get("T2EI_TEFF_MODE", "mid") def _anchor_b_to_a(ca: np.ndarray, aligned_b: np.ndarray, labels_a: np.ndarray, labels_b: np.ndarray, target_rms: float, rms_b: float) -> np.ndarray:@@ -100,6 +101,45 @@ 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"+++def _rows(X, idx: np.ndarray) -> np.ndarray:+ sub = X[idx]+ return np.asarray(sub.todense() if hasattr(sub, "todense") else sub, dtype=np.float64)+++def _adaptive_kappas(Xa, la: np.ndarray, Xb, lb: np.ndarray, means_a: dict, means_b: dict, cnt_a: dict, cnt_b: dict, kappa_base: float) -> dict:+ """Per-type selection strength kappa_c = kappa_base * clamp(SNR_c / median(SNR), 0.25, 2.0).++ SNR_c = |m_b(c) - m_a(c)| / pooled within-stage std of the projection of the+ type's cells (both stages) onto the type axis d_c. Types whose developmental+ axis is clear relative to within-type scatter get sharper selection; noisy+ axes get flatter selection, avoiding over-selection on low-SNR types.+ Uses only view data and general lineage-continuity knowledge.+ """+ shared = [+ c for c in sorted(set(means_a) & set(means_b))+ if cnt_a.get(c, 0) >= MIN_TYPE_CELLS and cnt_b.get(c, 0) >= MIN_TYPE_CELLS+ ]+ snr: dict = {}+ for c in shared:+ d = (means_b[c] - means_a[c]).astype(np.float64)+ nrm = float(np.linalg.norm(d))+ if nrm < 1e-9:+ continue+ u = d / nrm+ pa = _rows(Xa, np.flatnonzero(la == c)) @ u+ pb = _rows(Xb, np.flatnonzero(lb == c)) @ u+ na, nb = pa.size, pb.size+ va = pa.var(ddof=1) if na > 1 else 0.0+ vb = pb.var(ddof=1) if nb > 1 else 0.0+ pooled = np.sqrt(((na - 1) * va + (nb - 1) * vb) / max(na + nb - 2, 1))+ snr[c] = nrm / max(pooled, 1e-9)+ if not snr:+ return {}+ med = float(np.median(list(snr.values())))+ return {c: kappa_base * float(np.clip(snr[c] / med, 0.25, 2.0)) for c in snr} def _weighted_stratified(labels: np.ndarray, n: int, rng: np.random.Generator, weights: np.ndarray) -> np.ndarray:@@ -137,7 +177,7 @@ def _weighted_stratified(labels: np.ndarray, n: int, rng: np.random.Generator, w return np.concatenate(picks) -def _selection_weights(X, labels: np.ndarray, means_self: dict, means_other: dict, cnt_self: dict, cnt_other: dict, kappa: float, toward_other_is_advanced: bool) -> np.ndarray:+def _selection_weights(X, labels: np.ndarray, means_self: dict, means_other: dict, cnt_self: dict, cnt_other: dict, kappa, kappa_base: float, toward_other_is_advanced: bool) -> np.ndarray: """Weight cells by their position along their type's a->b axis. a-side cells ahead of their type mean (towards the later stage) get higher@@ -163,9 +203,10 @@ def _selection_weights(X, labels: np.ndarray, means_self: dict, means_other: dic if nrm < 1e-9: continue base = float(np.asarray(means_self[c], dtype=np.float64) @ d)- rows = np.asarray(X[idx].todense() if hasattr(X[idx], "todense") else X[idx], dtype=np.float64)+ rows = _rows(X, idx) z = (rows @ d - base) / nrm- w[idx] = np.exp(np.clip(kappa * z, -10.0, 10.0))+ k_c = float(kappa.get(c, kappa_base)) if isinstance(kappa, dict) else float(kappa)+ w[idx] = np.exp(np.clip(k_c * z, -10.0, 10.0)) return w @@ -179,7 +220,16 @@ def mix_type_shift(stage_a, stage_b, t: float, params: dict, alpha: float, gamma aligned_a, aligned_b, info = align_pair(stage_a.coords, stage_b.coords, stage_a.labels, stage_b.labels, align) rms_a = rms_radius(stage_a.coords) rms_b = rms_radius(stage_b.coords)- target_rms = log_interp(rms_a, rms_b, t_draw if rms_warp else t, damp)+ if rms_warp:+ t_rms = t_draw+ 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)+ else:+ t_rms = t+ target_rms = log_interp(rms_a, rms_b, t_rms, damp) ca = scale_to_rms(aligned_a, target_rms) if b_anchor: cb, n_anchored = _anchor_b_to_a(ca, aligned_b, stage_a.labels, stage_b.labels, target_rms, rms_b)@@ -196,8 +246,13 @@ 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- wa = _selection_weights(stage_a.X, la_s, means_a, means_b, cnt_a, cnt_b, SEL, True)- wb = _selection_weights(stage_b.X, lb_s, means_b, means_a, cnt_b, cnt_a, -SEL, False)+ 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()}+ 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) else:@@ -270,6 +325,9 @@ def mix_type_shift(stage_a, stage_b, t: float, params: dict, alpha: float, gamma n_anchored=int(n_anchored), damp=damp, t_draw=t_draw,+ t_rms=t_rms,+ sel=int(SEL),+ sel_adapt=int(SEL_ADAPT), n_from_a=int(ia.size), n_from_b=int(ib.size), n_coord_from_b=n_coord_from_b,@@ -315,7 +373,7 @@ def main() -> None: stage_b = read_stage(args.data, b, genes) params = board_params(manifest, "mix", PARAMS, args.seed) expr, coords, info = mix_type_shift(stage_a, stage_b, t, params, ALPHA, GAMMA, RMS_WARP, B_ANCHOR)- keep = {k: info.get(k) for k in ("t", "t_draw", "gamma", "rms_warp", "target_rms", "n", "rms_a", "rms_b", "out_rms", "n_shared_types", "z_dot", "z_flipped", "align", "alpha", "n_types_shifted", "delta_norm_min", "delta_norm_med", "delta_norm_max", "cos_ab_before", "cos_to_mid_after", "n_from_a", "n_from_b")}+ keep = {k: info.get(k) for k in ("t", "t_draw", "t_rms", "gamma", "rms_warp", "damp", "sel", "sel_adapt", "target_rms", "n", "rms_a", "rms_b", "out_rms", "n_shared_types", "z_dot", "z_flipped", "align", "alpha", "n_types_shifted", "delta_norm_min", "delta_norm_med", "delta_norm_max", "cos_ab_before", "cos_to_mid_after", "n_from_a", "n_from_b")} 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 |
| k026 | Canonicalise predicted 3D coordinates before submission | notes/pitfalls/04_scorer_invariance.md |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父节点16(t_draw=t^1.75 混抽 + SEL=16 成熟度选择)之上组合节点17的坐标尺度修正:target_rms 插值时间改为 t_eff=(t+t_draw)/2、damp 0.5→0.60(提交生效);另按 PLAN 实现型内 SNR 自适应 κ(T2EI_SEL_ADAPT),实测降分且 SNR CV=0.23<0.3,默认关闭。 |
|---|---|
| 各组分数的变化 | cell_state:不变(+0.00,56.78)——PLAN 期望 adaptive κ 提升此组,但该机制被关闭,未产生官方可见效果 expression_change:不变(+0.00,61.99),与 t_eff 只动坐标缩放的预期一致 local_spatial:不变(+0.00,60.65) shape_scale:变好(+1.22,68.87→70.09),略超 T2 噪声(~1),与步骤1预测的 ~70 一致,来自 t_eff/damp 修正(off 对照逐位复现父16) |
| 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,280 · 输出 1,032 · 思考 1,457 |
| 任务(第一行) | 分析节点 n18 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/analyst.jsonl 10 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 25 |
| 工具调用 | 共 26 次:bash 14、edit 9、read 1、todowrite 1、write 1 |
| 用时 | 16 分 |
| token 数 | 输入 59,698 · 输出 9,782 · 思考 13,264 |
| 任务(第一行) | 按计划修改程序:SEL+t_eff组合加型内SNR自适应κ成熟度选择 |
| 最后的回答(摘录) | **做了什么**:在父节点 16(mix + t_draw=t^1.75 + 成熟度选择 SEL=16)上组合节点 17 的坐标尺度修正(t_eff=(t+t_draw)/2,damp=0.60),并按 PLAN 实现了型内 SNR 自适应 κ(T2EI_SEL_ADAPT 开关,off=逐位复现组合基线)。SNR 诊断 CV=0.23<0.3 命中 PLAN 风险条款,adaptive 实测反而降分,默认关闭;κ_base 细扫 {12,16,20,24} 平坦(61.39/61.35/61.31/61.09),保留 κ=16。
**查分(A 半,6/20)**:组合基线 61.35(父 61.04,shape_scale 68.06→69.28,其余组不变);adaptive κ 61.08(否证);SEL=0+t_eff 60.43(复现节点 17 的 A 半)。vec-check 通过,seed 确定,clean-env 逐位一致,~2s 纯 CPU。
**下一步最值得试**:SEL×GAMMA 二维小网格(κ 增大后最优 GAMMA 可能右移);shape_scale 剩余损失在 d2_shape(0.026),可试保持表达-坐标同行耦合下的型内向质心轻微收缩(0.05–0.1);κ=12 的 shape 70.22 尖峰值得在 seed 1/2 上复核后再决定是否切换。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/engineer.jsonl 147 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 2 分 |
| token 数 | 输入 11,920 · 输出 1,169 · 思考 4,915 |
| 任务(第一行) | 为节点 n18(改进,父节点 n16)写改进计划 PLAN.json |
| 最后的回答(摘录) | ale +1.22) are orthogonal and uncombined
- **Structural gap**: global κ=16 over-selects in noisy-axis types (κ=32 drops to 60.60); per-type adaptive strength is the fix
- **Failed approaches to avoid**: alpha displacement, RMS warp, B_ANCHOR, COORD_T
```json
{
"name": "SEL+t_eff组合加型内SNR自适应κ成熟度选择",
"motivation": "父节点16的cell_state=56.78仍是最弱组;κ=32回落(61.04→60.60)说明全局κ在低信噪比型上过选。节点17的t_eff=(t+t_draw)/2+damp=0.60在shape_scale上+1.22(69.03→70.25),与SEL正交(一个改选哪些细胞,一个改坐标缩放),但两者从未组合。组合后基线预计~62.5-63;在此基础上加型内自适应κ攻cell_state。",
"approach": "步骤1(~8min):在父节点16代码上加入节点17的RMS缩放改动:T2EI_TEFF_MODE='mid'即t_eff=(t+t_draw)/2,scale_damp=0.60。SEL=16、GAMMA=1.75不变。vec-score验证,预期shape_scale从68.87升至~70,其余组不变。步骤2(~12min):实现型内自适应κ。对每个两端共有型c(≥10细胞):(a)算轴d_c=m_b(c)-m_a(c);(b)将该型在两阶段的所有细胞投影到d_c,算型内投影标准差σ_c;(c)SNR_c=|d_c|/σ_c;(d)κ_c=κ_base×clamp(SNR_c/median(SNR), 0.25, 2.0)。用κ_c替代全局κ计算选择权重。κ_base初值16。环境变量T2EI_SEL_ADAPT=1启用,=0时退化为全局κ=16(逐位复现步骤1)。步骤3(~8min):vec-score查分,比较adaptive vs uniform。若adaptive有效,试κ_base∈{20,24}(最多再查2次)。总查分预算≤6次。单输入阶段退路:无括号时取最近单阶段,自适应κ不触发(只有一端),等价于均匀抽样。",
"expected_groups": ["cell_state", "shape_scale"],
"risks": "1) 若所有型的SNR接近(变异系数<0.3),自适应κ退化为全局κ,无增益——Engineer先打印SNR分布,若CV<0.3则跳过步骤2,把剩余时间用于κ_base细扫{12,16,20,24}。2) t_eff/damp与SEL可能有微弱交互(坐标缩放改变型质心位置,影响z投影)——步骤1先验证组合基线与预期一致。3) 30分钟很紧:若步骤1耗时超预期,砍步骤2,只提交组合基线。4) 自适应κ可能反而在低SNR型上选到噪声细胞——设κ下限0.25×κ_base=4,不会完全关闭选择。",
"family_id": "T2EI-05",
"mechanism": "在成熟度选择中,用每型发育轴的信噪比(SNR=轴长/型内投影标准差)自适应调节选择强度κ:轴清晰的型选得更尖,轴噪声大的型选得更平,避免全局κ在低SNR型上过选。同时组合节点17的t_eff/damp修正坐标尺度。",
"vs_constant_shift": "不改任何表达值,不做全局位移。机制改变的是型内哪些真实细胞被抽中,且选择强度按型的数据质量自适应变化——不同型的有效κ不同(范围4-32),不是统一的常数操作。",
"mechanism_evidence": "1) 打印每型的SNR、κ_c和实际选中细胞的z分布,确认高SNR型κ更大、选中细胞z偏移更大;2) 对比uniform κ=16 vs adaptive的四组分,尤其cell_state;3) 若adaptive改变了选中的细胞集合(与uniform相比),记录changed_cell_fraction;4) shape_scale应因t_eff从68.87升至~70。",
"mechanism_off_control": "T2EI_SEL_ADAPT=0时所有型用全局κ=16,输出应与步骤1(组合基线)逐位相同。T2EI_SEL=0时整个选择关闭,应逐位复现节点12输出(已有验证)。两层开关分别验证自适应层和选择层。",
"sources": []
}
``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/researcher.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 5 |
| 工具调用 | 共 9 次:read 5、bash 3、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 21,392 · 输出 1,255 · 思考 2,065 |
| 任务(第一行) | 审查节点 n18 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/reviewer.jsonl 95 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24-D/nodes/18/reviewer.stderr |