3. Pfam数据库详解
说真的,搞生物信息学这么多年,我处理过的蛋白序列少说也有几万条。但真正让我对注释这件事摸到门道的,还是从彻底搞懂Pfam开始的。
很多人觉得Pfam就是个数据库,查一下就行。但以我的经验来看,不理解它的底层逻辑,你后续做BLAST联合注释的时候,很容易被假阳性坑。
3.1 蛋白家族与域:两个容易搞混的概念
先聊个基础问题:蛋白家族和域,到底有什么不同?
我刚开始做注释时,经常把这俩混为一谈。后来被导师骂了几次,才彻底整明白。
- 蛋白家族(Protein Family):一组同源蛋白,共享一个共同的祖先。说白了,就是祖宗一样,序列长得像。
- 域(Domain):蛋白里的一个结构功能单元。它是相对独立的,可以折叠成特定结构,完成特定功能。
举个例子你就明白了。一个蛋白可能有三个域,每个域各管各的事。但这些域组合在一起,就构成了这个蛋白的家族特征。我见过不少人在注释细菌毒力因子时,光看家族匹配就下结论,结果漏掉了关键域,注释结果根本对不上。
关键概念:一个蛋白家族通常由多个域组合定义。域才是执行功能的最小单位。
3.2 HMM模型:Pfam的核心武器
Pfam用隐马尔可夫模型(HMM)来建模蛋白家族。为什么会选HMM?
你想想看,传统的BLAST是做逐对序列比对,但蛋白家族里序列差异很大,光靠两两比对,很难抓到远缘同源。HMM呢?它把整个多序列比对(MSA)的统计信息融合成一个概率模型。
我个人习惯把HMM想象成一个“序列模板”。它不光记录了每个位置最常见的氨基酸是什么,还记录了每种氨基酸出现的概率以及插入、删除的可能性。
咱们来拆解一下HMM模型的核心构成:
| 组件 | 含义 | 我的理解 |
|---|---|---|
| 匹配状态 (Match) | MSA中保守的列 | 蛋白家族里的“关键位置” |
| 插入状态 (Insert) | 某些成员多出来的序列片段 | 你可以容忍的额外残基 |
| 删除状态 (Delete) | 某些成员缺失的片段 | 序列里可以允许“缺斤少两” |
| 发射概率 | 每个匹配状态出哪种氨基酸的概率 | 这个位置大概率是A还是G? |
| 转移概率 | 状态之间的跳转概率 | 从匹配状态到插入状态的常见程度 |
举个例子,负责酒精代谢的ADH家族在Pfam里有自己的HMM模型。这个模型知道哪里有保守的GXGXXG NAD结合模体,也知道哪个区域可以容忍插入。我曾经用这个模型去注释一个新测的细菌基因组,一下子就找到了从来没被实验验证过的保守位点。
避坑指南:hmmsearch的输出里有一个E-value,不光是看它小就行。我遇到过E-value很好,但模型覆盖率不到50%的情况。那种结果往往是局部匹配,不是完整的域。最好同时设定E-value和覆盖率阈值(通常>=70%)。
3.3 Pfam数据库的版本历史
Pfam从1999年发第一版开始,到现在已经迭代了二十多年。我自己的经验里,版本切换踩过不少坑。
这里是我的版本记忆卡:
- Pfam 1.0 (1999):只有26个蛋白家族,很小的种子。
- Pfam 2.0 - 5.x:手动构建种子比对,用HMMER 1.0搜索。我开始接触Pfam时已经是Pfam 5.5了。
- Pfam 6.0 - 26.0:全面转向HMMER 2,速度明显提升。
- Pfam 27.0 (2013):一个里程碑版本。移除了Nested domains,也重新定义了某些边界。
- Pfam 28.0 - 33.1:继续扩张,涵盖范围越来越广。
- Pfam 34.0 (2019):加入了对metagenomic序列的管理,引入部分新的家族。
- Pfam 35.0 - 36.0:持续维护更新。
嗯,这里要注意。2023年InterPro团队宣布Pfam进入“长期支持(LTS)”状态,不再发布新版本。但别慌,模型依然可用,只是不会再更新新家族了。
我建议你保存好Pfam 35.0的模型文件。为啥?因为很多公开发表的论文用的是这个版本做基准,你换新版本,比对结果可能不一样,很难复现别人的实验结果。
警告:不同版本的Pfam,同一个家族的域边界可能细微不同。如果你的流程里用了Pfam 31.0的模型,就别混着Pfam 35.0的模型文件一起用。
3.4 Pfam的结构与质量层级
Pfam把家族分成两种类型,这也是我给学生讲课时必讲的一个点。
- Pfam-A:人工审核的高质量家族。每个家族都有精良的种子比对(Seed alignment)和对齐的全长比对(Full alignment),并且建有高标准的HMM模型。我在正式项目里只信Pfam-A。
- Pfam-B:自动生成的未审核家族,质量较低。说白了就是ADDA数据库自动聚类后的产物。我曾经试过用Pfam-B做注释,假阳性比例高到你怀疑人生。
下面这张图帮你理清Pfam的内部结构:
3.5 理解“种子”和“全长”比对
每次下载一个Pfam-A家族,你会看到两个比对文件:种子比对和全长比对。这两个东西的用法完全不同,别用混了。
- 种子比对 (Seed):由专家挑选的代表性序列,数量少但极其精确。用于构建HMM模型。
- 全长比对 (Full):由种子HMM搜索得到的全部同源序列,数量很大但质量参差。包含远缘同源。
我在构建自定义HMM时,习惯先用Pfam的种子比对做参考,再手动调整。如果直接用全长比对,远缘序列的噪音会污染模型质量。
3.6 怎么下载和用Pfam?
给新手一个实用的小抄:
- Pfam 网站:
https://www.ebi.ac.uk/interpro/(现在已合并到InterPro) - 常用命令:下载Pfam-A.hmm.gz后用
gunzip解压,然后用hmmsearch搜索 - 索引模型:
hmmpress Pfam-A.hmm - 搜索蛋白:
hmmsearch --domtblout output.txt Pfam-A.hmm query.fa
我的实操建议:我一般会用 --cut_ga 选项来设置Gathering threshold。这是Pfam专家为每个家族精心设定的阈值,比默认值靠谱多了。