总览 · ← 返回运行 20261003-004922-search-t2-embryo-interp-g24
节点 n11
mix 基座上实现 PLAN 的去成熟化收缩(T2EI-01:晚阶段抽中细胞表达向早阶段同型均值线性收缩);机制在代理上确认触发但 α∈{0.10..0.30} 全部单调降分(board 60.17→59.61,cell_state 52.56→51.36),按 PLAN 失败条款提交 α=0(输出与父逐位一致)。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-004922-search-t2-embryo-interp-g24 |
|---|---|
| 父节点 | n9 |
| 子节点 | n13 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 60.92(+0.0) · proxy 60.92(+0.0) |
| 审查 | 通过 检查项1(越界读取):未发现问题。run.py 仅通过 load_manifest/read_stage/panel_genes 从 --data 视图内读取(run.py:247-257),导入均来自 src.task2_spatial 框架模块;无绝对路径、'..'、/mnt、/home、raw、downloads 或网络访问,interp_bracket 只取输入阶段括号,未读取目标阶段文件。; 检查项2(硬编码目标统计量):未发现问题。全文无大段数字常量或按类型名写死的比例表;scale_damp=0.45、T_DRAW_FRAC=0.5、LATE_ONLY_FRAC=0.5、DEM… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 8 分 |
| 程序版本 | cb50f98747e405e860b9d663429b144fe711e065 (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git cb50f98747:solution/METHOD.md
mix 基座上实现 PLAN 的去成熟化收缩(T2EI-01:晚阶段抽中细胞表达向早阶段同型均值线性收缩);机制在代理上确认触发但 α∈{0.10..0.30} 全部单调降分(board 60.17→59.61,cell_state 52.56→51.36),按 PLAN 失败条款提交 α=0(输出与父逐位一致)。
方法
保留父节点 9 的 mix 流程:interp_bracket 取目标两侧输入,align=procrustes3d
对齐坐标帧,scale_to_rms 缩放到阻尼 log 线性目标 RMS(scale_damp=0.45,
父节点已验证),按类型分层抽细胞(t_draw = 0.5·t),表达与坐标一起走,
细胞数夹到 manifest 的 [min_cells, max_cells]。单输入(b is None)时整段混合
跳过,机制自动不适用(无早阶段可参照,等价 α=0),输出=单阶段分层抽样。
PLAN 机制(T2EI-01,demat_late,本节点新增):在 mix_indices 抽取确定
后、_pack_expr 之前,对每个来自后期阶段 b 的抽中细胞,若其类型在早期 a 中
存在,则 new_x = (1−α)·x + α·μ_a(type)(μ_a 为该类型在 a 全部细胞上的均值,
现场从视图数据计算);晚独有类型不收缩。坐标不受影响。
机制生效证据(代理括号 E6.75+E8.0→E7.25,t=0.4,n=5000,seed 0)
- 被收缩细胞占抽中后期细胞 52%(=共有类型 10/26 型在 b 中的占比),共 520 个;
- 位移范数:均值 3.09(α=0.10)→9.27(α=0.30),与 α 严格线性;量级远小于 细胞表达范数均值 36.0,符合 PLAN 风险 1 的“量级合理”要求;
- 位移 CV=0.107:位移=α·(μ_a−x),逐细胞、方向各异、大小正比于该细胞到同型 早均值的距离(区别于常数位移——常数位移所有同型细胞向量完全相同,这里每个 细胞向量不同);CV 偏低是因为 log 空间里细胞到同型均值的距离分布较集中, 这是线性收缩机制的固有属性,非退化;
- 四组分变化(α=0.30 vs α=0,A 半):cell_state −1.20(52.56→51.36)、 expression_change +0.12(60.17→60.29)、shape_scale ±0(坐标未动, d2_shape/scale_log_ratio/occupancy_dice 完全不变,证明改动只在表达空间)、 local_spatial −1.18(58.27→57.09,mmd_u 上升主导)。
对照(mechanism off)
DEMAT_ALPHA=0(提交默认)时输出与父节点 9 管线逐位一致:重构父 run.py
实跑,seed 0 下 X 与 spatial_3D np.array_equal 均为 True;seed 1/2 同样验证。
对照查分 60.17(A 半,seed 0)与父节点 METHOD 报告的 60.17 完全一致。
查分结果与否决(A 半,seed 0,共 6 次查询)
| α | board | cell_state | expression_change | shape_scale | local_spatial |
|---|---|---|---|---|---|
| 0(对照) | 60.17 | 52.56 | 60.17 | 69.69 | 58.27 |
| 0.10 | 59.93 | 51.91 | 60.22 | 69.69 | 57.91 |
| 0.15 | 59.85 | 51.76 | 60.24 | 69.69 | 57.73 |
| 0.20 | 59.77 | 51.62 | 60.24 | 69.69 | 57.53 |
| 0.25 | 59.69 | 51.49 | 60.27 | 69.69 | 57.32 |
| 0.30 | 59.61 | 51.36 | 60.29 | 69.69 | 57.09 |
单调递减:没有任何 α 满足 PLAN 提交条件(board ≥ 父+0.5),且机制的目标组分 cell_state 随 α 下降而非上升(PLAN 风险 2 的反向情形——方向本身错,不是 幅度问题,下探 α=0.05 由单调性可外推仍为负,不浪费查询)。expression_change 的 +0.12 增益远抵不过 cell_state/local_spatial 的损失(PLAN 风险 3 的净负判据)。 按 PLAN 失败条款回退 α=0。
解读:把晚阶段细胞“拉回”早阶段同型均值,同时压掉了这些细胞的型内异质性 (收缩是向均值的,mmd_u 上升),而 cell_state 度量的分布相似性对异质性损失 的惩罚大于对“去成熟化”位移的奖励。这与树内既有教训一致(节点 7 的 OT 位移、 节点 9 的晚独有类型加权都在动表达/组成后拉低 cell_state):mix 家族里对 表达向量的任何后处理(向均值方向)在本榜都是净负。
关键参数
PARAMS = {align: procrustes3d, scale_damp: 0.45}(同父);T_DRAW_FRAC=0.5、LATE_ONLY_FRAC=0.5(同父,节点 9 机制保持关闭);DEMAT_ALPHA=0.0提交默认=机制关闭(envT2_DEMAT_ALPHA可开启,仅调试);- 节点 5 遗留的型内 Sinkhorn OT 仍在代码中,默认关闭(
T2_OT_ON=0),未再测试。
验证与未验证
- 已验证:代理视图 seed 0 全 α 网格跑通(~2 s,<0.4 GB);seed 0/1/2 默认配置
vec-checkok;α=0 与父逐位一致(三种子);机制触发证据(收缩比例、位移 分布、四组分归因)完整;共消耗 6 次查分。 - 未验证:真实括号(E7.25+E8.0,t=1/3)上去成熟化的效果——代理的否决可能 不完全迁移(共有类型数 11 vs 代理 10,接近,方向大概率一致);负 α(反向 “催熟”)未测,生物学方向错误且由单调性预期更差。
- 生物学知识来源:无新增;仅使用 view 内数据(细胞类型标签、表达、时间差)。
调研员的计划
| 名称 | 型内表达向早阶段均值收缩(de-maturation)改善 cell_state |
|---|---|
| 动机 | cell_state 53.88 是四组中最弱且从未被有效改善的瓶颈(节点 5 的 t_draw 减半把它从 37.49 拉到 53.88 后,节点 7/8/9 的机制均未再提升)。父节点 ANALYSIS 明确建议:把晚阶段抽中细胞的表达按类型向早阶段同型均值小幅收缩(α=0.1–0.3),与已被两轮否决的 OT 重心映射(T2EI-02,disp_cv<0.15 退化为常数位移)本质不同——收缩目标是早阶段同型均值而非晚阶段 barycenter,系数小且不依赖传输方案。节点 3/4 曾尝试表达插值但 gen_failed,本次用极简线性收缩避免其工程复杂度。 |
| 做法 | 步骤:1) 在 mix_indices 确定抽取后、_pack_expr 之前,对来自后期阶段 b 的每个细胞,若其类型在早期阶段 a 中存在,则计算 a 中该类型的均值表达向量 μ_a;new_expr = (1−α)·expr + α·μ_a。晚独有类型(a 中无该类型)不做收缩。2) α 网格 {0.10, 0.15, 0.20, 0.25, 0.30},先在代理括号(E6.75+E8.0→E7.25)上逐 α 跑一次(每次 <2 s),选 cell_state 最高且 board 不降的 α。3) 若最优 α 的 board ≥ 父+0.5 则提交;若全部 α 的 board ≤ 父−0.5 则回退 α=0(逐位=父)。4) 单输入退路:b is None 时无早阶段可参照,机制自动跳过(等价 α=0)。5) 实现约 15 行,无额外依赖;用 vec-score 查 A 半 seed 0 快速筛选,最优档再查 seed 1/2 确认方向一致。关键参数初值 α=0.15(中间档),搜索范围 [0.10, 0.30]。 |
| 风险 | 1) 早阶段同型均值可能本身偏离中间态真实表达,收缩方向不完全正确——Engineer 应在代理上先输出收缩前后各类型的位移范数,确认非零且量级合理(应远小于细胞间方差)。2) α 过大导致表达趋同、cell_state 反而下降——若 α=0.3 时 cell_state < α=0.1,说明方向对但幅度需更小,可下探 0.05。3) expression_change 可能因表达差异被压缩而微降——若 expression_change 降幅 >1.5 而 cell_state 升幅 <1,视为净负,回退。4) 机制效应可能在噪声(~1 分)内——三种子配对差值方向一致性是判定标准。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 07339d0945。改动的文件:solution/METHOD.md +56 −52、solution/run.py +58 −3
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 6bd711c..000d350 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,70 +1,74 @@-mix 基座上实现 PLAN 的类型分层抽取(T2EI-01):代理上全部否决,按失败条款默认关闭(逐位=父);实际生效的改动是 scale_damp 0.5→0.45,三种子稳定 +0.29。+mix 基座上实现 PLAN 的去成熟化收缩(T2EI-01:晚阶段抽中细胞表达向早阶段同型均值线性收缩);机制在代理上确认触发但 α∈{0.10..0.30} 全部单调降分(board 60.17→59.61,cell_state 52.56→51.36),按 PLAN 失败条款提交 α=0(输出与父逐位一致)。 ## 方法 -保留父节点 5 的 mix 流程:`interp_bracket` 取目标两侧输入,`align=procrustes3d`-对齐坐标帧,`scale_to_rms` 缩放到阻尼 log 线性目标 RMS,按类型分层抽细胞-(后期抽取比例 `t_draw = T_DRAW_FRAC·t`,T_DRAW_FRAC=0.5),表达与坐标一起走,+保留父节点 9 的 mix 流程:`interp_bracket` 取目标两侧输入,`align=procrustes3d`+对齐坐标帧,`scale_to_rms` 缩放到阻尼 log 线性目标 RMS(`scale_damp=0.45`,+父节点已验证),按类型分层抽细胞(`t_draw = 0.5·t`),表达与坐标一起走, 细胞数夹到 manifest 的 `[min_cells, max_cells]`。单输入(b is None)时整段混合-跳过,输出=单阶段分层抽样,与父一致。+跳过,机制自动不适用(无早阶段可参照,等价 α=0),输出=单阶段分层抽样。 -**本节点相对父节点唯一生效的改动**:`scale_damp` 从 0.5 改为 **0.45**。它只改-两朵云缩放到的目标 RMS,不改变抽到的细胞。代理实测(机制关闭、同种子配对):+**PLAN 机制(T2EI-01,`demat_late`,本节点新增)**:在 `mix_indices` 抽取确定+后、`_pack_expr` 之前,对每个来自后期阶段 b 的抽中细胞,若其类型在早期 a 中+存在,则 `new_x = (1−α)·x + α·μ_a(type)`(μ_a 为该类型在 a 全部细胞上的均值,+现场从视图数据计算);晚独有类型不收缩。坐标不受影响。 -| seed | damp=0.5(父) | damp=0.45 | 差 |-|---|---:|---:|---:|-| 0 | 59.88 | 60.17 | +0.29 |-| 1 | 59.63 | 59.92 | +0.29 |-| 2 | 59.42 | 59.71 | +0.29 |+## 机制生效证据(代理括号 E6.75+E8.0→E7.25,t=0.4,n=5000,seed 0) -差值三种子完全一致(<1,属噪声量级,但方向确定):来源是 `scale_log_ratio`-从 +0.0162 → −0.0034(输出 RMS 与目标阶段 RMS 之比几乎精确为 1),-`shape_scale` 相应 +1.1~+1.2(68.9→70.1 等),其余三组不变。damp 网格-{0.35, 0.40, 0.45, 0.50, 0.55} 在 0.45 处单峰(58.79 / 59.41 / 60.17 / 59.88 / 59.18)。-该规则只用两输入与目标的时间差现场计算,不依赖绝对时间或视图。+- 被收缩细胞占抽中后期细胞 52%(=共有类型 10/26 型在 b 中的占比),共 520 个;+- 位移范数:均值 3.09(α=0.10)→9.27(α=0.30),与 α 严格线性;量级远小于+ 细胞表达范数均值 36.0,符合 PLAN 风险 1 的“量级合理”要求;+- 位移 CV=0.107:位移=α·(μ_a−x),逐细胞、方向各异、大小正比于该细胞到同型+ 早均值的距离(区别于常数位移——常数位移所有同型细胞向量完全相同,这里每个+ 细胞向量不同);CV 偏低是因为 log 空间里细胞到同型均值的距离分布较集中,+ 这是线性收缩机制的固有属性,非退化;+- 四组分变化(α=0.30 vs α=0,A 半):cell_state −1.20(52.56→51.36)、+ expression_change +0.12(60.17→60.29)、shape_scale ±0(坐标未动,+ d2_shape/scale_log_ratio/occupancy_dice 完全不变,证明改动只在表达空间)、+ local_spatial −1.18(58.27→57.09,mmd_u 上升主导)。 -## PLAN 机制(family T2EI-01,类型分层抽取)——已实现,代理上否决+## 对照(mechanism off) -`mix_indices_typed`:把后期阶段 b 的每个类型分为「共有」(标签也在早期 a 中)-与「晚独有」(只在 b 中)。共有类型按 `T_DRAW_FRAC·t·n·share` 配额,晚独有-类型按 `LATE_ONLY_FRAC·t·n·share` 配额(share=该类型在 b 中的比例),floor 后-按(余数大、晚独有优先)确定性补齐;a 分层抽满剩余。-`LATE_ONLY_FRAC == T_DRAW_FRAC` 或 b 无独有类型时回退到父的 `mix_indices`。+`DEMAT_ALPHA=0`(提交默认)时输出与父节点 9 管线**逐位一致**:重构父 run.py+实跑,seed 0 下 X 与 spatial_3D `np.array_equal` 均为 True;seed 1/2 同样验证。+对照查分 60.17(A 半,seed 0)与父节点 METHOD 报告的 60.17 完全一致。 -**机制生效证据**(代理括号 E6.75+E8.0→E7.25,t=0.4,n=5000):-- 晚独有类型 n_late_only_types=15(b 共 26 型、共有 11 型),占 b 细胞 48.1%;-- LATE_ONLY_FRAC=1.0 时从晚独有类型抽 963 个细胞(对照 ≈481),n_from_b- 1000→1481;=0.75 时 721,n_from_b=1241;=0.25 时 n_from_b≈759。四组分的- 变化(vs 对照,A 半):1.0 → cell_state −7.9、expression_change +0.6、- shape_scale +1.6、local_spatial −0.6;0.25 → cell_state +2.2、- expression_change −1.1、shape_scale −2.8、local_spatial −1.6。+## 查分结果与否决(A 半,seed 0,共 6 次查询) -**对照(mechanism off)**:`LATE_ONLY_FRAC=0.5`(=T_DRAW_FRAC)时输出与父-节点管线**逐位一致**(重构父 run.py 实跑,X 与 spatial_3D `np.array_equal`-均为 True)。+| α | board | cell_state | expression_change | shape_scale | local_spatial |+|---:|---:|---:|---:|---:|---:|+| 0(对照) | **60.17** | **52.56** | 60.17 | 69.69 | **58.27** |+| 0.10 | 59.93 | 51.91 | 60.22 | 69.69 | 57.91 |+| 0.15 | 59.85 | 51.76 | 60.24 | 69.69 | 57.73 |+| 0.20 | 59.77 | 51.62 | 60.24 | 69.69 | 57.53 |+| 0.25 | 59.69 | 51.49 | 60.27 | 69.69 | 57.32 |+| 0.30 | 59.61 | 51.36 | 60.29 | 69.69 | 57.09 | -**查分结果(A 半,seed 0)**:对照 59.88;LATE_ONLY_FRAC=1.0 → 58.77;-0.75 → 59.06;0.25 → 59.35。PLAN 门槛(cell_state ≥50 且 expression_change->61.5)在两个开启档位都不满足:expression_change 全部落在 60±1 内-(59.06–60.66),而 cell_state 随晚独有细胞增多单调下降(52.6→44.7)。-按 PLAN 失败条款("conclude no signal and submit parent-identical output"),-提交的默认配置 LATE_ONLY_FRAC=0.5,机制关闭。结论与父节点教训一致:-代理上后期(更成熟)细胞抽得越多 cell_state 越低,按类型身份区分抽取比例-不能绕开这个总量效应。+单调递减:没有任何 α 满足 PLAN 提交条件(board ≥ 父+0.5),且机制的目标组分+cell_state 随 α **下降**而非上升(PLAN 风险 2 的反向情形——方向本身错,不是+幅度问题,下探 α=0.05 由单调性可外推仍为负,不浪费查询)。expression_change+的 +0.12 增益远抵不过 cell_state/local_spatial 的损失(PLAN 风险 3 的净负判据)。+按 PLAN 失败条款回退 α=0。++解读:把晚阶段细胞“拉回”早阶段同型均值,同时压掉了这些细胞的型内异质性+(收缩是向均值的,mmd_u 上升),而 cell_state 度量的分布相似性对异质性损失+的惩罚大于对“去成熟化”位移的奖励。这与树内既有教训一致(节点 7 的 OT 位移、+节点 9 的晚独有类型加权都在动表达/组成后拉低 cell_state):**mix 家族里对+表达向量的任何后处理(向均值方向)在本榜都是净负**。 ## 关键参数 -- `PARAMS = {align: procrustes3d, scale_damp: 0.45}`(damp 为本节点改动)-- `T_DRAW_FRAC=0.5`(同父);`LATE_ONLY_FRAC=0.5` 默认=关闭(env- `T2_LATE_ONLY_FRAC` 可开启,仅调试)-- 父节点遗留的型内 Sinkhorn OT(T2EI-02)仍在代码中,默认关闭(`T2_OT_ON=0`),- 本节点未再测试(父与节点 7 已两轮否决)。+- `PARAMS = {align: procrustes3d, scale_damp: 0.45}`(同父);`T_DRAW_FRAC=0.5`、+ `LATE_ONLY_FRAC=0.5`(同父,节点 9 机制保持关闭);+- `DEMAT_ALPHA=0.0` 提交默认=机制关闭(env `T2_DEMAT_ALPHA` 可开启,仅调试);+- 节点 5 遗留的型内 Sinkhorn OT 仍在代码中,默认关闭(`T2_OT_ON=0`),未再测试。 ## 验证与未验证 -- 已验证:代理视图 seed 0/1/2 完整跑通(~2 s,<0.4 GB);`vec-check` ok;- 机制关闭输出与父逐位一致;damp 网格单峰;三种子配对比较方向一致。-- 未验证:真实括号(E7.25+E8.0,t=1/3)上 damp=0.45 的行为——方法卡提示- 真实目标 RMS 可能比 damp=0.5 给出的 168 更大,若是,0.45 会略偏小;- 但本节点分数只由 proxy 尺子决定,代理上 0.45 三种子稳定占优。-- 生物学知识来源:无新增;仅使用 view 内数据(细胞类型标签、时间差)。+- 已验证:代理视图 seed 0 全 α 网格跑通(~2 s,<0.4 GB);seed 0/1/2 默认配置+ `vec-check` ok;α=0 与父逐位一致(三种子);机制触发证据(收缩比例、位移+ 分布、四组分归因)完整;共消耗 6 次查分。+- 未验证:真实括号(E7.25+E8.0,t=1/3)上去成熟化的效果——代理的否决可能+ 不完全迁移(共有类型数 11 vs 代理 10,接近,方向大概率一致);负 α(反向+ “催熟”)未测,生物学方向错误且由单调性预期更差。+- 生物学知识来源:无新增;仅使用 view 内数据(细胞类型标签、表达、时间差)。diff --git a/solution/run.py b/solution/run.pyindex c11e54e..3468107 100644--- a/solution/run.py+++ b/solution/run.py@@ -1,5 +1,17 @@ #!/usr/bin/env python3-"""mix + type-stratified later-stage draw (family T2EI-01), T2 interpolation.+"""mix + de-maturation shrink of late-stage expression (family T2EI-01), T2 interpolation.++This node's PLAN mechanism (demat_late): each drawn later-stage cell whose type+exists in the earlier stage gets its expression shrunk toward the earlier-stage+same-type mean, new_x = (1-alpha)*x + alpha*mu_a ("de-maturation"). The+mechanism fires (52% of drawn late cells shrunk, per-cell displacement+proportional to the cell's distance from mu_a, mean displacement 3.1-9.3 in+log units for alpha 0.10-0.30 vs mean cell norm 36.0), but the proxy grid+REJECTS it monotonically: board 60.17 (alpha=0) -> 59.93/59.85/59.77/59.69/+59.61 (alpha 0.10/0.15/0.20/0.25/0.30); cell_state drops 52.56 -> 51.36 and+local_spatial 58.27 -> 57.09 while expression_change gains only +0.12 max.+Per the PLAN failure clause the submitted default is DEMAT_ALPHA=0+(mechanism off, output bit-for-bit the parent's; np.array_equal verified). Base pipeline is the parent's (node 5) mix: bracket the target with the nearest inputs, align frames (procrustes3d), rescale both clouds to the damped@@ -16,7 +28,7 @@ cell_state trades against the other groups. Per the PLAN failure clause the submitted default is LATE_ONLY_FRAC = T_DRAW_FRAC (mechanism off, output bit-for-bit the parent's uniform mix). -Change that IS active vs parent: scale_damp 0.5 -> 0.45. It only rescales the+Change inherited from parent (node 9, active vs node 5): scale_damp 0.5 -> 0.45. It only rescales the output cloud and moves scale_log_ratio from +0.016 to ~-0.003 (RMS matches the target), lifting shape_scale by ~1 and the board by a consistent +0.29 on all three proxy seeds (60.17/59.92/59.71 vs 59.88/59.63/59.42).@@ -53,6 +65,44 @@ T_DRAW_FRAC = float(os.environ.get("T2_T_DRAW_FRAC", "0.5")) # shared-type late # mix, bit-for-bit). Proxy scores rejected every LATE_ONLY_FRAC != 0.5 tested # (1.0: 58.77, 0.75: 59.06, 0.25: 59.35 vs control 59.88), see METHOD.md. LATE_ONLY_FRAC = float(os.environ.get("T2_LATE_ONLY_FRAC", "0.5"))+# PLAN T2EI-01 mechanism (this node): de-maturation. Each drawn later-stage cell+# whose type exists in the earlier stage gets its expression shrunk toward the+# earlier-stage same-type mean: new_x = (1-alpha)*x + alpha*mu_a. Proxy grid+# alpha in {0.10..0.30} rejected: board and cell_state decline monotonically+# (see METHOD.md). Default 0.0 = mechanism off, bit-for-bit the parent pipeline.+DEMAT_ALPHA = float(os.environ.get("T2_DEMAT_ALPHA", "0.0"))+++def demat_late(xb, labels_b_drawn, stage_a, alpha, stats):+ """Shrink drawn later-stage cells toward earlier-stage same-type means."""+ stats["demat_alpha"] = alpha+ if alpha <= 0.0 or xb.shape[0] == 0:+ stats["demat_mode"] = "off"+ return xb+ la = np.asarray(stage_a.labels).astype(str)+ lb = np.asarray(labels_b_drawn).astype(str)+ a_types, inv = np.unique(la, return_inverse=True)+ Xa = as_dense(stage_a.X).astype(np.float64)+ k = len(a_types)+ sums = np.zeros((k, Xa.shape[1]), dtype=np.float64)+ np.add.at(sums, inv, Xa)+ counts = np.bincount(inv, minlength=k).astype(np.float64)+ mu = sums / np.maximum(counts, 1.0)[:, None]+ idx = np.searchsorted(a_types, lb)+ idx_c = np.minimum(idx, k - 1)+ found = a_types[idx_c] == lb+ stats["demat_mode"] = "on"+ stats["demat_frac_shrunk"] = float(found.mean())+ if not found.any():+ return xb+ xb64 = xb.astype(np.float64)+ xb_new = xb64.copy()+ xb_new[found] = (1.0 - alpha) * xb64[found] + alpha * mu[idx_c[found]]+ disp = np.linalg.norm(xb_new[found] - xb64[found], axis=1)+ stats["demat_disp_mean"] = float(disp.mean())+ stats["demat_disp_cv"] = float(disp.std() / (disp.mean() + 1e-12))+ stats["demat_cell_norm_mean"] = float(np.linalg.norm(xb64[found], axis=1).mean())+ return xb_new.astype(np.float32) def mix_indices_typed(labels_a, labels_b, t, n, rng, shared_frac, late_only_frac, stats):@@ -227,6 +277,9 @@ def main() -> None: xb = as_dense(stage_b.X, ib) if ib.size else np.zeros((0, len(genes)), dtype=np.float32) pb = np.asarray(cb[ib], dtype=np.float64) if ib.size else np.zeros((0, 3)) + xb = demat_late(xb, stage_b.labels[ib] if ib.size else np.array([], dtype=str),+ stage_a, DEMAT_ALPHA, stats)+ beta = BETA_SCALE * t if OT_ON else 0.0 n_ot_types, disp_cv = 0, 0.0 if beta > 0.0 and ia.size and ib.size:@@ -257,7 +310,9 @@ def main() -> None: "z_flipped", "align", "beta", "eps_frac", "n_ot_types", "disp_cv", "n_from_a", "n_from_b", "t_draw_frac", "late_only_frac", "n_late_only_types", "late_only_mode",- "n_from_b_late_only", "n_from_b_shared")}+ "n_from_b_late_only", "n_from_b_shared",+ "demat_alpha", "demat_mode", "demat_frac_shrunk",+ "demat_disp_mean", "demat_disp_cv", "demat_cell_norm_mean")} print(json.dumps({"bracket": [a["stage"], b["stage"]], **keep}, default=float), file=sys.stderr) write_t2(args.out, expr, coords.astype(np.float32), genes, seed=args.seed)
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| k007 | Interval staging and held-out-window filtering of external data | notes/official/来件/virtualembryo.ai/rules.md |
| k023 | Time-split validation with a held-out intermediate or next time point | notes/handover/02_知识学习路线.md |
| k024 | World-model evaluation dimensions for state-transition predictors | notes/competition/07_biomedical_world_models.md |
分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 实现了 T2EI-01 去成熟化机制 demat_late(晚阶段抽中细胞表达按类型向早阶段同型均值线性收缩 new_x=(1−α)x+αμ_a,α 环境变量控制),代理网格 α∈{0.10..0.30} 全部单调降分,按 PLAN 失败条款提交 α=0,输出与父节点 9 逐位一致(np.array_equal 三种子验证),故榜分与四组分全部 +0.00。 |
|---|---|
| 各组分数的变化 | cell_state:噪声内(+0.00,53.88→53.88;代理上机制开启时该目标组分反而单调降 52.56→51.36) expression_change:噪声内(+0.00,60.08→60.08,输出与父逐位一致) local_spatial:噪声内(+0.00,59.48→59.48;代理上机制开启时降 58.27→57.09) shape_scale:噪声内(+0.00,70.24→70.24) |
| family_id | T2EI-01 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 3 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 2 次:bash 1、write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 11,511 · 输出 989 · 思考 337 |
| 任务(第一行) | 分析节点 n11 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/analyst.jsonl 9 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 21 |
| 工具调用 | 共 23 次:bash 14、edit 6、read 2、write 1 |
| 用时 | 6 分 |
| token 数 | 输入 46,549 · 输出 7,470 · 思考 4,771 |
| 任务(第一行) | 按计划修改程序:型内表达向早阶段均值收缩(de-maturation)改善 cell_state |
| 最后的回答(摘录) | 完成。 **做了什么**:按 PLAN(T2EI-01 去成熟化)在父节点 mix 管线上实现 `demat_late`——晚阶段抽中细胞表达按类型向早阶段同型均值线性收缩 `new_x=(1−α)x+αμ_a`,α 由环境变量控制,默认 0。机制确认触发(52% 后期细胞被收缩,位移逐细胞、正比于到 μ_a 距离,坐标不受影响)。 **查分结果**(A 半 seed 0,6/20 次):α=0 对照 60.17;α=0.10/0.15/0.20/0.25/0.30 → 59.93/59.85/59.77/59.69/59.61,单调下降;目标组分 cell_state 也单调降(52.56→51.36),expression_change 仅 +0.12。按 PLAN 失败条款回退 α=0,提交输出与父节点逐位一致(seed 0/1/2 均 `np.array_equal` 验证),`vec-check` 通过、确定性验证通过。 **下一步最值得试**:mix 家族中对表达向量"向均值方向"的后处理已连续三轮净负(OT 位移、晚独有加权、本次收缩);建议转向从未单独优化的 local_spatial(59.48)——先做诊断(输出邻域组成与真实中间阶段的差异),再考虑坐标层面的局部对齐,而不是继续动表达。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/engineer.jsonl 139 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 1 分 |
| token 数 | 输入 11,725 · 输出 1,015 · 思考 1,971 |
| 任务(第一行) | 为节点 n11(改进,父节点 n9)写改进计划 PLAN.json |
| 最后的回答(摘录) | {"name":"型内表达向早阶段均值收缩(de-maturation)改善 cell_state","motivation":"cell_state 53.88 是四组中最弱且从未被有效改善的瓶颈(节点 5 的 t_draw 减半把它从 37.49 拉到 53.88 后,节点 7/8/9 的机制均未再提升)。父节点 ANALYSIS 明确建议:把晚阶段抽中细胞的表达按类型向早阶段同型均值小幅收缩(α=0.1–0.3),与已被两轮否决的 OT 重心映射(T2EI-02,disp_cv<0.15 退化为常数位移)本质不同——收缩目标是早阶段同型均值而非晚阶段 barycenter,系数小且不依赖传输方案。节点 3/4 曾尝试表达插值但 gen_failed,本次用极简线性收缩避免其工程复杂度。","approach":"步骤:1) 在 mix_indices 确定抽取后、_pack_expr 之前,对来自后期阶段 b 的每个细胞,若其类型在早期阶段 a 中存在,则计算 a 中该类型的均值表达向量 μ_a;new_expr = (1−α)·expr + α·μ_a。晚独有类型(a 中无该类型)不做收缩。2) α 网格 {0.10, 0.15, 0.20, 0.25, 0.30},先在代理括号(E6.75+E8.0→E7.25)上逐 α 跑一次(每次 <2 s),选 cell_state 最高且 board 不降的 α。3) 若最优 α 的 board ≥ 父+0.5 则提交;若全部 α 的 board ≤ 父−0.5 则回退 α=0(逐位=父)。4) 单输入退路:b is None 时无早阶段可参照,机制自动跳过(等价 α=0)。5) 实现约 15 行,无额外依赖;用 vec-score 查 A 半 seed 0 快速筛选,最优档再查 seed 1/2 确认方向一致。关键参数初值 α=0.15(中间档),搜索范围 [0.10, 0.30]。","expected_groups":["cell_state"],"risks":"1) 早阶段同型均值可能本身偏离中间态真实表达,收缩方向不完全正确——Engineer 应在代理上先输出收缩前后各类型的位移范数,确认非零且量级合理(应远小于细胞间方差)。2) α 过大导致表达趋同、cell_state 反而下降——若 α=0.3 时 cell_state < α=0.1,说明方向对但幅度需更小,可下探 0.05。3) expression_change 可能因表达差异被压缩而微降——若 expression_change 降幅 >1.5 而 cell_state 升幅 <1,视为净负,回退。4) 机制效应可能在噪声(~1 分)内——三种子配对差值方向一致性是判定标准。","family_id":"T2EI-01","mechanism":"对从后期阶段抽中的细胞,按类型将其表达向量向早期阶段同型均值做线性收缩 new_x=(1−α)x+αμ_early,使晚阶段细胞在表达空间中'去成熟化',更接近中间时间点的状态。","vs_constant_shift":"常数位移对所有同型细胞加同一向量,不依赖单个细胞的当前表达;本机制是逐细胞的线性插值,收缩量与细胞到早阶段均值的距离成正比——距离越大的细胞被拉回越多,距离小的几乎不动,因此型内产生异质性位移(非常数)。","mechanism_evidence":"Engineer 应输出:(1) 每个被收缩细胞的位移范数分布(均值、CV),CV 应显著 >0(区别于常数位移);(2) 被收缩的细胞数占总抽取数的比例(应等于从 b 抽取且类型在 a 中存在的比例);(3) α=0 与 α>0 时四组分各自的变化;(4) 若 cell_state 提升而 shape_scale/local_spatial 不变,说明改动仅在表达空间生效、坐标未受影响。","mechanism_off_control":"α=0 时 new_expr = expr,输出与父管线逐位一致(可用 np.array_equal 验证)。Engineer 应在代理上跑 α=0 确认分数与父相同(±0.01),作为基线对照。","sources":[]} |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/researcher.jsonl 4 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/researcher.stderr |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 6 |
| 工具调用 | 共 7 次:bash 5、read 1、write 1 |
| 用时 | 1 分 |
| token 数 | 输入 19,463 · 输出 1,184 · 思考 2,320 |
| 任务(第一行) | 审查节点 n11 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/reviewer.jsonl 84 KB /home/spark-longxinyang/vec/runs/formal/20261003-004922-search-t2-embryo-interp-g24/nodes/11/reviewer.stderr |