这一轮真跑了:NCBI 六份公开基因组注释 → DIAMOND 双向最佳命中求 1:1 直系同源(15267 个) → MAFFT 密码子比对 → 固定物种树 → HyPhy 2.5.101 RELAX 逐基因拟合 341 次 (84 对基因 × 候选/背景 × 洞穴/地表两个前景分支)。纯 CPU 单机,115 分钟。
一句话:预期的方向在数据里出现了,但强度不够,按跑前写死的判据三条预测里两条被推翻; 而被推翻的那两条,把「这条路值不值得继续投」回答得比一个阳性结果更清楚。
| 跑前写死的预测 | 实测 | 判定 | |
|---|---|---|---|
| H1 | 洞穴分支上,候选基因判为松弛的比例高于长度配对背景;Fisher p<0.05 且 OR>1 | 候选 15/84(17.9%)对背景 10/84(11.9%),OR = 1.61(95% CI 0.68–3.70),Fisher 单侧 p = 0.193(双侧 0.386) | 被推翻 |
| H2 | 洞穴分支上,候选基因 K 的中位数低于背景;Mann-Whitney U 双侧 p<0.05 | 中位数 0.534 对 0.665(方向对),U = 3054,双侧 p = 0.133(单侧 0.067),rank-biserial = 0.13 | 被推翻 |
| H3(阴性对照) | 地表分支上不应出现同等富集 | 候选 6/84(7.1%)对背景 8/84(9.5%),OR = 0.73(95% CI 0.26–2.17),Fisher 单侧 p = 0.798;K 中位数 0.775 对 0.912,Mann-Whitney 双侧 p = 0.198 | 成立(未出现富集,方向还相反) |
H1 和 H2 的点估计都指向预期方向,但两个 p 值都没到 0.05,OR 的置信区间跨过 1。 按跑前判据记为推翻。更贴近实际的读法是:方向正确、量级中等、样本量撑不住—— 既不是"没有效应",也不是"有效应"。
(1) 这不是全基因组普查。 直系同源这一层是全基因组的(15267 个,全表随包提供); 但逐基因 RELAX 跑满全基因组约需 170 小时单机 CPU。本轮在同源全集之上跑了一个 跑前预注册、按比对长度 1:1 配对的子集:136 个候选 + 136 个背景,预算 115 分钟用尽即停, 四臂齐全的成对基因 84 对。执行顺序在任何一次 RELAX 开跑之前由固定种子洗牌写死, 截断发生在与结果无关的随机顺序上,不引入选择偏倚。范围差距在跑前写入 claims.json。
(2) 就算跑满 136 对,H1 也不会显著。 按实测比例外推,136 对时 Fisher 单侧 p ≈ 0.115; 在 OR ≈ 1.6 上要达到 80% 功效,每组约需 441 个基因,而这份候选清单在 1:1 同源集里只有 136 个。 瓶颈不在"把剩下的跑完"。
(3) 洞穴种 n=1。 NCBI 上高原鳅属 17 份组装里只有 3 份带注释,洞穴种只有 Triplophysa rosa(GCF_024868665.1)。这条末端分支上的谱系特异效应(有效群体大小、 世代时间、组装与注释质量)与"洞穴适应"完全混在一起,本轮拆不开。 所以本轮结果只能用于假设生成,不能作为"洞穴适应导致视觉基因松弛"的证据。
全部来自 NCBI Datasets v2 公开接口,匿名可直接下载。
| 物种 | 登录号 | 注释 | 角色 |
|---|---|---|---|
| Triplophysa rosa | GCF_024868665.1 | RefSeq | 洞穴种,前景分支 |
| Triplophysa dalaica | GCF_015846415.1 | RefSeq | 地表种,阴性对照的前景分支 |
| Triplophysa tibetana | GCA_008369825.1 | 投稿方注释 | 地表种,reference |
| Barbatula barbatula | GCF_947034865.1 | RefSeq | 条鳅科外群 |
| Misgurnus anguillicaudatus | GCF_027580225.2 | RefSeq | 花鳅科外群 |
| Danio rerio | GCF_052040795.1 | RefSeq | 远外群,定根 |
物种树在任何 RELAX 生产运行之前固定(659 个背景基因串联密码子 p-distance,NJ):
`` (Danio_rerio,(Misgurnus_anguillicaudatus,(Barbatula_barbatula,(Triplophysa_rosa,(Triplophysa_dalaica,Triplophysa_tibetana))))); ``
候选集 = 预注册的 242 个视觉 / 光转导 / 晶状体 / 昼夜节律 / 色素基因符号,136 个在 1:1 同源集中存在。 清单按标准功能通路从斑马鱼命名法逐类枚举,没有可引用的外部出处;若要写进论文, 建议改用 GO 定义(GO:0007602 / GO:0007623 / GO:0048066),但换定义会换掉分母。
背景集 = 从 13753 个有正式基因符号的 1:1 同源基因里用固定种子抽 700 个作池, 再按比对长度与每个候选 1:1 最近邻配对。必须长度配对:RELAX 的检出功效随比对长度上升, 不配对时"候选集显著基因更多"完全可以纯由长度差异产生。
| 数 | |
|---|---|
| 计划成对基因 | 136 对 |
| 实际尝试 | 86 对 |
| 进入统计的成对基因 | 84 对(168 个基因) |
| RELAX 成功拟合 | 341 次 |
| 拟合失败 | 3 次(pop4 两条分支、ccz1 洞穴分支;整对剔除) |
| CPU 时间 | 115.1 分钟 |
| 松弛 | 未判为松弛 | 比例 | |
|---|---|---|---|
| 候选基因 | 15 | 69 | 17.9% |
| 长度配对背景 | 10 | 74 | 11.9% |
odds ratio = 1.609(Haldane 修正 1.582,95% CI 0.677–3.698),Fisher 单侧 p = 0.193。 15 与 10 相差 5 个基因;几个基因的浮动就能让 OR 在 1.0 到 2.3 之间变,这就是 CI 跨过 1 的含义。
候选 K 中位数 0.534、背景 0.665;Mann-Whitney 双侧 p = 0.133,rank-biserial 0.134(小效应)。 补充一个非预注册、更贴合配对设计的检验:配对内 Wilcoxon 双侧 p = 0.409,支持更弱。 这个数对结论不利,一并列出。
完整矩阵在 work/results/relax_matrix.tsv。判为松弛(K<1 且 p<0.05)的 15 个候选:
| 基因 | 功能类别 | K(洞穴) | p(洞穴) | 地表分支同一基因 |
|---|---|---|---|---|
| cry5 | 隐花色素 / 光受体 | 0.000 | 1.6e-04 | ns |
| ednrbb | 色素细胞发育 | 0.132 | 2.8e-04 | p=0.046,也松弛 |
| oca2 | 黑色素合成 | 0.000 | 2.9e-03 | ns |
| mipb | 晶状体内在蛋白 | 0.194 | 4.8e-03 | ns |
| pmelb | 黑色素体基质 | 0.101 | 5.7e-03 | ns |
| vsx2 | 视网膜发育 | 0.000 | 8.0e-03 | ns |
| pde6c | 视锥光转导 | 0.265 | 9.7e-03 | ns |
| slc24a5 | 色素沉着 | 0.201 | 1.1e-02 | ns |
| six6a | 眼发育 | 0.401 | 1.2e-02 | p=0.010,也松弛 |
| lim2.2 | 晶状体膜蛋白 | 0.000 | 1.5e-02 | ns |
| gnb3b | 转导蛋白 β | 0.219 | 2.9e-02 | ns |
| rlbp1b | 视黄醛结合蛋白 | 0.199 | 2.9e-02 | ns |
| hlfb | 昼夜节律转录因子 | 0.000 | 3.5e-02 | ns |
| asmt | 褪黑素合成 | 0.222 | 3.9e-02 | ns |
| crybb1 | 晶状体 β-晶体蛋白 | 0.051 | 4.4e-02 | ns |
判为强化(K>1 且 p<0.05)的候选 4 个:pax6a、guca1d、cry3a、crx;背景侧松弛 10 个、强化 3 个。
三条限制必须一起读:
cry5、ednrbb(候选)和 actr8(背景)。ednrbb、six6a 在地表分支上同样松弛,不是洞穴特有。扣掉后,过 FDR 且洞穴特有的候选只剩 cry5。这张表是假设生成清单,不是结论清单。
同一批 84 对基因、同一棵树、同一套流程,前景换成地表种 T. dalaica:候选 7.1% 对背景 9.5%, OR = 0.731,Fisher 单侧 p = 0.798。洞穴分支 OR=1.61、地表分支 OR=0.73,计数侧方向相反。但按预注册要求并列的连续量给出的是另一幅图: 地表分支上候选基因的 K 中位数同样低于背景(0.775 对 0.912,差 −0.137,rank-biserial 0.115), 与洞穴分支(0.534 对 0.665,差 −0.131,rank-biserial 0.134)方向相同、幅度相当。 所以 H3 只在「计数式富集」这一个口径上成立,不能读成「这把尺子是干净的」; 预注册里说可估的「分支×基因集」交互,本轮没有做正式检验。
每个基因在两条分支上的 K 配对比较(非预注册):
| 基因集 | K 中位数(洞穴) | K 中位数(地表) | 配对差中位数 | Wilcoxon 双侧 p |
|---|---|---|---|---|
| 候选 | 0.534 | 0.775 | −0.189 | 0.114 |
| 背景 | 0.665 | 0.912 | −0.203 | 0.009 |
洞穴分支上 K 整体偏低,在背景基因上反而更显著。 洞穴分支 168 个基因里名义 p<0.05 的有 32 个 (零假设期望约 8.4 个)——信号存在,但铺在整条分支上,不集中在视觉基因上。 这正是 n=1 混杂在数据上的样子:有效群体大小、注释质量、或全基因组尺度的适应,本轮都排除不掉。
cry5。1、2、5、6 四条在跑之前写入了 claims.json。
cry5 追到位点级(FEL / MEME / branch-site),判断是真的功能松弛还是比对或注释假象。``bash python3 work/code/08_analyze.py . # 主分析(scipy) python3 work/code/09_recheck_headline.py . # 独立复算(不依赖 scipy) ``
两条实现互不读对方的输出,给出的 Fisher p、odds ratio、K 中位数、完成对数全部一致。 预注册指纹在 work/results/PREREG.sha256,本轮结束时 claims.json 从跑前落盘起一个字节没动。

figs/ 目录。