InterProScan 命令行使用:基本参数与运行示例
好,咱们直接进入正题。InterProScan 这东西,说白了就是个功能域预测的瑞士军刀。但工具再好,你不会用命令行也是白搭。我当年第一次跑它的时候,就被那一堆参数搞得头大,后来踩了不少坑才摸清楚门道。
这一节,我就带你把它最常用的参数和运行方式捋一遍。保证你学完就能上手。
基本命令行结构
InterProScan 的核心命令是 interproscan.sh。我个人习惯把它加到 PATH 里,或者直接用绝对路径。最基本的命令长这样:
./interproscan.sh -i input.fasta -o output.tsv -f TSV
这行代码干了三件事:读入你的蛋白质序列文件,分析功能域,最后输出一个 TSV 格式的结果表。
嗯,这里要注意。你必须先配置好 Java 环境和数据库路径。我第一次运行时就因为数据库没配好,报了一堆奇怪的错。后来我学乖了,先跑个测试序列验证一下环境。
核心参数详解
我把最常用的几个参数整理成了表格,你对着看就行:
| 参数 | 含义 | 必填/可选 |
|---|---|---|
-i / --input |
输入文件路径(FASTA 格式) | 必填 |
-o / --output |
输出文件路径 | 可选(默认根据输入文件名生成) |
-f / --formats |
输出格式(TSV, XML, GFF3, JSON 等) | 可选(默认 TSV) |
-appl |
指定要运行的分析工具(如:Pfam, SMART) | 可选(默认全部运行) |
-dp / --disable-precalc |
禁用预计算匹配(强制本地数据库搜索) | 可选 |
-T / --tempdir |
临时文件目录 | 可选 |
-cpu |
使用的 CPU 核心数 | 可选(默认全部) |
-goterms |
是否输出 GO 注释 | 可选 |
-pa / --pathway |
是否输出通路注释(如 Reactome) | 可选 |
核心要点:-f 参数可以同时指定多个格式,比如 -f TSV, GFF3, JSON。我个人习惯至少输出一个 TSV 用于快速查看,再加一个 JSON 或 GFF3 用于后续程序化处理。
运行示例:从简单到复杂
咱们直接看几个实战例子。你跟着敲一遍,很快就能找到感觉。
示例 1:最简运行
假设你有一个蛋白质序列文件 proteins.fasta,只想快速跑一遍看看结果:
./interproscan.sh -i proteins.fasta -o proteins_results.tsv -f TSV
跑完之后,你会在当前目录看到一个 proteins_results.tsv。里面每一行就是一个功能域匹配记录。
示例 2:指定分析工具
如果你只关心 Pfam 和 SMART 这两个数据库的结果,可以这样:
./interproscan.sh -i proteins.fasta -o proteins_subset.tsv -f TSV -appl Pfam,SMART
-appl 后面的逗号不要加空格。为什么?我当初就是因为手抖加了个空格,结果它只识别了第一个工具。
小提示:用 -appl 能大幅加快运行速度。你想想看,运行全部 15+ 个数据库和只跑 2 个,时间差了不是一点半点。尤其是在调试阶段,我强烈建议先跑一两个工具验证流程。
示例 3:多格式输出 + 额外注释
想要一次拿到 TSV 和 GFF3 格式的结果,同时还想包含 GO 注释和通路信息?没问题:
./interproscan.sh -i proteins.fasta -o proteins_multi -f TSV,GFF3 -goterms -pa
这里输出文件名不加后缀,程序会自动为你生成 proteins_multi.tsv 和 proteins_multi.gff3。打开 GFF3 文件,里面就嵌着 GO 和 Reactome 的ID。
示例 4:Docker 运行(推荐)
我个人现在基本都在 Docker 里跑。省去了配置环境的烦恼,特别是数据库路径这种容易出问题的地方。命令是这样的:
docker run --rm \
-v /path/to/your/data:/data \
-v /path/to/your/output:/output \
interpro/interproscan:latest \
-i /data/proteins.fasta \
-o /output/results.tsv \
-f TSV -cpu 4
用 -v 挂载目录要注意权限。我曾经因为挂载目录没有写权限,运行到一半报错退出,气得我检查了半天日志。容器内的路径一定要和 -i、-o 参数一致。
避坑指南:Docker 方式下,-i 和 -o 的路径必须是容器内部的路径,不是你本机的路径。还有,CPU 核心数 -cpu 建议不要超过你分配给 Docker 的资源上限,不然反而会拖慢速度。
输出文件解读
跑完之后,结果怎么读?我拿一个典型的 TSV 文件举例。它每列的含义大概是这样的:
- 蛋白质ID:你输入的序列 ID
- 序列长度
- 分析数据库(如:Pfam, SMART)
- 功能域ID/登录号(如:PF00001, IPR001909)
- 功能域描述(如:7 transmembrane receptor)
- 起始位置-结束位置(匹配区间)
- 得分/E-value:评估匹配可靠性
- GO 注释(如果加了 -goterms)
- 通路注释(如果加了 -pa)
记牢一点:IPR 开头的 ID 是 InterPro 自己的登录号,它整合了多个数据库的匹配结果。比如一个序列同时被 Pfam 和 SMART 匹配到同一个功能域,InterPro 就会给你一个统一的 IPR ID。
常见运行问题与调优
说几个我实战中遇到的坑,你遇到了可以少走弯路:
- 内存不足:InterProScan 对内存比较贪心。我曾经用一台 16G 内存的笔记本跑全库分析,结果直接 OOM 被系统 kill 了。解决办法:限制 CPU 数,或者像刚才那样只跑部分工具。
- 数据库过期:几个月不更新,新的功能域就匹配不上了。建议每隔半年用
interproscan.sh -u更新一次数据库。 - 输入序列格式:FASTA 文件的换行符只能是 Unix 格式(LF)。Windows 的 CRLF 可能会导致解析错误。我在服务器上就遇见过,当时花了一上午排查以为是程序坏了,最后发现是文件格式问题。
下面的图帮你理清整个命令行运行的逻辑链路:
看到了吧?整体流程很清晰。你只要把输入序列和参数给足,剩下的就交给引擎去跑。输出的各个格式分别服务于不同的下游任务:TSV 用来人眼看,GFF3 适合基因组浏览器,JSON 则方便写脚本做后续处理。
命令行这边你只要跑通了,下一步的特征提取就水到渠成了。