1. InterProScan 简介:功能、应用场景、与其他工具比较

咱们先聊点实在的。我今天讲的这门课,核心就是帮你搞定功能注释里的批次偏差问题。但开篇第一件事,咱得先把 InterProScan 是什么说清楚,不然后面的坑你根本不知道在哪。

1.1 什么是 InterProScan?

InterProScan 说白了就是一套自动蛋白质功能注释的集成工具。它把几十个物种数据库、预测算法、特征库合并成一个入口,你扔一条序列进去,它帮你找出里面的功能域、保守位点、家族归属。

我刚开始做生物信息学那会儿,还得一个个跑 Pfam、TIGRFAMs、SMART,然后把结果手工合并。后来发现了 InterProScan,嗯,这简直就是救命的。

它背后的核心是 InterPro 联盟——欧洲生物信息学研究所(EBI)牵头,联合了 Pfam、TIGRFAMs、SMART、ProDom 等十几个成员数据库。每次扫描都会调用这些数据库的 HMM 模型或 pattern 匹配,最终汇总成一个统一的功能注释。

一句话总结:InterProScan 是一个“元工具”,拿多个专业数据库的结果做集成,减少你来回切换的工作量。

1.2 核心功能

你可以这样理解:输入一条蛋白质序列(FASTA 格式),输出一张“身份标签”——包含这个蛋白属于哪个家族、有什么结构域、有哪些保守位点、是否和已知致病突变相关。

具体功能拆开来就是:

  • 蛋白质家族分类:找到蛋白属于哪个已知家族(比如激酶家族、转运蛋白家族);
  • 功能域(Domain)鉴定:识别序列上哪些区域对应已知的结构域(如 SH2、DEAD-box);
  • 保守位点(Active site、Binding site)标注:精确到氨基酸级别的关键功能位点;
  • 跨膜/信号肽预测:集成 Phobius、TMHMM 等预测器,快速判断蛋白的亚细胞定位;
  • GO 功能注释:将匹配到的数据库条目自动映射到 Gene Ontology 术语,输出 BP、MF、CC 三类。这个在批次处理里偏差最明显,我们后面会专门讲。

我记得有一次接手一批细菌基因组,客户要求所有蛋白都要做 GO 富集。如果一个个手打 Pfam 再转 GO,那一个月都干不完。InterProScan 一行命令输出 GO,把时间压到了两天。

1.3 应用场景

场景 典型需求 为什么选 InterProScan
基因组注释新物种 对全基因组的预测蛋白做批量功能标注 集成度高,一条命令处理数万条序列
宏基因组功能分析 注释短 reads 翻译后的小片段 支持核苷酸序列直接扫描,不强制全长蛋白
蛋白结构域演化研究 比较不同物种间结构域分布变化 跨库统一打分,方便大规模矩阵计算
致病机制挖掘 鉴定病原菌中的毒力因子或分泌系统蛋白 集成 TIGRFAMs 和 SMART,涵盖已知致病特征

还有一点:InterProScan 是开源的,纯命令行,非常适合自动化流程。我见过不少公司的生产管线都会把它作为一个标准模块跑。

1.4 与其他工具比较

你可能想问:我直接用 BLAST 本地库不就行了?或者直接用 eggNOG-mapper?说实话,各有优劣。

我整理了一个对比表,帮你看清位置:

维度 InterProScan BLAST+ 本地 eggNOG-mapper Pfam_scan
使用方法 一条命令启动,自动匹配数据库 需要手动构建索引、选择库 需下载附属库(diamond + eggNOG) 仅依赖Pfam数据库
覆盖范围 超40个成员数据库 依赖自建库,跨库整合困难 以eggNOG直系同源簇为主 仅Pfam
输出格式 GFF3/TSV/JSON/XML 内置多种 标准tabular,需后处理 支持GFF和TSV,有限 仅表格
GO/InterPro关联 自动映射,一步到位 需额外写脚本做数据库关联 自动匹配,但非InterPro标准 不直接提供
批次处理速度 适中,因子库数量变慢 快,但缺多库集成 非常快(diamond加速) 较快

打个比方:你如果只需要验一个蛋白有没有激酶结构域,Pfam_scan 就够。但你要做全基因组的 GO 富集,而且还要跨库交叉验证,那 InterProScan 就是首选。

我记得之前在搭建一个自动注释管道时,最初选了 eggNOG-mapper,因为快。跑完以后发现大量序列的 GO 注释其实是空壳——它只映射到 eggNOG 自己的聚簇,不查 Pfam/SMART。最后不得不把 InterProScan 再跑一遍做补充。所以我现在更倾向直接一步到位。

1.5 但问题来了:批次偏差从哪来?

既然 InterProScan 这么强大,为什么还需要专门出一门课来讲它?

你想想看:InterProScan 默认会同时调用所有可用数据库。几十个库各自有自己的打分阈值、匹配策略、序列覆盖度标准。单个序列跑的时候没问题,一旦你拿一万条序列做批量跑,就会出现严重的结果不一致——

  • 同一条序列在不同批次中的 PFAM 注释可能不一样(因为 HMM 阈值受连接分析影响)
  • GO 注释可能因数据库版本更新而漂移
  • 部分序列因为前一批的匹配结果改变了后一批的统计分析

我在做植物基因组注释的时候就遇到过:第一次跑了 5 万条,一周后因为数据库小版本更新重新跑了一遍,结果 GO 术语分布有 15% 不一致。你做富集分析的时候根本分不清哪个是真实的生物差异,哪个是工具引入的系统误差。

注意:InterProScan 的默认行为是动态选择最佳匹配,而不是固定列表匹配。这在批量任务里会引入隐性偏差,后续章节我会跟你细讲。

1.6 本章知识结构

下面这张图帮你把 InterProScan 的定位和核心逻辑串起来。记住它,后面的章节都绕不开。

InterProScan 核心逻辑与成员数据库 FASTA 序列输入 InterProScan 统一注释输出 Pfam (HMM) TIGRFAMs (HMM) SMART (HMM) ProDom (Pattern) Phobius (跨膜) Gene3D (结构域) CDD (NCBD) ……更多成员 说明 虚线箭头表示 InterPro 引擎将 序列分发到各库

一个小建议:你刚接触 InterProScan 时,先别急着调参数。先用默认配置跑一个 200~500 条序列的小批次,看看输出格式和 GO 映射是怎么走的。这样你才懂后面说的“批次偏差”到底是什么东西咬住了你。