4. 序列相似性与同源性的关系
很多初学者搞混一件事:以为两条序列长得像,就一定是同源。我当年也犯过这个错,在项目里对着一个BLAST结果兴奋半天,结果被导师一句话点醒:“相似不等于同源,但同源必然相似。” 这章我们就来掰扯清楚这个核心逻辑。
4.1 相似性与同源性:两个完全不同的概念
我先给你画个边界。
- 相似性 (Similarity):序列间残基对匹配的定量度量。可以算百分比,也能算得分。它是数学事实,不依赖进化假设。
- 同源性 (Homology):两条序列由共同祖先序列演化而来。这是进化假设,是定性判断(要么是,要么不是),没有“50%同源”这种说法。
我记得有一次审稿,看到一篇文章写“这两条序列有40%的同源性”,我直接在review里说:这种表述不专业。同源是二值逻辑,不是连续变量。你只能说“40%的序列一致性”,然后推断它们可能同源。
关键原则:相似性可以测量,同源性只能推断。高相似性提供同源假设的证据,但永远不能100%证明同源。
4.2 为什么高相似性≠同源?
说白了,两条序列撞脸也可能因为趋同进化,或者纯粹随机。举个例子:一个由重复短片段构成的蛋白质,跟另一个完全不同的蛋白质在某段上碰巧相似,这不稀奇。
我做过一个细菌基因组注释项目,一条功能未知的ORF跟真核生物的肌动蛋白有35% identity。乍一看挺唬人,但仔细检查数据库发现这个相似区域全是疏水残基组成,属于“频繁出现的模式”。后来实验验证,那根本不是肌动蛋白同源物,而是一个膜脂合成的酶。这就是典型的假阳性。
相似性到什么程度才能较可靠地推断同源?工程上我们有个经验窗口:
| 序列一致性(全长比对) | 同源推断可靠性 | 典型场景 |
|---|---|---|
| ≥ 30% 并且比对覆盖 > 80% | 较可靠(但对短序列仍需小心) | 远缘同源检测 |
| ≥ 50% 并且比对覆盖 > 80% | 高度可靠 | 近缘直系同源鉴定 |
| ≤ 20% | 不可靠,极可能假阳性 | 需结构或保守基序辅助 |
注意:这个表格只适用于全长比对。局部的短片段高相似(比如200nt的序列有95% identity)可能是水平转移或重复元件,不能轻率判定同源。
4.3 统计显著性才是法官
光看百分比不够。你得问:这个相似性在随机背景下出现的概率有多大?这就是 BLAST 的 E-value(期望值)登场的地方。
E-value 不是“同源概率”,而是“在相同大小的数据库里随机找到同样得分比对的期望次数”。E-value 接近0,说明这个比对结果几乎不可能来自随机。工程上我们一般取 E-value < 1e-5 作为同源候选的筛选门槛。但别死板——如果你的数据库是整个人类基因组,E-value 阈值可以更严(1e-10 甚至 1e-20),不然你得到成千上万个“显著”hit,很多是重复和低复杂度区域。
我的习惯:运行 BLASTP 时我会加 -evalue 1e-5 -max_target_seqs 100 先粗略扫一遍,然后对候选进行多重序列比对和结构域分析,最终确认同源关系。千万不要只看 E-value 就下结论。
4.4 相似性度量:Identity vs. Similarity
你做 MSA 分析时会遇到两个常用指标:
- Identity(一致性):完全相同的残基比例。这个最直观,但也最苛刻——只要突变就降低。
- Similarity(相似度):不仅包含相同残基,还包括带相似理化性质的替换(如 Ile ↔ Val, Asp ↔ Glu)。通常会拿一个打分矩阵(比如 BLOSUM62)来判断替换是否为“正分”,正分残基对算相似。
我个人经验:在同源检测时,相似度往往比严格的一致性更有用。尤其是远缘同源,很多位置是保守替换,如果只用 identity 会漏掉大量真实同源。比如我遇到过细胞色素C家族成员间只有22% identity,但相似度达到55%,通过结构比对发现它们折叠形式完全一样,是确凿的同源。
所以当你在论文或报告里写“两条序列的同源性”时,正确的做法是写“序列一致性为28%,相似度为45%,结合保守结构域分析,推测为远缘同源”。
4.5 假阴性与假阳性的两难
你设的阈值越严(比如只接受 identity > 50% 作为同源),假阳性越低,但假阴性越高。反过来,放宽阈值(identity > 20% 就算同源),你会抓回更多真实同源,但同时引入大量随机相似。
我曾经在一个宏基因组项目中面对一堆未培养微生物序列,保守点用 identity ≥ 35% 作为同源阈值,结果只标出不到20%的序列。实际上后来用 HMM 搜索在原核同源群(COG)中找到了将近60%的序列有远端同源——当初的假阴率太高了。所以建议:对未知数据先用宽松阈值粗筛,再用结构域模型确认。
警告:不要把序列一致性阈值当万能键。不同蛋白家族、不同长度、不同进化距离下的可靠阈值不一样。始终结合 E-value、比对长度、保守基序和结构信息综合判断。
4.6 本章逻辑图:从相似到同源的推理链条
下面我用一张SVG图把这个推理链条可视化出来。画布背景浅蓝,节点用高对比色,文字白色,箭头深灰。
从图上你可以看到:两条序列→MSA比对→测量相似性+计算统计显著性→做出同源推断→进一步验证。这是一个完整链条,缺了任何一环都可能导致误判。
4.7 实战避坑清单
我这些年踩过不少坑,总结几个常见问题:
- 误用“同源性百分比”:不要写“40%同源”,写“40%序列一致性”。这能避免审稿人找你麻烦。
- 只看identity不看比对覆盖度:两条序列在10个残基上100%一致,但全长只有10个残基,这种相似毫无意义。我从NCBI上扒过数据,很多假阳性就是这种短匹配。
- 忽略重复区域和低复杂度区域:BLAST有低复杂度过滤选项(
-seg),记得打开。我一开始没用这个选项,结果得到一堆假阳性,全是poly-proline stretch 匹配。 - 同源推断后不做结构域检查:只用BLAST E-value < 1e-5 就认定为同源,容易漏进趋同进化或基因盗用的情况。最好再跑Pfam或InterProScan确认结构域存在。
小技巧:如果你用Python做大规模同源分析,可以在输出表格里同时保留 identity、coverage、evalue、bitscore 四个字段,然后根据业务场景设置多层过滤。我写过一个pipeline,先用coverage > 70% + evalue < 1e-5 粗筛,再用identity > 25% + bitscore > 50 精筛,效果很不错。
总之,你心里要有一根弦:相似性是证据,同源是结论。永远别把证据当结论。带着这根弦去做MSA分析,能少走很多弯路。