4. 命令行使用:基本参数与运行示例
说实话,刚接触 InterProScan 的人,多半会被它那一大堆参数吓到。我当年第一次跑的时候,直接对着 help 文档发呆了好几分钟。但你别慌,今天咱们把最常用的几个参数拆开来讲,你照着敲一遍,基本就能上手了。
4.1 基本命令结构
InterProScan 的命令行,说白了就一个核心脚本:interproscan.sh。或者你用的是新版本,那可能就是 interproscan.py。我个人习惯用 Python 版本,因为它对参数校验更友好,报错信息也清楚一些。
interproscan.sh -i input.fasta -o output.gff3 -f GFF3
就这么一行,就能干活了。但你要知道,它背后做了不少事:调用了好几个数据库,跑了一堆预测算法。所以别指望它秒出结果,哪怕是一个几百条序列的小文件,也得等个一两分钟。我在项目中遇到过客户嫌慢,非得要求优化……其实慢是正常的,因为它在查多个数据库。
4.2 核心参数详解
咱们挑几个最常用、最容易出错的参数来讲。你记住这五个,就能应付 90% 的场景了。
| 参数 | 说明 | 个人建议 |
|---|---|---|
-i / --input |
输入文件,支持 fasta 格式,也支持某些已分析过的中间格式 | 文件路径别用中文,容易出编码问题 |
-o / --output |
输出文件名 | 我习惯加上路径,否则文件散落在当前目录,找起来烦 |
-f / --formats |
输出格式,最常用的是 GFF3、TSV、XML、JSON | 如果要可视化,推荐 GFF3;如果要二次解析,我选 JSON |
-appl |
指定要运行的预测方法,比如 -appl Pfam,CDD |
全跑太慢,按需选择,能省一半时间 |
-dp |
禁用 DNA/RNA 到蛋白的翻译 | 如果输入是蛋白序列,记得加上这个参数,否则它会把每条序列当核酸去翻译,浪费时间 |
-dp,那 InterProScan 会把你的蛋白当核酸去翻译……结果就是啥都查不到,白白浪费计算时间。我曾经帮人查 bug,花了半小时才发现这个坑。
4.3 实战运行示例
好了,理论讲完了,咱们直接上手。我准备了三个场景,你挑一个贴近自己的来试就行。
场景一:快速扫描一个蛋白文件,输出 GFF3
interproscan.sh -i my_proteins.fasta -o results.gff3 -f GFF3 -dp
这里加上了 -dp,因为我知道自己的输入是蛋白。嗯,这条命令最常用,尤其适合做完预测后直接拉进 IGV 或者 JBrowse 看。
场景二:只查 Pfam 和 CDD 两个数据库,输出 TSV 方便后续分析
interproscan.sh -i eco_proteome.fasta -o eco_pfam_cdd.tsv -f TSV -appl Pfam,CDD -dp
我为什么只查两个数据库?因为我在做细菌比较基因组,Pfam 和 CDD 就够用了。全跑的话,一个基因组要半小时,现在十分钟搞定。做植物基因组项目时,项目时间紧,我都是这样选择性跑。
场景三:输入是核酸序列,让它自动翻译再预测
interproscan.sh -i genomic_contigs.fasta -o genomic_results.gff3 -f GFF3
这时候不能加 -dp,因为 InterProScan 会识别 ORF,翻译成蛋白再拿去分析。不过这里有个注意事项:如果你的核酸序列太大,比如整个细菌基因组,那 ORF 预测这一步就可能跑很久。我个人的做法是先用 Prodigal 或 GeneMark 预测基因,再拿蛋白序列来跑,这样更可控。
4.4 参数处理的流程关系
我画了一张图,帮你理解 InterProScan 是怎么处理你给的那一串参数的。为什么要画这个?因为我以前经常搞混参数之间的关系,比如 -dp 和 -appl 到底谁先执行。后来撸了一遍源码,才理清楚。
4.5 常见坑与避坑指南
嗯,这里得好好说说。这些坑我踩过不止一次,你记住了能省不少调试时间。
- 文件路径用绝对路径:我曾经只用文件名,结果 InterProScan 在临时目录里找不到输入,报了个莫名其妙的错误。从此以后,我的脚本里全用绝对路径。
- 检查输出目录是否有写权限:尤其是跑在服务器上,别人的目录你未必能写。InterProScan 不会提前告诉你,直到写完前最后一刻才崩。
- 别用 NFS 挂载目录跑大数据集:我吃过一次亏,跑了一个多小时,结果 NFS 断连了……所有中间结果都没存下来。后来我改成 SSD 本地跑完再迁移。
- 注意数据库版本:不同版本的 InterProScan 配的数据库版本不同。如果你在集群上跑,一定要确认模块加载的版本和数据库是否匹配。我之前用 5.50-84.0 的软件去加载 5.60 的数据库,结果匹配不到任何条目。
-iprscan4 参数,启用并行模式。否则它默认单线程,跑一天一夜都有可能。我个人强烈建议在运行前先看下 CPU 核心数,再用 -cpu 8 之类的参数限制并行度,别把服务器的 CPU 全吃满,免得挨师兄骂。
4.6 快速验证是否安装成功
安装完后,别急着跑大任务。先用一小段序列验证一下。我把这段测试序列贴在下面,你存成 test.fasta。
>test_protein
MSTATVLEQMVDYFKEYKEKVYGITSEIAITQVQKEGSTVRLHINVCQC
然后跑一下这条命令:
interproscan.sh -i test.fasta -o test_output.gff3 -f GFF3 -dp
如果几秒钟后出现输出文件,里面至少能查出几个 Pfam 或 SUPERFAMILY 的条目,那就说明安装没问题。我习惯用这条序列做冒烟测试,因为它短、跑得快,而且几乎所有数据库都能匹配上。
如果报错了,先别急。检查一下 Java 版本、Python 版本,还有数据库有没有正确下载。这些我在安装篇里说过,你翻回去看看。