第4章:基本运行命令:命令行选项、数据库选择、输出格式指定

InterProScan 跑起来其实不复杂。说白了,就是一条命令搞定的事。但恰恰是这条命令,藏着不少讲究。选什么数据库、用什么输出格式、CPU 给多少,每一项都会直接影响你的分析结果和效率。我做了这么多年质控,见过太多因为命令行写错一个参数就重跑三天的情况。嗯,这一章咱们就把这些细节掰开揉碎讲清楚。

4.1 命令行骨架长什么样

先看一个最基础的命令,你感受一下:

interproscan.sh -i proteins.fasta -o my_output -f TSV -dp

这行命令的意思是:输入一个蛋白质 FASTA 文件,输出 TSV 格式的结果,禁用预计算匹配(-dp)。咱们先记住这个骨架,后面所有变化都从这个基础命令衍生出来。

我个人习惯在跑任何批量分析之前,先用一条小数据测试命令行是否写对了。你想想看,要是等跑完 10 万个序列才发现参数错了,那多耽误事。

4.2 核心命令行选项详解

InterProScan 的选项不算多,但每个都很关键。我按使用频率从高到低列了一张表:

选项 作用 我常用的写法
-i 指定输入 FASTA 文件 -i ./data/query.fasta
-o 指定输出文件前缀 -o ./results/run1
-f 输出格式(TSV/XML/GFF3) -f TSV,XML
-dp 禁用预计算匹配(推荐开启) -dp
-cpu 使用的 CPU 核心数 -cpu 8
-d 指定要使用的数据库 -d Pfam,Panther
-T 临时文件目录 -T /tmp/ips
-appl 同 -d,指定应用 -appl Pfam
注意: -dp 这个选项我建议每次都加上。不开启的话,InterProScan 会优先去查预计算的匹配结果,虽然速度快,但可能会漏掉一些新的或特异的匹配。我在项目中遇到过因为没加 -dp 导致质控结果偏乐观的情况,后来全部重跑了。

4.3 数据库选择:不是越多越好

InterProScan 背后整合了十几个数据库。但你不需要每次都全部跑一遍。为什么?因为有些数据库覆盖的内容高度重叠,全跑不仅慢,还会让结果变得冗余。

常用的数据库有这么几个:

数据库 特点 我推荐的场景
Pfam 蛋白质家族和结构域,覆盖广 通用分析,必选
Panther 进化关系和功能分类 系统发育相关项目
PROSITE 功能位点和模式 功能基序分析
SMART 结构域注释,特异高 结构域精细分析
TIGRFAMs 直系同源家族,功能明确 细菌/古菌功能注释
CDD 保守结构域数据库 补充验证
我的习惯: 一般项目我会选 Pfam + Panther + PROSITE 三个,覆盖度够,速度也快。如果做细菌基因组质控,我会加上 TIGRFAMs。你不需要每次都用「全家桶」。

指定数据库的命令也很直接:

interproscan.sh -i proteins.fasta -o my_output -f TSV -dp -cpu 8 \
    -d Pfam,Panther,PROSITE

我曾经因为数据库选太多把服务器跑挂了。那是做一个宏基因组项目,我一股脑把所有数据库都选上,结果跑了整整四天还没跑完,最后 OOM 了。嗯,那次之后我就学乖了,按需选择才是正道。

4.4 输出格式:三个选择,三种用法

InterProScan 支持三种输出格式:TSV、XML 和 GFF3。它们不是互斥的,你可以同时输出多种。我一般都会同时输出 TSV 和 XML,前者用来看,后者用来做程序化处理。

三种格式的核心差异:

格式 结构 人类可读性 程序解析 文件大小 典型用途
TSV 表格,一行一个匹配 ★★★★★ ★★★ 小 快速浏览、Excel 查看
XML 树形,层级嵌套 ★★ ★★★★★ 大 下游程序处理、数据库导入
GFF3 9 列特征表 ★★★ ★★★★ 中 基因组浏览器展示、比较基因组学

命令上,同时输出多种格式很简单:

interproscan.sh -i proteins.fasta -o my_output \
    -f TSV,XML,GFF3 -dp -cpu 8 -d Pfam,Panther

这条命令会生成三个文件:my_output.tsv、my_output.xml 和 my_output.gff3。

质控视角: 我建议你在质控流程中至少保留一份 TSV 输出。它每一行就是一个匹配记录,用 grep、awk 或 Python 做统计非常方便。XML 虽然信息更全,但解析起来总得多写几行代码。

4.5 实战命令示例

给你几个我在真实项目中用过的命令模板,直接套用就行。

示例 1:快速质控扫描

interproscan.sh -i sample.fasta -o qc_result -f TSV -dp -cpu 4 \
    -d Pfam

示例 2:全面注释 + 多格式输出

interproscan.sh -i genome_proteins.fasta -o full_annot \
    -f TSV,XML,GFF3 -dp -cpu 16 \
    -d Pfam,Panther,PROSITE,SMART,TIGRFAMs

示例 3:指定临时目录,避免磁盘写满

interproscan.sh -i big_set.fasta -o big_results -f TSV -dp \
    -cpu 8 -d Pfam -T /data/temp_ips
避坑指南: 我曾经因为默认临时目录空间不足导致任务在运行了 30 小时后失败。所以,处理大批量数据时,一定用 -T 指定一个有足够空间的目录。

4.6 命令执行流程全景图

为了让你对整个流程有个整体印象,我画了一张流程图。它把输入、命令行解析、数据库选择、分析执行、输出格式转换这几个关键环节串了起来。你对照着看,心里会更清楚。

InterProScan 命令执行与输出流程 输入 FASTA 文件 命令行解析 -i / -o / -cpu / -dp 数据库选择(-d 参数) Pfam / Panther / PROSITE / SMART / TIGRFAMs 序列搜索分析 各数据库并行搜索 结果整合 输出格式转换(-f 参数) TSV / XML / GFF3 输出结果文件 output.tsv / output.xml / output.gff3 提示 实际运行中,-d 和 -f 可以自由组合。建议:质控项目用 TSV,深度分析用 XML,基因组展示用 GFF3。

这张图把一条命令背后的执行链条完整展示出来了。你写命令的时候,脑子里可以过一遍这个流程——输入是什么、选哪些数据库、最后要什么格式。每一步都清楚,就不容易出错。

4.7 小提醒:输出文件命名有个细节

当你指定 -o my_output,InterProScan 会自动在文件名后面加上格式后缀。也就是说,你拿到的文件是 my_output.tsv、my_output.xml、my_output.gff3,而不是你手动拼接的。这个设计挺好,省去了自己加后缀的麻烦。

但要注意:如果你重复运行同一个 -o 名称,InterProScan 不会自动覆盖已有文件,而是直接报错退出。我刚开始用的时候就踩过这个坑,明明命令没写错,就是跑不起来。嗯,解决办法很简单:每次换一个输出名,或者先清理旧文件。

# 如果 my_output.tsv 已存在,下一次运行会报错
interproscan.sh -i proteins.fasta -o my_output -f TSV -dp

# 解决办法:换一个输出名,或者先清理
rm -f my_output.tsv
interproscan.sh -i proteins.fasta -o my_output -f TSV -dp
我的工作流: 我一般会在 -o 里加上日期和样本编号,比如 qc_sampleA_20250501。这样既不会重名,后续翻查结果时也一目了然。

以上就是第4章的全部内容。命令行选项、数据库选择、输出格式指定,这三个东西组合起来就构成了 InterProScan 的日常用法。你不需要记住所有参数,但把这几个核心用法印在脑子里,大部分场景都能应付。