总览 · ← 返回运行 20261003-043412-search-t2-embryo-interp-g24-D-s1
节点 n26
实现 b 侧选胞后空间 kNN 平滑型内方差恢复(SPATVAR:沿同型空间邻域平均残差方向位移 β·r̃);variogram 在所有 β>0 下恶化 6–10%(超 PLAN 停止条款 5%)、mmd_u 无收益、cell_state 单调下降,机制证伪,提交态 SPATVAR_BETA=0 与父节点逐位一致。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-043412-search-t2-embryo-interp-g24-D-s1 |
|---|---|
| 父节点 | n24 |
| 子节点 | n28 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 62.15(+0.0) · proxy 62.15(+0.0) |
| 审查 | 未审查 |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 13 分 |
| 程序版本 | 84cb053a64431f3240da66901c88df51b7c563bd (programs.git) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 84cb053a64:solution/METHOD.md
实现 b 侧选胞后空间 kNN 平滑型内方差恢复(SPATVAR:沿同型空间邻域平均残差方向位移 β·r̃);variogram 在所有 β>0 下恶化 6–10%(超 PLAN 停止条款 5%)、mmd_u 无收益、cell_state 单调下降,机制证伪,提交态 SPATVAR_BETA=0 与父节点逐位一致。
方法(family T2EI-09,improve over node 24)
底座不变:interp_bracket → procrustes3d → scale_damp=0.5 目标 RMS → κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_P=1.0,blend 质心)→ b 侧全局 xy 径向膨胀 γ=1.15 → jitter + 终缩放。
新增一步(run.py 中 SPATVAR_* 段,b 侧选胞后、spread/jitter 前):对每个共有型 c
(被选 ≥ SPATVAR_MIN=3),在双阶段合并 z-scored panel 空间计算每个被选 b 细胞的残差
r_i = z_i − μ_sel_c;用被选 b 细胞对齐后的 xy 坐标(z 为离散切片轴,不参与)建 cKDTree,
每个细胞取同型内空间最近 SPATVAR_K=8 个邻居(含自身),平滑残差 r̃_i = mean(r_j);
位移 z′_i = z_i + β·r̃_i,逆变换回表达空间,clip≥0。坐标不动。
意图(PLAN):同区域细胞同向移动,恢复被中间态选胞压缩的型内方差(σ²_all/σ²_sel≈2.81,节点 24 已证实),
同时避免节点 24 逐细胞独立径向膨胀放大空间邻近细胞表达差、破坏 variogram 的失败模式。
环境变量:SPATVAR_BETA(默认 0 = 关闭,即提交态)、SPATVAR_K(默认 8)、SPATVAR_MIN(默认 3)。 单输入退路:无括号 → 无 b 侧 → 跳过,与父一致。
机制证据(mechanism_evidence)
机制确实运行且改变了细胞:β=0.35/K=8/seed0 诊断显示 11 个共有型全部处理、675 个被选 b 细胞全部被位移; 被位移细胞的表达值实际改变(输出 md5 与 β=0 不同),坐标未动。
- 平滑有区分度:cos(r, r̃) 型间均值 0.30(0.36–0.42 各大型),远低于 PLAN 风险条款的 0.95 阈值—— r̃ 不等于 r,位移方向确实由空间邻域决定,未退化为节点 24 的逐细胞径向膨胀。
- 平滑压缩程度:||r̃||/||r|| ≈ 0.29(0.38–0.42 各大型),故 β=0.35 的实际位移幅度 ≈ 0.10|r|, 比节点 24 β=0.25 径向膨胀的 0.45|r| 小 4.5 倍。
- 方差确实恢复:var_after/var_before 型间均值 1.08(β=0.35/K=8)。
- 位移场空间自相关:cos(r, r̃)=0.30>0 即残差的空间自相关显著为正(邻域平均与自身方向一致), 位移场 β·r̃ 是 kNN 平滑场,按构造空间自相关。
- 但四组分变化与 PLAN 预期相反(A 半代理,seed 0,父基线=节点 24/21 提交态):
| 配置 | 榜分 | cell_state | expr_change | shape | local | mmd_u | variogram |
|---|---|---|---|---|---|---|---|
| β=0(父,提交) | 61.14 | 52.84 | 60.50 | 72.18 | 59.03 | 0.01116 | 0.01094 |
| β=0.15, K=8 | 60.97 | 52.10 | 60.54 | 72.18 | 59.06 | 0.01114 | 0.01162 (+6.2%) |
| β=0.35, K=8 | 60.89 | 51.70 | 60.57 | 72.18 | 59.10 | 0.01110 | 0.01204 (+10.1%) |
| β=0.5, K=24 | 60.88 | 51.66 | 60.56 | 72.18 | 59.10 | 0.01115 | 0.01203 (+10.0%) |
cell_state = f(mmd_u, variogram) 如预期由这两个指标决定,但方向与 PLAN 预期相反: variogram 单调恶化且首个 β 档就超过 PLAN 停止条款(>5%);mmd_u 几乎不动(0.01116→0.0111), 没有复现节点 24 径向膨胀的 mmd_u 收益(平滑把位移幅度压到 0.10|r|,太小;而放大幅度又先撞上 variogram)。 K=24 的更强平滑与 K=8 结果几乎相同(60.88 vs 60.89),排除"平滑不够"的解释。
机制对照(mechanism_off_control)与验证
off 对照 = SPATVAR_BETA=0(代码默认,提交态):位移为零,z′=z,输出与父节点逐位一致 (md5 b86afc108c424bc0761200595d6a772b,与节点 21/24 提交态相同)。验证: β=0 重跑两次 md5 相同(确定性);seed 3 输出不同(正确响应 seed);vec-check ok; β>0 各档 vec-check ok、运行 ~5s(远低于 limit)。共 3 次查分(额度 20,余 17)。
结论与教训
- 机制证伪,且比节点 24 更糟:空间平滑位移对 variogram 的单位幅度伤害显著高于逐细胞径向膨胀 (位移幅度小 4.5 倍,variogram 恶化反而更大:+10.1% vs 节点 24 β=0.25 的 +6.3%)。 解释:variogram 度量表达差随空间距离的结构;对 b 侧细胞叠加任何非生物来源的空间相关扰动场, 都会在中短程空间尺度上注入参考里不存在的"伪信号",直接抬高 variogram;而平滑与否不改变 a/b 细胞在局部邻域内混排时"只动 b 不动 a"造成的 identity/location 耦合破坏。
- 至此表达空间方差缺口利用的两个方向全部关闭:径向膨胀(节点 24,mmd_u 收益被 variogram 对冲) 与空间平滑位移(本节点,无 mmd_u 收益、variogram 伤害更大)。后续节点不应再尝试在 b 侧表达上做方差恢复类扰动,无论是否空间平滑、幅度多小(β=0.15 已 -0.17 分)。 响应曲线对 β 单调,sup 在边界 β=0,故提交 β=0(与父逐位一致,安全回退)。
- 剩余可攻方向(与父 ANALYSIS 一致):改变 b 侧细胞身份来源(a-b 近邻差分外推,节点 12 已初步证伪)、 或转向未被表达扰动触及的 local_spatial/shape_scale(坐标占据,节点 13 各向异性补偿方向)。
验证过 / 没验证
- 验证过:β=0 与父 md5 逐位一致、确定性;β∈{0.15,0.35}(K=8)、β=0.5(K=24) 的 seed0 响应(3 次查分); 诊断量(cos、norm ratio、var ratio、位移细胞数);vec-check;单输入退路代码路径与父一致。
- 没验证:多 seed(响应单调、首档即触发停止条款,按 PLAN 停止条款无需继续);β<0.15 档 (外推单调性表明其上界是 β=0 的父分数);SPATVAR 与 κ/γ 的交互(底座参数未动)。
知识来源
无新增外部生物学知识;全部计算只来自视图内两个输入阶段的表达、标签与坐标。 kNN 空间平滑是通用统计方法,不针对任何保留阶段。
调研员的计划
| 名称 | b侧空间平滑型内方差恢复(kNN平滑残差位移替代逐细胞径向膨胀) |
|---|---|
| 动机 | 节点24证实中间态选胞将型内方差压缩至1/2.81,β=0.25径向膨胀使mmd_u三seed一致改善(0.01116→0.01049),但variogram等量恶化(0.01094→0.01163),cell_state三seed一致微降(−0.04/−0.08/−0.11),净榜分+0.09在噪声内。ANALYSIS明确指出根因:逐细胞独立径向膨胀放大空间邻近细胞间表达差,破坏空间自相关。当前最弱组cell_state=54.35,五次表达空间各向同性方差操纵(节点8/12/17/21/24)均被mmd_u×variogram对冲卡死。本方案直接针对该失败模式:将膨胀方向做空间kNN平滑,使同区域细胞同向移动,恢复方差的同时保留variogram。 |
| 做法 | 在父管线(κ=0.65, SEL_P=1.0, b侧中间态选胞, γ=1.15)的b侧选胞后、jitter前,新增SPATVARRESTORE步骤: 1. 对每个共有型c(被选≥SPATVAR_MIN=3),在pooled z-scored panel空间计算每个被选b细胞的残差 r_i = z_i − μ_sel_c。 2. 空间平滑:用被选b细胞的xy坐标(z为离散切片轴不参与)建kNN图,每个细胞i取同型内空间最近SPATVAR_K个邻居(含自身),计算平滑残差 r̃_i = mean(r_j, j∈kNN(i)∩type_c)。若同型被选细胞<SPATVAR_K,k取同型被选数。 3. 位移:z'_i = z_i + β·r̃_i,逆变换回表达空间,clip≥0。坐标不动。 4. 环境变量:SPATVAR_BETA(默认0=关闭),SPATVAR_K(默认8),SPATVAR_MIN(默认3)。 参数搜索策略(≤10次查分): - 先跑β=0确认与父md5一致(1次)。 - 固定K=8,扫β∈{0.2, 0.35, 0.5, 0.7}(4次),观察mmd_u与variogram。β范围比节点24更大,因为平滑后位移幅度缩小(r̃比r小),需要更大β补偿。 - 若β响应正向,在最佳β处扫K∈{4, 12}(2次)。 - 若seed0正向≥0.5分,用seed1确认(1-2次)。 停止条款:任何配置使variogram恶化>5%(相对β=0)即停止该方向。 单输入退路:无括号→无b侧→跳过,与父一致。 vec-quick筛选:先在小样本(前200个被选细胞)上验证r̃的空间自相关系数>0.5(确认平滑有效),再全量跑。 |
| 风险 | 1. 若型内残差本身空间自相关很高(邻近细胞残差方向相近),平滑后r̃≈r,退化为节点24的逐细胞膨胀,variogram仍会恶化——Engineer应在诊断中输出r̃与r的余弦相似度均值,若>0.95则机制无区分度,尽早停止。2. 平滑可能过度(K太大)导致方差恢复不足,mmd_u改善太小被噪声淹没——用K=4/8/12三档覆盖。3. 预期提升可能仍在噪声(~1分)内——需2个seed确认,单次查分差距<1不算进步。4. 型内被选细胞太少(<K)时kNN退化为型内均值,等效于节点24的径向膨胀——用SPATVAR_MIN=3兜底但记录跳过比例。 |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 382cb0c186。改动的文件:solution/METHOD.md +58 −55、solution/run.py +75 −1
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 18d5d96..8f2d546 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,73 +1,76 @@-实现 b 侧选胞后型内方差恢复(f_c=1+β(σ²_all/σ²_sel−1) 径向膨胀);mmd_u 三 seed 一致改善但 variogram 等量变差、cell_state 微降,净榜分噪声内证伪,提交 β=0 与父逐位一致。+实现 b 侧选胞后空间 kNN 平滑型内方差恢复(SPATVAR:沿同型空间邻域平均残差方向位移 β·r̃);variogram 在所有 β>0 下恶化 6–10%(超 PLAN 停止条款 5%)、mmd_u 无收益、cell_state 单调下降,机制证伪,提交态 SPATVAR_BETA=0 与父节点逐位一致。 -## 方法(family T2EI-09,improve over node 21)+## 方法(family T2EI-09,improve over node 24) 底座不变:interp_bracket → procrustes3d → scale_damp=0.5 目标 RMS → κ=0.65 组成阻尼 → b 侧型内中间态偏好选胞(SEL_P=1.0,blend 质心)→ b 侧全局 xy 径向膨胀 γ=1.15 → jitter + 终缩放。 -新增一步(`run.py` 中 `VARRESTORE_*` 段,b 侧选胞后、jitter 前):对每个共有型 c,-在双阶段合并 z-scored panel 空间计算 σ²_all(该型全体 b 细胞、按型内均值中心化的逐基因方差之和)-与 σ²_sel(被选子集同法),膨胀因子 f_c=1+β·(σ²_all/σ²_sel−1);每个被选 b 细胞-z′=μ_sel_c+f_c·(z−μ_sel_c),逆变换回表达空间并 clip≥0。坐标不动。-型内被选 <3(VARRESTORE_MIN)跳过。单输入退路:无括号 → 无 b 侧 → 跳过,与父一致。+新增一步(`run.py` 中 `SPATVAR_*` 段,b 侧选胞后、spread/jitter 前):对每个共有型 c+(被选 ≥ SPATVAR_MIN=3),在双阶段合并 z-scored panel 空间计算每个被选 b 细胞的残差+r_i = z_i − μ_sel_c;用被选 b 细胞对齐后的 xy 坐标(z 为离散切片轴,不参与)建 cKDTree,+每个细胞取同型内空间最近 SPATVAR_K=8 个邻居(含自身),平滑残差 r̃_i = mean(r_j);+位移 z′_i = z_i + β·r̃_i,逆变换回表达空间,clip≥0。坐标不动。+意图(PLAN):同区域细胞同向移动,恢复被中间态选胞压缩的型内方差(σ²_all/σ²_sel≈2.81,节点 24 已证实),+同时避免节点 24 逐细胞独立径向膨胀放大空间邻近细胞表达差、破坏 variogram 的失败模式。++环境变量:SPATVAR_BETA(默认 0 = 关闭,即提交态)、SPATVAR_K(默认 8)、SPATVAR_MIN(默认 3)。+单输入退路:无括号 → 无 b 侧 → 跳过,与父一致。 ## 机制证据(mechanism_evidence) -机制确实运行:β=0.5/seed0 诊断显示 11 个共有型、675 个被选 b 细胞全部被膨胀;-σ²_all/σ²_sel 型间均值 2.81(选择确实把型内方差压缩到 ~1/2.8,验证 PLAN 前提),-f_c 均值 1.91,膨胀后 var_after/var_before 均值 3.86 ≈ 1+β·(ratio−1) 的理论值。-表达分布宽度指标 mmd_u 随 β 单调改善且跨 seed 一致:-0.01116→0.01049(β=0.25, s0)、0.01096→0.01030(s1)、0.01080→0.01018(s2)。-即"选胞压缩型内方差、恢复宽度能改善分布匹配"这一半是成立的。--但四组分变化与 PLAN 预期不符:目标组 cell_state 没有上升——β=0.25 时三个 seed-分别 −0.04/−0.08/−0.11(52.84→52.80、53.27→53.19、53.46→53.35)。-原因在 cell_state 的另一个成分 variogram 随 β 单调变差且跨 seed 一致:-0.01094→0.01163(s0)、0.01076→0.01147(s1)、0.01074→0.01144(s2)——-逐细胞径向膨胀放大了空间邻近细胞间的表达差,破坏表达的空间自相关,-与 mmd_u 的收益互相抵消。expression_change 在 seed0/1 上 +0.75/+0.62(de_score 0.25→0.2857)-但 seed2 上 −0.10(de_score 不动),不稳定。local_spatial/shape_scale 如预期不变(坐标未动)。--## 机制对照(mechanism_off_control)与查分全表--off 对照 = VARRESTORE_BETA=0(代码默认,提交态),f_c≡1、z′=z,输出与父节点逐位一致-(md5 b86afc108c424bc0761200595d6a772b,与节点 21 提交态相同;重跑确定性验证通过,vec-check ok)。--A 半代理(E6.75+E8.0→E7.25,t=0.4):--| 配置 | seed | 榜分 | cell_state | expr_change | shape | local | mmd_u | variogram |-|---|---|---:|---:|---:|---:|---:|---:|---:|-| β=0(父,**提交**) | 0 | 61.14 | 52.84 | 60.50 | 72.18 | 59.03 | 0.01116 | 0.01094 |-| β=0.15 | 0 | 61.17 | 52.84 | 60.55 | 72.18 | 59.09 | 0.01072 | 0.01136 |-| β=0.25 | 0 | 61.33 | 52.80 | 61.25 | 72.18 | 59.08 | 0.01049 | 0.01163 |-| β=0.35 | 0 | 61.28 | 52.71 | 61.18 | 72.18 | 59.04 | 0.01032 | 0.01190 |-| β=0.5 | 0 | 60.98 | 52.50 | 60.31 | 72.18 | 58.93 | 0.01014 | 0.01230 |-| β=0(父) | 1 | 61.62 | 53.27 | 60.93 | 72.28 | 60.00 | 0.01096 | 0.01076 |-| β=0.25 | 1 | 61.76 | 53.19 | 61.55 | 72.28 | 60.03 | 0.01030 | 0.01147 |-| β=0(父) | 2 | 61.58 | 53.46 | 60.59 | 72.23 | 60.03 | 0.01080 | 0.01074 |-| β=0.25 | 2 | 61.53 | 53.35 | 60.49 | 72.23 | 60.04 | 0.01018 | 0.01144 |--β 响应曲线在 0.25 附近见顶(+0.19),但 3-seed 均值只有 +0.09(61.45→61.54),-小于噪声,且 PLAN 目标组 cell_state 三 seed 一致微降。按 PLAN 停止条款-(首查 cell_state 无升反降 → 停止并提交 β=0)提交父配置。+机制确实运行且改变了细胞:β=0.35/K=8/seed0 诊断显示 11 个共有型全部处理、675 个被选 b 细胞全部被位移;+被位移细胞的表达值实际改变(输出 md5 与 β=0 不同),坐标未动。++- **平滑有区分度**:cos(r, r̃) 型间均值 0.30(0.36–0.42 各大型),远低于 PLAN 风险条款的 0.95 阈值——+ r̃ 不等于 r,位移方向确实由空间邻域决定,未退化为节点 24 的逐细胞径向膨胀。+- **平滑压缩程度**:||r̃||/||r|| ≈ 0.29(0.38–0.42 各大型),故 β=0.35 的实际位移幅度 ≈ 0.10|r|,+ 比节点 24 β=0.25 径向膨胀的 0.45|r| 小 4.5 倍。+- **方差确实恢复**:var_after/var_before 型间均值 1.08(β=0.35/K=8)。+- **位移场空间自相关**:cos(r, r̃)=0.30>0 即残差的空间自相关显著为正(邻域平均与自身方向一致),+ 位移场 β·r̃ 是 kNN 平滑场,按构造空间自相关。+- **但四组分变化与 PLAN 预期相反**(A 半代理,seed 0,父基线=节点 24/21 提交态):++| 配置 | 榜分 | cell_state | expr_change | shape | local | mmd_u | variogram |+|---|---:|---:|---:|---:|---:|---:|---:|+| β=0(父,**提交**) | 61.14 | 52.84 | 60.50 | 72.18 | 59.03 | 0.01116 | 0.01094 |+| β=0.15, K=8 | 60.97 | 52.10 | 60.54 | 72.18 | 59.06 | 0.01114 | 0.01162 (+6.2%) |+| β=0.35, K=8 | 60.89 | 51.70 | 60.57 | 72.18 | 59.10 | 0.01110 | 0.01204 (+10.1%) |+| β=0.5, K=24 | 60.88 | 51.66 | 60.56 | 72.18 | 59.10 | 0.01115 | 0.01203 (+10.0%) |++cell_state = f(mmd_u, variogram) 如预期由这两个指标决定,但方向与 PLAN 预期相反:+variogram 单调恶化且**首个 β 档就超过 PLAN 停止条款(>5%)**;mmd_u 几乎不动(0.01116→0.0111),+没有复现节点 24 径向膨胀的 mmd_u 收益(平滑把位移幅度压到 0.10|r|,太小;而放大幅度又先撞上 variogram)。+K=24 的更强平滑与 K=8 结果几乎相同(60.88 vs 60.89),排除"平滑不够"的解释。++## 机制对照(mechanism_off_control)与验证++off 对照 = SPATVAR_BETA=0(代码默认,提交态):位移为零,z′=z,输出与父节点逐位一致+(md5 b86afc108c424bc0761200595d6a772b,与节点 21/24 提交态相同)。验证:+β=0 重跑两次 md5 相同(确定性);seed 3 输出不同(正确响应 seed);vec-check ok;+β>0 各档 vec-check ok、运行 ~5s(远低于 limit)。共 3 次查分(额度 20,余 17)。 ## 结论与教训 -- 机制部分成立、整体证伪:中间态选胞确实压缩型内方差(ratio≈2.8),等比恢复确实一致改善- mmd_u;但 cell_state 不是只看分布宽度——variogram(空间表达自相关)以几乎等量恶化,- 净收益为零。这说明**表达空间里逐细胞各向同性的方差操纵(无论收缩还是膨胀)都被- mmd_u 与 variogram 的对冲卡死**:节点 8/12/17/21 证伪了收缩方向,本节点证伪了膨胀方向。-- 若要利用"方差缺口",恢复必须以不破坏空间自相关的方式进行,例如按空间平滑的- 型×区域局部均值偏移(同区域细胞同向移动)而非逐细胞独立径向膨胀;或只在- 与空间无关的基因子集上恢复方差。留给后续节点。-- de_score 对表达扰动的响应是台阶状(0.25↔0.2857)且跨 seed 不稳定,不能作为优化信号。+- **机制证伪,且比节点 24 更糟**:空间平滑位移对 variogram 的单位幅度伤害显著高于逐细胞径向膨胀+ (位移幅度小 4.5 倍,variogram 恶化反而更大:+10.1% vs 节点 24 β=0.25 的 +6.3%)。+ 解释:variogram 度量表达差随空间距离的结构;对 b 侧细胞叠加任何非生物来源的空间相关扰动场,+ 都会在中短程空间尺度上注入参考里不存在的"伪信号",直接抬高 variogram;而平滑与否不改变+ a/b 细胞在局部邻域内混排时"只动 b 不动 a"造成的 identity/location 耦合破坏。+- 至此表达空间方差缺口利用的两个方向全部关闭:径向膨胀(节点 24,mmd_u 收益被 variogram 对冲)+ 与空间平滑位移(本节点,无 mmd_u 收益、variogram 伤害更大)。**后续节点不应再尝试在+ b 侧表达上做方差恢复类扰动**,无论是否空间平滑、幅度多小(β=0.15 已 -0.17 分)。+ 响应曲线对 β 单调,sup 在边界 β=0,故提交 β=0(与父逐位一致,安全回退)。+- 剩余可攻方向(与父 ANALYSIS 一致):改变 b 侧细胞身份来源(a-b 近邻差分外推,节点 12 已初步证伪)、+ 或转向未被表达扰动触及的 local_spatial/shape_scale(坐标占据,节点 13 各向异性补偿方向)。 ## 验证过 / 没验证 -- 验证过:β=0 与父 md5 逐位一致;β∈{0.15,0.25,0.35,0.5}×seed0 与 β=0.25×seed{1,2}- 的完整响应曲线(9 次查分,额度内);确定性重跑;vec-check ok;单输入退路代码路径与父一致。-- 没验证:空间平滑型方差恢复(上面的后续方向);β 与 κ/γ 的交互(底座参数未动)。+- 验证过:β=0 与父 md5 逐位一致、确定性;β∈{0.15,0.35}(K=8)、β=0.5(K=24) 的 seed0 响应(3 次查分);+ 诊断量(cos、norm ratio、var ratio、位移细胞数);vec-check;单输入退路代码路径与父一致。+- 没验证:多 seed(响应单调、首档即触发停止条款,按 PLAN 停止条款无需继续);β<0.15 档+ (外推单调性表明其上界是 β=0 的父分数);SPATVAR 与 κ/γ 的交互(底座参数未动)。 ## 知识来源 无新增外部生物学知识;全部计算只来自视图内两个输入阶段的表达、标签与坐标。+kNN 空间平滑是通用统计方法,不针对任何保留阶段。diff --git a/solution/run.py b/solution/run.pyindex 274fcb0..1f2a30a 100644--- a/solution/run.py+++ b/solution/run.py@@ -71,6 +71,15 @@ selected b cells. Midstate selection compresses within-type variance; for each shared type, f_c = 1 + beta*(sigma2_all/sigma2_sel - 1) and selected cells expand radially around their selected-subset mean in pooled z-space (env VARRESTORE_BETA, default 0 = off, bit-identical to parent).++Change (PLAN T2EI-09, node 26): spatially smoothed variance restoration of the+selected b cells. For each shared type, residual r_i = z_i - mu_sel in pooled+z-space is smoothed over the cell's SPATVAR_K nearest same-type spatial+neighbors (aligned xy, self included) giving r~_i, and cells displace+z' = z + beta*r~ (env SPATVAR_BETA, default 0 = off, bit-identical to parent).+Neighbors move together, restoring within-type variance without amplifying+expression differences between spatially close cells (the node-24 failure mode+that broke the variogram). """ from __future__ import annotations@@ -111,6 +120,9 @@ SHRINK_GRADED = os.environ.get("SHRINK_GRADED", "1").strip().lower() not in ("0" SHRINK_MIN = int(os.environ.get("SHRINK_MIN", "3")) VARRESTORE_BETA = float(os.environ.get("VARRESTORE_BETA", "0.0")) VARRESTORE_MIN = int(os.environ.get("VARRESTORE_MIN", "3"))+SPATVAR_BETA = float(os.environ.get("SPATVAR_BETA", "0.0"))+SPATVAR_K = int(os.environ.get("SPATVAR_K", "8"))+SPATVAR_MIN = int(os.environ.get("SPATVAR_MIN", "3")) def _spread_apply(X: np.ndarray, rows: np.ndarray, mu: np.ndarray, f: float) -> None:@@ -355,7 +367,7 @@ def main() -> None: la = stage_a.labels.astype(str) lb = stage_b.labels.astype(str) shared: set = set(np.unique(la)).intersection(np.unique(lb))- if SELECTION == "midstate" or SHRINK_ALPHA > 0.0 or VARRESTORE_BETA != 0.0:+ if SELECTION == "midstate" or SHRINK_ALPHA > 0.0 or VARRESTORE_BETA != 0.0 or SPATVAR_BETA != 0.0: Za, Zb, zmu, zsd = _zscore_pair(Xa, Xb) if SELECTION == "midstate": if SEL_SIDE in ("both", "a"):@@ -471,6 +483,61 @@ def main() -> None: Xb_use[all_rows] = np.clip( Zb3[all_rows] * zsd + zmu, 0.0, None).astype(np.float32) + # PLAN T2EI-09 (node 26): spatially smoothed within-type variance restoration+ # of the selected b cells. Instead of node 24's per-cell radial expansion+ # (which amplified expression differences between spatial neighbors and broke+ # the variogram), each selected b cell moves along the MEAN residual of its+ # spatial k-NN within the same type: r_i = z_i - mu_sel_c; kNN built on the+ # aligned xy coordinates (z is a discrete slice axis, excluded);+ # r~_i = mean(r_j, j in kNN(i) incl. self); z' = z + beta * r~. Neighboring+ # cells move in the same direction, so expression spatial autocorrelation is+ # preserved while within-type variance is restored. Coordinates untouched.+ # beta=0 => bit-identical to parent (mechanism-off control).+ spatvar_diag = []+ if SPATVAR_BETA != 0.0 and ib.size and Zb is not None:+ from scipy.spatial import cKDTree+ Zs = Zb+ if shrink_diag:+ Zs = Zb2+ if varrestore_diag:+ Zs = Zb3+ Zs = Zs.copy()+ lab_sel = lb[ib]+ touched = []+ for tname in sorted(shared):+ sel = np.flatnonzero(lab_sel == tname)+ n_sel = int(sel.size)+ if n_sel < SPATVAR_MIN:+ continue+ rows = ib[sel]+ Zsel = Zs[rows]+ mu_sel = Zsel.mean(axis=0)+ r = Zsel - mu_sel+ k = int(min(max(SPATVAR_K, 1), n_sel))+ tree = cKDTree(cb[rows][:, :2])+ _, nbr = tree.query(cb[rows][:, :2], k=k)+ nbr = np.atleast_2d(nbr)+ rt = r[nbr].mean(axis=1)+ Zs[rows] = Zsel + SPATVAR_BETA * rt+ touched.append(rows)+ rn = np.linalg.norm(r, axis=1)+ rtn = np.linalg.norm(rt, axis=1)+ ok = (rn > 1e-12) & (rtn > 1e-12)+ cos = float(np.mean((r[ok] * rt[ok]).sum(axis=1) / (rn[ok] * rtn[ok]))) if ok.any() else 0.0+ spatvar_diag.append({+ "type": tname, "n_sel": n_sel, "k": k,+ "cos_r_rt": cos,+ "norm_ratio": float(np.mean(rtn[ok] / rn[ok])) if ok.any() else 0.0,+ "var_before": float(Zsel.var(axis=0).sum()),+ "var_after": float(Zs[rows].var(axis=0).sum()),+ })+ if spatvar_diag:+ all_rows = np.concatenate(touched)+ base = Xb if Xb_use is Xb else Xb_use+ Xb_use = base.copy()+ Xb_use[all_rows] = np.clip(+ Zs[all_rows] * zsd + zmu, 0.0, None).astype(np.float32)+ spread_plan = [] spread_diag = [] if ib.size and SPREAD_ALPHA > 0.0:@@ -540,6 +607,13 @@ def main() -> None: "varrestore_f_mean": float(np.mean([s["f_c"] for s in varrestore_diag])) if varrestore_diag else 1.0, "varrestore_var_ratio": float(np.mean([s["var_after"] / s["var_before"] for s in varrestore_diag])) if varrestore_diag else 1.0, "varrestore": varrestore_diag,+ "spatvar_beta": SPATVAR_BETA, "spatvar_k": SPATVAR_K,+ "spatvar_n_types": len(spatvar_diag),+ "spatvar_n_cells": int(sum(s["n_sel"] for s in spatvar_diag)),+ "spatvar_cos_mean": float(np.mean([s["cos_r_rt"] for s in spatvar_diag])) if spatvar_diag else 0.0,+ "spatvar_norm_ratio_mean": float(np.mean([s["norm_ratio"] for s in spatvar_diag])) if spatvar_diag else 0.0,+ "spatvar_var_ratio": float(np.mean([s["var_after"] / s["var_before"] for s in spatvar_diag])) if spatvar_diag else 1.0,+ "spatvar": spatvar_diag, }, 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 |
| 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:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 在父管线 b 侧选胞后新增 SPATVAR 步骤:同型内用对齐 xy 坐标建 kNN(K=8),对被选 b 细胞的 pooled-z 残差做邻域平滑后位移 β·r̃,意图恢复型内方差同时保住空间自相关。搜索证伪后提交态 SPATVAR_BETA=0,输出与父节点逐位一致(md5 相同),故榜分四组全部 +0.00。 |
|---|---|
| 各组分数的变化 | cell_state:噪声内(+0.00);搜索中 β>0 时单调下降(52.84→52.10→51.70→51.66),variogram 恶化 +6.2%~+10.1% 超过 PLAN 5% 停止条款 expression_change:噪声内(+0.00,提交态与父逐位一致) local_spatial:噪声内(+0.00,坐标未动) shape_scale:噪声内(+0.00,坐标未动) |
| family_id | T2EI-09 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 2 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 1 次:write 1 |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 11,779 · 输出 929 · 思考 224 |
| 任务(第一行) | 分析节点 n26 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/26/analyst.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/26/analyst.stderr |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 24 |
| 工具调用 | 共 27 次:bash 19、edit 6、read 1、write 1 |
| 用时 | 10 分 |
| token 数 | 输入 63,264 · 输出 8,053 · 思考 13,690 |
| 任务(第一行) | 按计划修改程序:b侧空间平滑型内方差恢复(kNN平滑残差位移替代逐细胞径向膨胀) |
| 最后的回答(摘录) | **做了什么**:按 PLAN T2EI-09 在父管线 b 侧选胞后实现空间 kNN 平滑型内方差恢复(SPATVAR:同型 xy-kNN 平滑残差位移 β·r̃,K=8/MIN=3,环境变量开关),含 off 对照。 **查分结果**(3/20 次,A 半代理 seed0):机制确实运行(11 型 675 细胞全被位移,cos(r,r̃)≈0.30 有区分度),但证伪——β=0.15/0.35(K=8)/0.5(K=24) 的 variogram 恶化 +6.2%/+10.1%/+10.0%,首个 β 档即触发 PLAN 停止条款(>5%),且 mmd_u 无收益(0.01116→0.0111)、cell_state 单调降(52.84→52.10→51.70)、榜分单调降(61.14→60.97→60.89→60.88)。空间平滑对 variogram 的单位幅度伤害反而比节点 24 径向膨胀更大。提交态 SPATVAR_BETA=0,输出与父节点逐位一致(md5 b86afc…),确定性重跑与 vec-check 均通过。 **下一步最值得试**:b 侧表达方差恢复方向(径向与空间平滑两类、共 6 次证伪)应彻底关闭;转向未被表达扰动触及的 local_spatial/shape_scale——沿节点 13 方向做各向异性坐标占据补偿,或改变 b 侧细胞身份来源(a-b 近邻差分生成新中间态细胞,而非搬运/扰动真实 b 细胞)。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/26/engineer.jsonl 163 KB /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/26/engineer.stderr |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 2 分 |
| token 数 | 输入 13,594 · 输出 1,406 · 思考 4,473 |
| 任务(第一行) | 为节点 n26(改进,父节点 n24)写改进计划 PLAN.json |
| 最后的回答(摘录) | 出根因:逐细胞独立径向膨胀放大空间邻近细胞间表达差,破坏空间自相关。当前最弱组cell_state=54.35,五次表达空间各向同性方差操纵(节点8/12/17/21/24)均被mmd_u×variogram对冲卡死。本方案直接针对该失败模式:将膨胀方向做空间kNN平滑,使同区域细胞同向移动,恢复方差的同时保留variogram。",
"approach": "在父管线(κ=0.65, SEL_P=1.0, b侧中间态选胞, γ=1.15)的b侧选胞后、jitter前,新增SPATVARRESTORE步骤:\n1. 对每个共有型c(被选≥SPATVAR_MIN=3),在pooled z-scored panel空间计算每个被选b细胞的残差 r_i = z_i − μ_sel_c。\n2. 空间平滑:用被选b细胞的xy坐标(z为离散切片轴不参与)建kNN图,每个细胞i取同型内空间最近SPATVAR_K个邻居(含自身),计算平滑残差 r̃_i = mean(r_j, j∈kNN(i)∩type_c)。若同型被选细胞<SPATVAR_K,k取同型被选数。\n3. 位移:z'_i = z_i + β·r̃_i,逆变换回表达空间,clip≥0。坐标不动。\n4. 环境变量:SPATVAR_BETA(默认0=关闭),SPATVAR_K(默认8),SPATVAR_MIN(默认3)。\n参数搜索策略(≤10次查分):\n- 先跑β=0确认与父md5一致(1次)。\n- 固定K=8,扫β∈{0.2, 0.35, 0.5, 0.7}(4次),观察mmd_u与variogram。β范围比节点24更大,因为平滑后位移幅度缩小(r̃比r小),需要更大β补偿。\n- 若β响应正向,在最佳β处扫K∈{4, 12}(2次)。\n- 若seed0正向≥0.5分,用seed1确认(1-2次)。\n停止条款:任何配置使variogram恶化>5%(相对β=0)即停止该方向。\n单输入退路:无括号→无b侧→跳过,与父一致。\nvec-quick筛选:先在小样本(前200个被选细胞)上验证r̃的空间自相关系数>0.5(确认平滑有效),再全量跑。",
"expected_groups": ["cell_state"],
"risks": "1. 若型内残差本身空间自相关很高(邻近细胞残差方向相近),平滑后r̃≈r,退化为节点24的逐细胞膨胀,variogram仍会恶化——Engineer应在诊断中输出r̃与r的余弦相似度均值,若>0.95则机制无区分度,尽早停止。2. 平滑可能过度(K太大)导致方差恢复不足,mmd_u改善太小被噪声淹没——用K=4/8/12三档覆盖。3. 预期提升可能仍在噪声(~1分)内——需2个seed确认,单次查分差距<1不算进步。4. 型内被选细胞太少(<K)时kNN退化为型内均值,等效于节点24的径向膨胀——用SPATVAR_MIN=3兜底但记录跳过比例。",
"family_id": "T2EI-09",
"mechanism": "对中间态选胞压缩的型内方差做空间kNN平滑恢复:每个被选b细胞沿其空间邻域的平均残差方向位移β·r̃,而非沿自身残差方向径向膨胀,使同区域细胞同向移动、保留表达的空间自相关(variogram)。",
"vs_constant_shift": "每型有不同的方差缺口(σ²_all/σ²_sel),位移大小和方向由该型被选细胞的空间邻域残差决定,非全局常数;同一型内不同空间区域的细胞位移方向不同(由局部邻域决定),非每型一个常矢量;位移幅度与细胞在型内的空间位置相关,非均匀缩放。",
"mechanism_evidence": "1. 诊断输出:r̃与r的余弦相似度分布(应<0.95才说明平滑有区分度)、r̃的模长/ r的模长比(量化平滑压缩程度)。2. variogram变化:β>0时variogram恶化应<5%(节点24中β=0.25恶化6.3%)。3. mmd_u变化:应随β单调改善(复现节点24的mmd_u收益)。4. cell_state = f(mmd_u, variogram):若mmd_u改善而variogram不恶化,cell_state应上升。5. 位移场的空间自相关:对每个基因,计算位移值的Moran's I或kNN相关,应显著>0。",
"mechanism_off_control": "SPATVAR_BETA=0(代码默认):β=0时位移为零,z'_i = z_i,输出与父节点逐位一致(md5相同)。同一程序只需设环境变量SPATVAR_BETA=0即关闭,无需改代码。预期差别:榜分、四组分、所有中间指标完全相同。",
"sources": []
} |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/26/researcher.jsonl 5 KB /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/nodes/26/researcher.stderr |