3. 运行 InterProScan:输入格式、常用参数与输出文件
好,咱们到了真正动手跑扫描的时候了。这部分其实不难,但坑也不少。我刚开始用的时候,光是在输入格式上就栽过跟头。今天我把这事儿掰开了讲,你照着做就行。
3.1 输入格式:FASTA 的基本要求
InterProScan 只吃 FASTA 格式,别的不要。说白了,就是一行以 > 开头的描述行,后面跟着序列。
为啥只用 FASTA? 这格式简单干净,没有冗余的元数据。InterProScan 内部解析器就是为它优化的。我见过有人拿 GenBank 格式往里塞,结果程序直接报错退出。
一个标准的 FASTA 文件长这样:
>sp|P01008|ANT3_HUMAN Antithrombin-III OS=Homo sapiens OX=9606 GN=SERPINC1 PE=1 SV=1
MGSNKSGAQKTQTASVQYQPLVEKDAIQRDFLEKVSSLAKLLDHSPLQGRADHGLGILDLRYVVRE
INNAFPGEVKVITWDKIATPLMAEKAQSWHNHYRSFGHVVSVFGKLKTHLNQDALVHLTGRDASSV
EISVPSVSETRIPNENPVTREVVLVADHLAASTVRVMDSRLAFEVYPLEDFANNFLELQQINVA
>Q9Y6X9|B3GNT7_HUMAN
MRLALLCGAVLLVVAELTALGASLGRDASQPAEGHLS
嗯,这里要注意几点:
- 描述行别太长。我个人建议控制在 80 个字符以内。有些数据库的描述行写得特别长,解析时虽然不会出错,但后面的可视化工具可能会截断,影响阅读。
- 序列中不要有空格。FASTA 标准里允许空格,但 InterProScan 的一些旧版本会报 warning。我习惯预处理时直接用
sed或tr去掉。 - 序列 ID 保持唯一。如果你有多个同名的序列,后来者会覆盖前面的结果。这在批量分析时特别容易忽略。
避坑指南:我曾经拿到一个 FASTA 文件,序列中间夹杂了 `*` 和 `-` 字符。InterProScan 对这些特殊符号的容忍度很低,会直接跳过整条序列。跑完一看结果,少了一半的条目。从那以后我养成了用 `grep -v "[^ACDEFGHIKLMNPQRSTVWY\n>]"` 先清洗一遍的习惯。
3.2 核心参数:-iprscan5, -goterms, -pa
InterProScan 参数很多,但日常用得最多的就这三个。我把它们列个表,方便你对照:
| 参数 | 作用 | 我的使用习惯 |
|---|---|---|
-iprscan5 |
启用 InterProScan 5 的分析管线。默认就是,但显式写出来更安全 | 每次都加。我遇到过服务器默认版本是 4.x 的情况,不加这参数就跑不起来 |
-goterms |
输出 GO 功能注释。这是最常用的特征,用于后续的功能富集分析 | 只要做功能解析就加。相信我,后续你一定会需要 GO 的 |
-pa |
生成蛋白质结构域架构(Pathway and Architecture)的注释 | 做蛋白质家族分类时加。它能给出域的组合模式,比单个域信息量更大 |
一个典型的生产环境命令是这样的:
interproscan.sh -i input.fasta -f TSV -dp -goterms -pa -iprscan5 -o output.tsv
这里我额外加了 -f TSV 指定输出格式,-dp 禁用预计算匹配(如果你有内部数据,设这个会节省很多时间),-o 指定输出文件名。
别贪心一次全上。如果你序列超过 1000 条,再开启所有分析数据库,跑一天都不奇怪。我建议先用小样本测试,确认参数组合无误后,再用大文件跑。这是我从一次次熬夜等结果中悟出来的教训。
3.3 输出文件:解析 TSV、XML 和 GFF3
InterProScan 支持多种输出格式。我用得最多的是 TSV、XML 和 GFF3。它们各有千秋,我按使用频率排个序:
3.3.1 TSV(制表符分隔)—— 特征工程的首选
为什么推荐这个?因为它是结构化数据,直接用 pandas 就能读。而且每个字段都有明确的列索引。
# 格式示例(实际没有注释行,这里是我加的说明)
# 列: 序列ID\t序列长度\t分析数据库\t签名访问号\t签名描述\t起始\t终止\t得分\t状态\t日期\tInterPro访问号\tInterPro描述\tGO注释\t路径
1 protein_id|ABC123 Pfam PF00001 7tm_1 50 350 1.2E-45 T 2024-03-15 IPR000001 GPCR-like GO:0007186 -
我个人习惯用 TSV 格式做批量处理。你想想看,每一条记录都包含序列 ID、数据库名、签名 ID、位置、得分和 GO 注释,这不正是做特征工程最肥沃的土壤吗?
为什么我偏爱 TSV:我最初做特征提取时也是用的 XML,但解析起来太麻烦了,每读一个文件就要写几十行 XPath 代码。后来换了 TSV,代码直接缩短到 3 行。效率提升不是一点半点。
3.3.2 XML(可扩展标记语言)—— 信息最全
XML 包含了所有数据库的原始结果、匹配细节和算法信息。它比 TSV 多出了匹配的序列片段、HMM 的比对状态等细节数据。
但是,它的体积也大得惊人。我处理过一个 500 条蛋白的 FASTA,TSV 只有 2 MB,XML 直接干到 200 MB。如果你只是做特征工程,没必要用 XML。
什么时候该用 XML:当你要深挖某个域的匹配质量,比如看 HMM 的置信度分数分布,或者要做域架构的精确解析时,XML 是唯一的选择。我记得有一次,我需要判断一个预测的转膜域是否被多个数据库同时支持,XML 帮了大忙。
3.3.3 GFF3(通用特征格式)—— 基因组浏览器友好
GFF3 格式在基因组注释领域用得很多。每条记录都描述了特征在序列上的位置、属性及来源。它可以直接加载到 IGV 或 UCSC Genome Browser 里看。
但我很少把它用于特征工程。为什么?因为它的数据是“扁平”的,缺少层次关系。你要做域组合分析时,还得自己聚合。这一点 TSV 做得更好。
| 输出格式 | 特征工程推荐 | 理由 |
|---|---|---|
| TSV | ⭐️⭐️⭐️⭐️⭐️ | 结构清晰,可读性强,内存友好 |
| XML | ⭐️⭐️⭐️⭐️ | 信息完整,但解析复杂、文件大 |
| GFF3 | ⭐️⭐️⭐️ | 适合可视化,不直接用于特征构建 |
3.4 一张图理清流程
好啦,上面说了这么多,我给你画个流程图,让你一眼看明白输入、参数和输出之间的关系。
你看,输入、参数和输出三者之间的逻辑非常清晰。FASTA 进去,经过参数控制的分析管线,最后吐出你想要的格式。我个人建议初次使用时,只用 TSV 格式,等熟悉了再尝试 XML 和 GFF3。
好,这一章的内容就到这儿。你先把 FASTA 文件准备好,下章咱们正式开始写交互代码!