总览 · ← 返回运行 20261003-171955-search-t2-embryo-interp-chain-12h
节点 n22 在终选来历上
实现分型各向异性坐标整形(TYPE_ANISO,PLAN T2EI-06)并完成 off/on 对照:occupancy_dice 在 damp −1.0…1.0 全网格上均比关闭时更差(两个方向单调劣化),净效应为负,提交默认 T2_TYPEANISO_ENABLE=0,输出与父节点 13/19 逐位一致。
| 运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。 | 20261003-171955-search-t2-embryo-interp-chain-12h |
|---|---|
| 父节点 | n19 |
| 子节点 | n27 |
| 操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。 | 改进 |
| 状态 | 已打分 |
| 分数 | 搜索目标分 62.52(+0.0) · proxy 62.52(+0.0) |
| 审查 | 通过 1 越界读取:未发现问题——run.py 仅通过 load_manifest/interp_bracket/read_stage(run.py:557-567)读取 manifest['inputs'] 给定的阶段文件,无绝对路径、'..'、/mnt、/home、打分器或 evaluation 路径,无联网下载。; 2 硬编码目标统计量:未发现问题——文件中的常量(α=5、λ=6、β=0.2、aniso damp=1.25、MIN_DELTA=0.25 等,run.py:82-168)均为插值/收敛超参数,所有类型均值、Δ、PCA 轴、std、RMS、细胞数 n 都从两个括号阶段现场计算(t… |
| 用时?从运行开始到结束(或到现在)的挂钟时间。 | 17 分 |
| 程序版本 | 2c66561966c522175caca41953664ffcc1ffc19d (programs.git) |
| 导入自 | 20261003-094242-search-t2-embryo-interp-g24-D-s2#22 |
| 备注 | re-scored at launch (origin 20261003-094242-search-t2-embryo-interp-g24-D-s2 node 22, score there 62.52) |
方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
来自 programs.git 2c66561966:solution/METHOD.md
实现分型各向异性坐标整形(TYPE_ANISO,PLAN T2EI-06)并完成 off/on 对照:occupancy_dice 在 damp −1.0…1.0 全网格上均比关闭时更差(两个方向单调劣化),净效应为负,提交默认 T2_TYPEANISO_ENABLE=0,输出与父节点 13/19 逐位一致。
方法(family T2EI-06,PLAN:分型各向异性坐标整形攻 occupancy_dice)
保留父节点 13/19 全部管线(mix 分层混抽、procrustes3d 对齐、scale_damp=0.5、α=5 类型级收敛位移、λ=6 投影加权、β=0.2 型内 NN 配对收缩、全局 aniso 坐标整形 γ=damp×t(damp=1.25)、jitter、RMS 回缩;VARISO 默认关闭)。按 PLAN 在全局 aniso_reshape 之后、jitter 之前插入 TYPE_ANISO:
- 对每个在括号两阶段各 ≥T2_TYPEANISO_MIN_CELLS(默认 20)细胞的共有类型:在对齐帧(全局 aniso 之前、已缩放到 target_rms 的 ca/cb)里,两侧各绕自身类型质心中心化,合并求 3 维 PCA 轴,记录逐轴 std_a[k]、std_b[k]。
- 逐轴目标:target_k = exp(log(std_a+ε) + t·(log(std_b+ε)−log(std_a+ε))),ε=0.01。
- 该类型的输出细胞(全局 aniso 之后的坐标):绕输出型质心中心化、投影到类型 PCA 轴,轴 k 乘 r_k = 1 + γ_ta·(target_k/cur_k − 1),γ_ta = T2_TYPEANISO_DAMP × t,r_k 夹到 [0.5, 2.0],重构。
- 之后的既有 scale_to_rms(jitter 后)把整朵云精确回缩到同一 target RMS,scale_log_ratio 不受影响。
- 任一侧 <MIN_CELLS 的类型跳过;单输入阶段(无括号)走上层既有退路,TYPE_ANISO 不执行。
环境变量:T2_TYPEANISO_ENABLE(提交默认 0)、T2_TYPEANISO_DAMP(默认 0.5)、T2_TYPEANISO_MIN_CELLS=20、T2_TYPEANISO_CLIP_LO/HI=0.5/2.0、T2_TYPEANISO_EPS=0.01。全部为确定性数组运算,无新增随机源。
机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4,10 个共有类型全部处理)
- 逐型 r_k 异质、远离 1(PLAN 风险 1/4 排除——机制确实在动):damp=0.5(γ=0.2)时 r_mean=0.924、r∈[0.866, 0.981],仅 17% 落在 [0.95,1.05];damp=1.0 r_mean=0.848;damp=−1.0 r_mean=1.152。target/cur 均值 0.62:括号 log 插值目标要求压缩每个类型的子云。clip_frac=0(无类型触及 0.5/2.0 边界)。
- 四组分变化(A 半查分,off 与父 13/19 逐位一致,off 榜分 61.45):
| 配置 | 榜分 | occupancy raw/skill | d2 raw/skill | nbr raw | shape_scale 组 |
|---|---|---|---|---|---|
| off(=父13/19) | 61.45 | 0.8066 / 0.421 | 0.0047 / 0.979 | 0.05506 | 77.75 |
| damp=0.25 | 61.43 | 0.7972 / 0.404 | 0.00363 / 0.996 | 0.05520 | 77.73 |
| damp=0.5 | 61.28 | 0.7849 / 0.382 | 0.00338 / 1.000 | 0.05530 | 77.15 |
| damp=1.0 | 61.05 | 0.7742 / — | 0.00401 / — | 0.05530 | 76.26 |
| damp=−0.5(反向膨胀) | 60.76 | 0.7862 / — | 0.00783 / — | 0.05501 | 74.95 |
| damp=−1.0 | 60.18 | 0.7783 / — | 0.01189 / — | 0.05517 | 72.71 |
expression_change / cell_state 四组在所有配置下逐位不变(表达未动,符合设计)。
关闭对照(mechanism_off_control)
T2_TYPEANISO_ENABLE=0:TYPE_ANISO 代码块整体跳过,seed 0 下 X 与 spatial_3D 均与父节点输出 array_equal=True(逐位验证),8 项指标与父 13/19 完全相同(榜分 61.45,A 半;正式 B 半分即父节点 62.52)。提交默认即此配置。
如实结论:机制净效应为负,提交默认关闭
- PLAN 验收条件失败:要求 occupancy_dice raw 改善 ≥0.01,实测在 damp>0(压缩方向,即括号 log 插值目标方向)单调劣化 0.8066→0.7972→0.7849→0.7742;d2_shape 虽从 0.979 升到 1.000(+0.17 分),抵不过 occupancy 的损失(−0.15~−0.33 分)。damp=0.25 已触发 PLAN 风险 2 的邻域小幅劣化(0.05506→0.05520)。
- 反向(膨胀,damp<0)更差:occupancy 同样下降且 d2_shape 崩塌(raw 0.0047→0.0119),说明 occupancy_dice 的缺口(skill 0.42)不在“分型子云展幅”这个自由度上:全局 aniso(父 13,damp=1.25)已把整体各向异性调到网格最优,逐型再压缩会把云捏成带空隙的团块(dice 降),逐型膨胀会让类型互相重叠、破坏整体距离分布(d2 崩)。
- 这印证了 PLAN 风险 3 的判据方向:occupancy 对分型整形有响应但全为负响应——mismatch 在体素占据的全局分布/密度,不在逐型 aspect ratio。
- damp=0.75 未查分(介于 0.5 与 1.0 之间,单调性已确立,省额度)。查分额度用 6/20。
- 已验证:off=父 13/19 逐位(seed 0);seed 1 两次运行逐位一致;vec-check 通过;n=5000 ∈ [583,5000];运行 ~9s、内存 <0.4GB。未验证:真实括号 t=1/3(机制已关闭,无影响);MIN_CELLS/clip 变体(occupancy 双向劣化,无继续扫的意义)。
- 生物学知识来源:无外部知识;仅使用 PLAN 给定的分型整形假设与输入数据现场计算的几何统计量。
视图无关性
TYPE_ANISO(含关闭状态)只依赖:视图坐标数据、类型标签、t(manifest 时间差,平移不变)、seed(未新增随机源)。无绝对时间、无路径/文件名/board 字段、无硬编码统计量。默认路径与父节点 13/19 逐位一致,视图无关性继承自父节点。
下一步建议
occupancy_dice(skill 0.42)对全局各向异性(父 13 已最优)和逐型各向异性(本节点,双向劣化)都关不上口子。剩余可能自由度:(a) 逐型质心位置的插值/重排(不是展幅缩放,而是类型间相对布局向括号插值目标移动)——但需盯 neighborhood_mmd 与结构门;(b) z 轴单独处理(离散切片结构,occupancy 的 16³ 网格对 z 分层敏感,全局 PCA 整形可能把层间距调错);(c) 接受 shape_scale 现状,转攻 de_score/de_direction(0.58/0.64,权重各 12.5)——表达侧位移管线(α/λ/β)尚未做过针对 DE 排序指标的专门网格。
调研员的计划
| 名称 | Per-type anisotropic coordinate reshaping to lift occupancy_dice |
|---|---|
| 动机 | Node 13/19 board 62.52: occupancy_dice skill 0.424 (3.53/8.3, below floor 0.5) is the single largest remaining gap in shape_scale; d2_shape 0.963 and scale_log_ratio 0.932 are near ceiling. Global aniso (damp=1.25) improved occupancy 0.7735→0.8086 (+0.47 pts) but the single global PCA averages out type-specific aspect-ratio changes. Nodes 15/17/19 proved variogram is locked by on/off sparse structure—cell_state attacks via amplitude scaling are dead. The per-type route is the parent ANALYSIS's top suggestion. |
| 做法 | Keep the entire node-13 pipeline (mix, procrustes3d, scale_damp=0.5, α=5, λ=6, β=0.2, global aniso γ=damp×t damp=1.25, jitter, RMS rescale). Insert a new step TYPE_ANISO immediately after the global aniso_reshape and before jitter: 1. For each cell type with ≥T2_TYPEANISO_MIN_CELLS (default 20) cells in BOTH bracket stages (in the aligned frame, before global aniso): center by type centroid, compute 3-component PCA axes, record per-axis std_a[k] and std_b[k]. 2. Target per-axis std: log-target_k = log(std_a[k]+ε) + t·(log(std_b[k]+ε)−log(std_a[k]+ε)), ε=0.01. 3. For output cells of this type: project (cell − output_type_centroid) onto type-PCA axes; scale component k by r_k = 1 + γ_ta·(exp(log-target_k)/cur_std_k − 1), clip r_k to [0.5, 2.0]; reconstruct. γ_ta = T2_TYPEANISO_DAMP × t. 4. After all types, rescale entire cloud to the same target RMS used by the global aniso (preserves scale_log_ratio). 5. Types with <MIN_CELLS on either side: skip (coordinates unchanged). Key parameters: T2_TYPEANISO_ENABLE (default 1), T2_TYPEANISO_DAMP (default 0.5, grid {0.25, 0.5, 0.75, 1.0}), T2_TYPEANISO_MIN_CELLS=20, T2_TYPEANISO_CLIP_LO/HI=0.5/2.0. Single-input fallback: no bracket → skip… |
| 风险 | 1) Per-type PCA axes unstable for types with 20-40 cells → noisy scaling factors. Mitigate: MIN_CELLS=20, aggressive clip [0.5,2.0], start damp at 0.25. Engineer: check per-type r_k distribution; if >50% of types hit clip bounds, reduce damp. 2) Moving coordinates per-type disrupts between-type spatial adjacency → neighborhood_mmd degrades (expression-position pairing broken at type boundaries). Early signal: if neighborhood_mmd raw worsens by >0.003 at damp=0.25, abort and submit off. 3) occupancy_dice may be insensitive to per-type reshaping if the mismatch is in cell density rather than aspect ratio. Early signal: if occupancy_dice raw changes <0.005 at damp=1.0, the mechanism isn't reaching the right degree of freedom. 4) Global aniso already captures most of the anisotropy; per-type correction may be redundant. Check: if per-type r_k are all within [0.95, 1.05], the mechanism has no room. |
代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。
对比:父节点版本 f7e9934472。改动的文件:solution/METHOD.md +33 −27、solution/README.md +7 −7、solution/run.py +101 −2
diff --git a/solution/METHOD.md b/solution/METHOD.mdindex 8c2d34b..7419de5 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,44 +1,50 @@-实现型内逐基因方差对数插值(VARISO,均值保持版)并完成 off/on 对照:variogram 未改善、邻域 MMD 在各 damp 下均劣化,净效应为负,提交默认机制关闭,输出与父节点 13 逐位一致。+实现分型各向异性坐标整形(TYPE_ANISO,PLAN T2EI-06)并完成 off/on 对照:occupancy_dice 在 damp −1.0…1.0 全网格上均比关闭时更差(两个方向单调劣化),净效应为负,提交默认 T2_TYPEANISO_ENABLE=0,输出与父节点 13/19 逐位一致。 -## 方法(family T2EI-01,PLAN:型内逐基因方差对数插值修复 variogram)+## 方法(family T2EI-06,PLAN:分型各向异性坐标整形攻 occupancy_dice) -保留父节点 13 全部管线(mix 分层混抽、procrustes3d 对齐、scale_damp=0.5、α=5 类型级收敛位移、λ=6 投影加权、β=0.2 型内 NN 配对收缩、aniso 坐标整形 γ=0.5、jitter、RMS 回缩)。在表达侧末尾(β 配对收缩之后、vstack/aniso 之前)新增 VARISO:+保留父节点 13/19 全部管线(mix 分层混抽、procrustes3d 对齐、scale_damp=0.5、α=5 类型级收敛位移、λ=6 投影加权、β=0.2 型内 NN 配对收缩、全局 aniso 坐标整形 γ=damp×t(damp=1.25)、jitter、RMS 回缩;VARISO 默认关闭)。按 PLAN 在全局 aniso_reshape 之后、jitter 之前插入 TYPE_ANISO: -- 对每个共有类型(括号两侧各 ≥10 细胞、|Δ|≥0.25 的 DE 基因 ≥10 个、输出侧 ≥10 细胞),用括号两阶段该型全细胞计算每基因型内 std_a、std_b;target_std = exp(log(std_a+ε) + γ_v·(log(std_b+ε)−log(std_a+ε))),γ_v = T2_VARISO_DAMP × t,ε=0.01(PLAN 步骤 1–2 原样)。-- **第一版(PLAN 字面实现)**:f = clip(target/cur_std, 0.3, 3.0),细胞 x ← μ_type_out + (x−μ_type_out)·f,nnz-only、clip≥0。实测伪批量最大偏移 2.7(单基因)——nnz-only 绕总体均值缩放不保均值,de_score 从 0.25 掉到 0.179,违反 PLAN 的“DE 逐位不变”前提。-- **第二版(提交代码,均值保持修正)**:改为绕 **nnz 均值 μ_nnz** 缩放 nnz 项,且用精确方差分解 var_all = fixed + p·var_nnz(fixed = p(1−p)μ_nnz²,为 on/off 双峰部分,缩放 nnz 离散度动不了它)解出 f² = clip((target²−fixed)/(p·var_nnz), 0.3², 3.0²)。伪批量最大偏移降到 0.012,de_score 0.2500、de_direction 0.385、mmd_u 0.0116 与关闭对照逐位/噪声内一致(PLAN 风险 4 已排除)。-- 环境变量:T2_VARISO_ENABLE(**提交默认 0**)、T2_VARISO_DAMP(默认 1.0)、T2_VARISO_CLIP_LO/HI(0.3/3.0)、T2_VARISO_EPS/MIN_CELLS/MIN_DE。-- 单输入阶段退路:interp_bracket 无 b 时提前 return 分层复制,VARISO 不执行(与父节点一致)。+1. 对每个在括号两阶段各 ≥T2_TYPEANISO_MIN_CELLS(默认 20)细胞的共有类型:在**对齐帧(全局 aniso 之前、已缩放到 target_rms 的 ca/cb)**里,两侧各绕自身类型质心中心化,合并求 3 维 PCA 轴,记录逐轴 std_a[k]、std_b[k]。+2. 逐轴目标:target_k = exp(log(std_a+ε) + t·(log(std_b+ε)−log(std_a+ε))),ε=0.01。+3. 该类型的输出细胞(全局 aniso 之后的坐标):绕输出型质心中心化、投影到类型 PCA 轴,轴 k 乘 r_k = 1 + γ_ta·(target_k/cur_k − 1),γ_ta = T2_TYPEANISO_DAMP × t,r_k 夹到 [0.5, 2.0],重构。+4. 之后的既有 scale_to_rms(jitter 后)把整朵云精确回缩到同一 target RMS,scale_log_ratio 不受影响。+5. 任一侧 <MIN_CELLS 的类型跳过;单输入阶段(无括号)走上层既有退路,TYPE_ANISO 不执行。 -## 机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4)+环境变量:T2_TYPEANISO_ENABLE(**提交默认 0**)、T2_TYPEANISO_DAMP(默认 0.5)、T2_TYPEANISO_MIN_CELLS=20、T2_TYPEANISO_CLIP_LO/HI=0.5/2.0、T2_TYPEANISO_EPS=0.01。全部为确定性数组运算,无新增随机源。 -- 第一版 damp=1.0:处理 10 个共有类型;f_mean=1.04、f∈[0.9,1.1] 仅 22%、f 触及 clip 两端(0.3/3.0)、cur/target≈1.97(输出型内 std 约为括号 log 插值目标的 2 倍)——机制确有位移(PLAN 风险 1 排除),但改变 5000 细胞中约 3151 个的表达值。-- 第二版 damp=1.0:f_mean=1.19、f∈[0.9,1.1] 仅 5%(分解后大量基因 fixed 已超 target²,f 被压向 0.3 下限或推向膨胀端),同样改动 3151 个细胞。-- 四组分变化(第二版 d1.0 vs off):expression_change 61.0→61.0(逐位)、cell_state 48.9→49.0(variogram raw 0.014420→0.014362,+0.01 分,噪声内)、local_spatial 58.2→56.8(neighborhood_mmd 0.05506→0.05828,−0.35 分)、shape_scale 77.8→77.8(坐标未动,逐位)。+## 机制生效证据(seed 0,proxy E6.75+E8.0→E7.25,t=0.4,10 个共有类型全部处理) -## 关闭对照(mechanism_off_control)+- 逐型 r_k 异质、远离 1(PLAN 风险 1/4 排除——机制确实在动):damp=0.5(γ=0.2)时 r_mean=0.924、r∈[0.866, 0.981],仅 17% 落在 [0.95,1.05];damp=1.0 r_mean=0.848;damp=−1.0 r_mean=1.152。target/cur 均值 0.62:括号 log 插值目标要求**压缩**每个类型的子云。clip_frac=0(无类型触及 0.5/2.0 边界)。+- 四组分变化(A 半查分,off 与父 13/19 逐位一致,off 榜分 61.45):++| 配置 | 榜分 | occupancy raw/skill | d2 raw/skill | nbr raw | shape_scale 组 |+|---|---:|---|---|---|---:|+| off(=父13/19) | **61.45** | 0.8066 / 0.421 | 0.0047 / 0.979 | 0.05506 | 77.75 |+| damp=0.25 | 61.43 | 0.7972 / 0.404 | 0.00363 / 0.996 | 0.05520 | 77.73 |+| damp=0.5 | 61.28 | 0.7849 / 0.382 | 0.00338 / 1.000 | 0.05530 | 77.15 |+| damp=1.0 | 61.05 | 0.7742 / — | 0.00401 / — | 0.05530 | 76.26 |+| damp=−0.5(反向膨胀) | 60.76 | 0.7862 / — | 0.00783 / — | 0.05501 | 74.95 |+| damp=−1.0 | 60.18 | 0.7783 / — | 0.01189 / — | 0.05517 | 72.71 | -T2_VARISO_ENABLE=0:VARISO 代码块整体跳过,输出与父节点 13 逐位相同(X 与 spatial_3D 均 array_equal=True,seed 0 验证;提交默认即此配置)。同日 A 半锚点查分:+ expression_change / cell_state 四组在所有配置下逐位不变(表达未动,符合设计)。++## 关闭对照(mechanism_off_control) -| 配置 | 榜分 | variogram raw/skill | mmd_u raw | nbr_mmd raw | de_score |-|---|---:|---|---|---|---|-| off(=父13,seed0) | **61.45** | 0.014420 / 0.372 | 0.01164 | 0.05506 | 0.2500 |-| 第一版 damp=1.0 | 59.45 | 0.014062 / 0.378 | 0.01452 | 0.06578 | 0.1786 |-| 第二版 damp=1.0 | 61.10 | 0.014362 / 0.373 | 0.01166 | 0.05828 | 0.2500 |-| 第二版 damp=0.5 | 61.09 | 0.014507 / 0.370 | 0.01165 | 0.05813 | 0.2500 |+T2_TYPEANISO_ENABLE=0:TYPE_ANISO 代码块整体跳过,seed 0 下 X 与 spatial_3D 均与父节点输出 array_equal=True(逐位验证),8 项指标与父 13/19 完全相同(榜分 61.45,A 半;正式 B 半分即父节点 62.52)。提交默认即此配置。 ## 如实结论:机制净效应为负,提交默认关闭 -1. **variogram 对型内离散度缩放几乎无响应**(raw 变化 <1e-4,噪声内):该指标比较 E|x_i−x_j|^0.5,主要由表达值的 on/off(零/非零)结构决定;VARISO 刻意保留 nnz 掩码(父节点已证明破坏稀疏结构会崩掉 variogram/mmd),因此能动的只有非零值的幅度,恰是 variogram 不敏感的自由度。cur/target≈2 的差距几乎全部在 fixed(on/off 双峰)分量里,均值保持版无法也不应去动它。-2. **neighborhood_mmd 随机制强度单调劣化**(0.0551→0.0583/0.0581,d0.5 与 d1.0 相同量级):改变表达值而坐标不动,直接扰动“表达-位置配对”的邻域均值分布。与节点 17(型内逐基因方差回复,γ>0 时 nbr 单调劣化、提交 γ=0)结论一致、实现路径不同(17 为回复式,本节点为 PLAN 的对数插值式+均值保持分解),两个独立实现同向失败,说明该机制族在“variogram 由稀疏结构主导”这一点上撞到同一堵墙。-3. damp 网格未继续扫(PLAN 步骤 9 的条件“variogram 改善且其他不亏”未满足);查分额度用 6/20。-4. 已验证:off=父13 逐位(seed0);第二版 pb 最大偏移 0.012(vs 第一版 2.7);默认配置 seed1 两次运行逐位一致;vec-check 通过;n=5000 在 [583,5000] 内;运行 ~3.5s、内存 <0.4GB。未验证:真实括号 t=1/3(机制已关闭,无影响);damp∈(0,0.5) 细扫(预期 nbr 损失同量级、variogram 增益为零,不值得额度)。-5. 生物学知识来源:无外部知识;仅使用 PLAN 给定的方差插值假设与输入数据现场计算的统计量。+1. **PLAN 验收条件失败**:要求 occupancy_dice raw 改善 ≥0.01,实测在 damp>0(压缩方向,即括号 log 插值目标方向)单调**劣化** 0.8066→0.7972→0.7849→0.7742;d2_shape 虽从 0.979 升到 1.000(+0.17 分),抵不过 occupancy 的损失(−0.15~−0.33 分)。damp=0.25 已触发 PLAN 风险 2 的邻域小幅劣化(0.05506→0.05520)。+2. **反向(膨胀,damp<0)更差**:occupancy 同样下降且 d2_shape 崩塌(raw 0.0047→0.0119),说明 occupancy_dice 的缺口(skill 0.42)不在“分型子云展幅”这个自由度上:全局 aniso(父 13,damp=1.25)已把整体各向异性调到网格最优,逐型再压缩会把云捏成带空隙的团块(dice 降),逐型膨胀会让类型互相重叠、破坏整体距离分布(d2 崩)。+3. 这印证了 PLAN 风险 3 的判据方向:occupancy 对分型整形有响应但全为负响应——mismatch 在体素占据的**全局分布/密度**,不在逐型 aspect ratio。+4. damp=0.75 未查分(介于 0.5 与 1.0 之间,单调性已确立,省额度)。查分额度用 6/20。+5. 已验证:off=父 13/19 逐位(seed 0);seed 1 两次运行逐位一致;vec-check 通过;n=5000 ∈ [583,5000];运行 ~9s、内存 <0.4GB。未验证:真实括号 t=1/3(机制已关闭,无影响);MIN_CELLS/clip 变体(occupancy 双向劣化,无继续扫的意义)。+6. 生物学知识来源:无外部知识;仅使用 PLAN 给定的分型整形假设与输入数据现场计算的几何统计量。 ## 视图无关性 -VARISO(含关闭状态)只依赖:视图数据(表达、标签)、t(manifest 时间差,平移不变)、seed(未新增随机源,全部为确定性数组运算)。无绝对时间、无路径/文件名/board 字段、无硬编码统计量。默认路径与父节点 13 逐位一致,视图无关性继承自父节点。+TYPE_ANISO(含关闭状态)只依赖:视图坐标数据、类型标签、t(manifest 时间差,平移不变)、seed(未新增随机源)。无绝对时间、无路径/文件名/board 字段、无硬编码统计量。默认路径与父节点 13/19 逐位一致,视图无关性继承自父节点。 ## 下一步建议 -variogram 失分(skill 0.37)的根源是 on/off 结构与目标阶段不匹配,而非非零值幅度:两个独立方差缩放实现均证实此路不通。若要继续攻 cell_state,需改变零/非零模式本身(如按目标阶段的型内表达频率重采样 nnz 掩码),但父节点已证明全局稀疏率扰动会连带 mmd_u/邻域崩盘,风险高;更划算的方向仍是 shape_scale(occupancy skill 0.42,节点 13 建议的分块/分型整形)。+occupancy_dice(skill 0.42)对全局各向异性(父 13 已最优)和逐型各向异性(本节点,双向劣化)都关不上口子。剩余可能自由度:(a) 逐型**质心位置**的插值/重排(不是展幅缩放,而是类型间相对布局向括号插值目标移动)——但需盯 neighborhood_mmd 与结构门;(b) z 轴单独处理(离散切片结构,occupancy 的 16³ 网格对 z 分层敏感,全局 PCA 整形可能把层间距调错);(c) 接受 shape_scale 现状,转攻 de_score/de_direction(0.58/0.64,权重各 12.5)——表达侧位移管线(α/λ/β)尚未做过针对 DE 排序指标的专门网格。diff --git a/solution/README.md b/solution/README.mdindex 0314f25..d1dfdd2 100644--- a/solution/README.md+++ b/solution/README.md@@ -1,8 +1,8 @@-# mix + 表达收敛管线 + 各向异性PCA坐标整形 + VARISO 对照(T2:embryo:val_interp)+# mix + 表达收敛管线 + 各向异性坐标整形 + TYPE_ANISO 对照(T2:embryo:val_interp) -父节点 13 管线原样保留(mix 混抽 + α=5 类型级收敛位移 + λ=6 投影加权 + β=0.2 型内配对收缩-+ aniso 坐标整形 damp=1.25 + jitter + RMS 回缩)。本节点按 PLAN(family T2EI-01)新增-VARISO:型内逐基因方差对数插值(均值保持版,绕 nnz 均值缩放、精确方差分解),-T2_VARISO_ENABLE=1 开启。proxy off/on 对照:variogram 无改善、neighborhood_mmd 各 damp-下均劣化、净 −0.35~−2.0,机制默认关闭(T2_VARISO_ENABLE=0),提交输出与父节点 13-逐位一致。详见 METHOD.md。+父节点 13/19 管线原样保留(mix 混抽 + α=5 类型级收敛位移 + λ=6 投影加权 + β=0.2 型内配对收缩++ 全局 aniso 坐标整形 damp=1.25 + jitter + RMS 回缩;VARISO 默认关闭)。本节点按 PLAN+(family T2EI-06)新增 TYPE_ANISO:分型各向异性坐标整形(逐类型 PCA 轴展幅向括号 log 插值+目标缩放),T2_TYPEANISO_ENABLE=1 开启。proxy off/on 网格(damp −1.0…1.0):occupancy_dice+在两个方向都单调劣化(off 0.8066 → 0.7742@d1.0 / 0.7783@dm1.0),净 −0.02~−1.27 分,+机制默认关闭(T2_TYPEANISO_ENABLE=0),提交输出与父节点 13/19 逐位一致。详见 METHOD.md。diff --git a/solution/run.py b/solution/run.pyindex 5fc562e..19e9eba 100644--- a/solution/run.py+++ b/solution/run.py@@ -34,7 +34,17 @@ input before it (no displacement possible without two stages). Newest mechanism (ANISO, family T2EI-06, this node): coordinate-side anisotropic PCA reshaping, see aniso_reshape below. Expression untouched. -This node (19, VARISO, family T2EI-01): within-type per-gene std+This node (22, TYPE_ANISO, family T2EI-06): per-type anisotropic coordinate+reshaping inserted after the global aniso and before jitter; each shared type's+output sub-cloud is scaled along its own PCA axes toward the log-interpolated+bracket per-axis stds (see TYPEANISO_* docs). Off/on grid on the proxy+(damp -1.0..1.0): occupancy_dice raw degrades monotonically in BOTH directions+from off (0.8066 -> 0.7742 at damp=1.0, -> 0.7783 at damp=-1.0), d2_shape+collapses under expansion, net board -0.02..-1.27. Submitted with+TYPEANISO_ENABLE=0: output bit-for-bit identical to parent node 13/19.+Details in METHOD.md.++Earlier node (19, VARISO, family T2EI-01): within-type per-gene std log-interpolation after the pair-shrinkage step, mean-preserving (nnz deviations scaled around the nnz mean; exact variance decomposition var_all = fixed + p*var_nnz). Off/on control on the proxy: variogram raw@@ -126,6 +136,29 @@ ANISO_CLIP = (float(os.environ.get("T2_ANISO_CLIP_LO", "0.3")), # changes. VARISO_ENABLE=0 (or DAMP=0) reproduces the parent bit-for-bit. # Submitted default: ENABLE=0 — proxy off/on scoring showed the mechanism is # net-negative at every damp tried (see METHOD.md), same conclusion as node 17.+# Per-type anisotropic coordinate reshaping (TYPE_ANISO, family T2EI-06, this node):+# after the global aniso_reshape and before jitter, each shared cell type's output+# sub-cloud is independently stretched/compressed along its own PCA axes toward+# the log-interpolated bracket per-axis stds. For each type with >=MIN_CELLS cells+# in BOTH bracket stages (aligned frame, before global aniso): center each side by+# its own type centroid, PCA axes from the merged centered points, per-axis+# std_a[k], std_b[k]; target_k = exp(log(std_a+eps) + t*(log(std_b+eps)-log(std_a+eps))),+# eps=0.01. Output cells of the type: project (cell - output type centroid) onto+# the type axes, scale axis k by r_k = 1 + gamma_ta*(target_k/cur_k - 1) clipped+# to [LO, HI], gamma_ta = TYPEANISO_DAMP * t; reconstruct. The subsequent+# scale_to_rms restores the exact target RMS (scale_log_ratio untouched).+# Expression untouched. TYPEANISO_ENABLE=0 reproduces the parent bit-for-bit.+# Submitted default: ENABLE=0 — proxy off/on grid (damp -1.0..1.0) showed+# occupancy_dice raw degrades monotonically in BOTH directions from off+# (0.8066 -> 0.7972/0.7849/0.7742 for damp 0.25/0.5/1.0; 0.7862/0.7783 for+# -0.5/-1.0) and d2_shape collapses under expansion; net board -0.02..-1.27.+# Output with ENABLE=0 is bit-for-bit identical to parent node 13/19.+TYPEANISO_ENABLE = os.environ.get("T2_TYPEANISO_ENABLE", "0") == "1"+TYPEANISO_DAMP = float(os.environ.get("T2_TYPEANISO_DAMP", "0.5"))+TYPEANISO_MIN_CELLS = int(os.environ.get("T2_TYPEANISO_MIN_CELLS", "20"))+TYPEANISO_CLIP = (float(os.environ.get("T2_TYPEANISO_CLIP_LO", "0.5")),+ float(os.environ.get("T2_TYPEANISO_CLIP_HI", "2.0")))+TYPEANISO_EPS = float(os.environ.get("T2_TYPEANISO_EPS", "0.01")) VARISO_ENABLE = os.environ.get("T2_VARISO_ENABLE", "0") == "1" VARISO_DAMP = float(os.environ.get("T2_VARISO_DAMP", "1.0")) VARISO_CLIP = (float(os.environ.get("T2_VARISO_CLIP_LO", "0.3")),@@ -170,6 +203,58 @@ def aniso_reshape(coords, aligned_a, aligned_b, t: float, damp: float): return out, info +def type_aniso_reshape(coords, labs_out, ca, cb, la_all, lb_all, t: float):+ """Per-type anisotropic reshaping of the output cloud (see TYPEANISO_* docs)."""+ gamma = TYPEANISO_DAMP * float(t)+ c = np.asarray(coords, dtype=np.float64).copy()+ lo, hi = TYPEANISO_CLIP+ shared = sorted(set(la_all.tolist()) & set(lb_all.tolist()))+ rs_all, tgt_over_cur, n_done, n_clip = [], [], 0, 0+ for lab in shared:+ ma = la_all == lab+ mb = lb_all == lab+ if int(ma.sum()) < TYPEANISO_MIN_CELLS or int(mb.sum()) < TYPEANISO_MIN_CELLS:+ continue+ Ac = np.asarray(ca, dtype=np.float64)[ma]+ Bc = np.asarray(cb, dtype=np.float64)[mb]+ Ac = Ac - Ac.mean(axis=0)+ Bc = Bc - Bc.mean(axis=0)+ M = np.vstack([Ac, Bc])+ cov = (M.T @ M) / max(len(M) - 1, 1)+ evals, evecs = np.linalg.eigh(cov)+ axes = evecs[:, np.argsort(evals)[::-1]]+ std_a = np.maximum((Ac @ axes).std(axis=0), 1e-9)+ std_b = np.maximum((Bc @ axes).std(axis=0), 1e-9)+ target = np.exp(np.log(std_a + TYPEANISO_EPS)+ + float(t) * (np.log(std_b + TYPEANISO_EPS) - np.log(std_a + TYPEANISO_EPS)))+ rows = np.where(labs_out == lab)[0]+ if rows.size < TYPEANISO_MIN_CELLS:+ continue+ P = c[rows]+ mu = P.mean(axis=0)+ proj = (P - mu) @ axes+ cur = np.maximum(proj.std(axis=0), 1e-9)+ r = np.clip(1.0 + gamma * (target / cur - 1.0), lo, hi)+ c[rows] = (proj * r) @ axes.T + mu+ rs_all.append(r)+ tgt_over_cur.append(target / cur)+ n_clip += int(((r <= lo + 1e-12) | (r >= hi - 1e-12)).sum())+ n_done += 1+ info = {+ "typeaniso_gamma": gamma,+ "typeaniso_n_types": n_done,+ "typeaniso_r_mean": float(np.mean(rs_all)) if rs_all else None,+ "typeaniso_r_min": float(np.min(rs_all)) if rs_all else None,+ "typeaniso_r_max": float(np.max(rs_all)) if rs_all else None,+ "typeaniso_r_in_band": float(np.mean((np.concatenate(rs_all) >= 0.95)+ & (np.concatenate(rs_all) <= 1.05))) if rs_all else None,+ "typeaniso_clip_frac": float(n_clip / max(3 * n_done, 1)) if n_done else None,+ "typeaniso_tgt_over_cur_mean": float(np.mean(np.concatenate(tgt_over_cur))) if tgt_over_cur else None,+ "typeaniso_rs": [r.tolist() for r in rs_all],+ }+ return c, info++ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float): t = float(t) damp = float(params.get("scale_damp", 1.0))@@ -441,9 +526,19 @@ def mix_converge(stage_a, stage_b, t: float, params: dict, alpha: float): if ANISO_ENABLE and coords.shape[0] >= 10: coords, ai = aniso_reshape(coords, aligned_a, aligned_b, t, ANISO_DAMP) aniso_info.update(ai)+ ta_info = {"typeaniso_enable": bool(TYPEANISO_ENABLE), "typeaniso_damp": TYPEANISO_DAMP,+ "typeaniso_min_cells": TYPEANISO_MIN_CELLS}+ if TYPEANISO_ENABLE and TYPEANISO_DAMP != 0.0 and ia.size and ib.size and coords.shape[0] >= 10:+ labs_out = np.concatenate([np.asarray(stage_a.labels).astype(str)[ia],+ np.asarray(stage_b.labels).astype(str)[ib]])+ coords, tai = type_aniso_reshape(coords, labs_out, ca, cb,+ np.asarray(stage_a.labels).astype(str),+ np.asarray(stage_b.labels).astype(str), t)+ ta_info.update(tai) coords = _jitter(coords, rng) coords = scale_to_rms(coords, target_rms) info.update(aniso_info)+ info.update(ta_info) info.update(variso_info) info.update( t=t, n=int(expr.shape[0]), rms_a=rms_a, rms_b=rms_b, target_rms=target_rms,@@ -481,7 +576,11 @@ def main() -> None: "aniso_enable", "aniso_damp", "aniso_gamma", "aniso_spread_a", "aniso_spread_b", "aniso_spread_cur", "aniso_spread_target", "aniso_factor", "aniso_aspect_in", "aniso_aspect_out",- "variso_enable", "variso_damp", "variso_n_types", "variso_f_mean",+ "typeaniso_enable", "typeaniso_damp", "typeaniso_min_cells",+ "typeaniso_gamma", "typeaniso_n_types", "typeaniso_r_mean",+ "typeaniso_r_min", "typeaniso_r_max", "typeaniso_r_in_band",+ "typeaniso_clip_frac", "typeaniso_tgt_over_cur_mean", "typeaniso_rs",+ "variso_enable", "variso_damp", "variso_n_types", "variso_f_mean", "variso_f_in_band", "variso_f_min", "variso_f_max", "variso_cur_over_tgt", "variso_pb_maxshift")} print(json.dumps({"bracket": [a["stage"], b["stage"]], **keep}, default=float), file=sys.stderr)
调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。
用到的知识库条目
| 编号 | 标题 | 出处 |
|---|---|---|
| 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:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。
| 改了什么 | 按 PLAN(T2EI-06)在全局 aniso 之后新增分型各向异性坐标整形 TYPE_ANISO(逐类型 PCA 轴展幅向括号 log 插值目标缩放,MIN_CELLS=20、clip [0.5,2.0])。proxy off/on 网格(damp -1.0~1.0)显示 occupancy_dice 双向单调劣化、净榜分 -0.02~-1.27,机制以 T2_TYPEANISO_ENABLE=0 关闭提交,输出与父节点 13/19 逐位一致。 |
|---|---|
| 各组分数的变化 | cell_state:不变(50.31→50.31,逐位一致) expression_change:不变(62.11→62.11,提交配置输出与父节点逐位一致;表达侧本就未动) local_spatial:不变(60.34→60.34,逐位一致)。开启态 neighborhood_mmd raw 0.05506→0.05520(d0.25)~0.05530(d0.5/1.0) 小幅劣化,触发 PLAN 风险 2 的 abort 判据 shape_scale:不变(77.31→77.31,逐位一致)。开启态在 proxy 上:occupancy_dice raw 0.8066→0.7742(d1.0)/0.7783(d-1.0) 双向劣化,d2_shape skill 0.979→1.000 但抵不过损失 |
| family_id | T2EI-06 |
| 假设是否成立 | 否 |
| 经验 |
|
| mechanism_active | 否 |
| 下一步建议 |
|
对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。
只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。
分析员
| 角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。 | 分析员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数?大模型一共回复了几轮(每轮可以调用多个工具)。 | 3 |
| 工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。 | 共 3 次:— |
| 用时 | 不到 1 分 |
| token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。 | 输入 17,563 · 输出 1,182 · 思考 710 |
| 任务(第一行) | 分析节点 n22 的打分结果,写 ANALYSIS.json |
| 最后的回答(摘录) | ANALYSIS.json written |
| 原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。 | /home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/22/analyst.jsonl (文件不在) |
工程师
| 角色 | 工程师 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 28 |
| 工具调用 | 共 29 次:— |
| 用时 | 13 分 |
| token 数 | 输入 64,691 · 输出 9,866 · 思考 7,777 |
| 任务(第一行) | 按计划修改程序:Per-type anisotropic coordinate reshaping to lift occupancy_dice |
| 最后的回答(摘录) | **做了什么**:按 PLAN(T2EI-06)在父节点 13/19 管线的全局 aniso 之后实现分型各向异性坐标整形(TYPE_ANISO:逐类型 PCA 轴展幅向括号 log 插值目标缩放,MIN_CELLS=20、clip [0.5,2]),完成 off/on 对照(damp −1.0/−0.5/0.25/0.5/1.0,6/20 查分)。 **查分结果**:机制净负——occupancy_dice 在两个方向都单调劣化(off 0.8066 → 0.7742@d1.0、0.7783@d−1.0),d2_shape 虽升至 skill 1.0 但抵不过损失;榜分 off 61.45 vs 61.43(d0.25)~60.18(d−1.0)。PLAN 验收条件(occupancy +0.01)失败,提交默认 `T2_TYPEANISO_ENABLE=0`,输出与父节点逐位一致(seed 0 验证、seed 1 确定、vec-check 通过、~9s/<0.4GB)。 **下一步最值得试**:occupancy 缺口不在逐型展幅;试 (a) 逐型质心布局插值、(b) z 轴/切片层间距单独整形,或 (c) 转攻 de_score/de_direction(权重 12.5×2,表达位移管线未做过针对 DE 排序的专门网格)。 |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/22/engineer.jsonl (文件不在) |
调研员
| 角色 | 调研员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 1 |
| 工具调用 | 共 0 次:— |
| 用时 | 2 分 |
| token 数 | 输入 16,893 · 输出 1,518 · 思考 5,146 |
| 任务(第一行) | 为节点 n22(改进,父节点 n19)写改进计划 PLAN.json |
| 最后的回答(摘录) | pe reshaping if the mismatch is in cell density rather than aspect ratio. Early signal: if occupancy_dice raw changes <0.005 at damp=1.0, the mechanism isn't reaching the right degree of freedom.\n4) Global aniso already captures most of the anisotropy; per-type correction may be redundant. Check: if per-type r_k are all within [0.95, 1.05], the mechanism has no room.", "family_id": "T2EI-06", "mechanism": "Per-type anisotropic coordinate reshaping: each cell type's sub-cloud is independently stretched/compressed along its own PCA axes toward the log-interpolated target aspect ratio, on top of the existing global aniso. This corrects type-specific shape mismatches that the global PCA averages out.", "vs_constant_shift": "A constant per-type displacement moves every cell of a type by the same vector (rigid translation), preserving all within-type relative positions. This mechanism scales each cell's deviation from its type centroid along type-specific PCA axes by axis-specific factors—cells farther from the centroid along a given axis move proportionally more, changing the within-type spread anisotropically. The displacement is position-dependent, not constant.", "mechanism_evidence": "Engineer should report: (1) per-type r_k values—if all ≈1.0 the mechanism is inert; (2) occupancy_dice raw change (target: ≥+0.01); (3) d2_shape skill must stay ≥0.95; (4) neighborhood_mmd raw change (must not degrade >0.002); (5) board score delta vs off control. A successful mechanism shows heterogeneous r_k across types (some axes stretched, others compressed) with occupancy_dice improving while d2_shape and neighborhood_mmd are stable.", "mechanism_off_control": "T2_TYPEANISO_ENABLE=0: the per-type reshaping block is skipped entirely. Output must be bit-for-bit identical to the parent node-13 configuration (verify with array_equal on X and spatial_3D at seed 0). Expected: all 8 metrics identical to the off baseline; any difference indicates a leak.", "sources": [] } ``` |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/22/researcher.jsonl (文件不在) |
审查员
| 角色 | 审查员 alibaba-token-plan-cn/qwen3.8-max |
|---|---|
| 调用次数 | 1 次 |
| 轮数 | 7 |
| 工具调用 | 共 9 次:— |
| 用时 | 1 分 |
| token 数 | 输入 29,893 · 输出 1,361 · 思考 1,914 |
| 任务(第一行) | 审查节点 n22 的程序是否越界读取、写死目标、钻评分器漏洞 |
| 最后的回答(摘录) | REVIEW.json written |
| 原始记录位置 | /home/spark-longxinyang/vec/runs/formal/20261003-171955-search-t2-embryo-interp-chain-12h/nodes/22/reviewer.jsonl (文件不在) |