3、Pfam数据库详解:蛋白家族、域、HMM模型与版本历史

说真的,搞生物信息学这么多年,我处理过的蛋白序列少说也有几万条。但真正让我对注释这件事摸到门道的,还是从彻底搞懂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的内部结构:

Pfam 数据库核心结构 Pfam 数据库 Pfam-A (人工审核) Pfam-B (自动生成) Seed Alignment Full Alignment HMM Profile 匹配、插入、删除 序列共识特征 发射/转移概率 实际项目:只使用 Pfam-A Pfam-B 仅作辅助参考

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专家为每个家族精心设定的阈值,比默认值靠谱多了。