4、命令行基础:常用参数、输出格式选项、帮助信息

说实话,很多新手拿到 InterProScan 的第一反应就是直接跑,结果要么跑出几十 G 的乱码,要么卡在那儿几个小时不动。我当年也犯过这种错——输出格式没选对,解析数据时差点把自己看吐。

命令行这东西,说白了就是你和软件对话的暗号。参数写对了,它干活利索;写错了,它直接摆烂给你看。咱们这一节就把这些暗号摸清楚。

4.1 核心参数,一个都不能少

你先记住一条铁律:InterProScan 的必填参数其实就两个——输入文件和分析类型。剩下的全是可选,但选不对就等于白跑。

来看最常用的参数表:

参数 完整写法 作用 我的习惯
-i --input 输入文件,fasta 格式 绝对路径,避免找不到文件
-o --output 输出文件前缀或路径 跟输入同目录,加个日期后缀
-f --format 输出格式,一行一个格式 千万别漏掉这个!
-t --seqtype 序列类型:p 或 n 蛋白默认 p,核酸手动指定 n
-dp --disable-precalc 关闭预计算匹配 跑新物种时必开
-appl --applications 指定子库,逗号分隔 按需选,别全开

我最怕看到有人用 -i 不写 -o,结果输出直接怼到终端里,屏幕直接糊了。你记住:-i 和 -o 要成对出现。

4.2 输出格式,选对了省一年时间

InterProScan 支持六种输出格式。我在项目里见过最离谱的——有人用默认的 raw 格式,然后写了个三天三夜的脚本去解析。其实你换个格式,两行代码就能搞定。

我个人的黄金选择:日常用 tsv,批量用 gff3,看完整结果用 json。XML 尽量别用,解析起来特别烦。

来看具体用法:

# 只输出 tsv 格式
interproscan.sh -i test.fasta -o test -f tsv

# 同时输出 gff3 和 json
interproscan.sh -i test.fasta -o test -f gff3,json
格式 特点 适合场景
tsv 表格,每行一个匹配 数据分析、表格导入
gff3 基因组标准格式 基因组浏览器、下游比较
json 结构化,信息完整 脚本处理、二次开发
xml 繁琐,节点深 老系统兼容,不推荐
html 可读性好,机器难解析 临时看结果,别用于批处理

曾经有个坑:我同时输出 tsv 和 xml 时,日志文件被 xml 硬生生撑到 2G 以上,磁盘直接爆了。建议只选 1-2 种核心格式,别贪心。

4.3 帮助信息,你的救命稻草

很多同学遇到问题第一反应是去翻文档或者问群。其实最快的方法就是问程序自己。

# 完整帮助
interproscan.sh --help

# 快速看参数列表
interproscan.sh -h

# 看版本和依赖
interproscan.sh --version

--help 会输出所有参数和用法示例,大概 100 行左右。我刚开始用时觉得太长,后来发现——每一个参数后面都跟了一个实际例子,比看文档直观多了。

一个小技巧:把 --help 的输出重定向到一个文件里,随时翻看。比如这样:

interproscan.sh --help > interpro_help.txt
less interpro_help.txt

我电脑桌面上长期留着这个文件,调参数时先查它,不用每次都去翻网页。

4.4 参数组合,实战中的常见套路

在实际项目中,参数很少单独用,都是组合拳。我总结了几种高频场景:

  1. 快速验证跑通:只跑一个小文件,开一个子库
interproscan.sh -i small.fasta -o small_test -f tsv -appl PfamA
  1. 全库全流程跑:用预计算,输出 gff3
interproscan.sh -i full.fasta -o full_result -f gff3
  1. 新基因组的谨慎模式:关掉预计算,多格式输出,方便对比
interproscan.sh -i novel.fasta -o novel_result -f tsv,gff3,json -dp

为什么第三套方案我特别推荐?因为新基因组匹配少,预计算基本没用,关掉能省掉大量无效比对浪费时间。

4.5 版本号,容易被忽略但非常重要

你想想看,两个不同版本的 InterProScan 跑同一个文件,结果可能完全不同。为什么?因为数据库更新了,算法也可能微调过。

所以每次跑之前,先确认版本号:

interproscan.sh --version

输出类似这样:

InterProScan version: 5.62-95.0
Database version: 95.0

我建议你把版本号直接写入项目日志,或者放在输出文件名里。

命名规范参考:比如 sample_v562_95.0_no_precalc.json,一眼就能看出用了什么版本、跑了什么模式。这个习惯帮我少踩了很多坑,你试试看。

4.6 本章知识体系总览

下面这张图把命令行参数、输出格式、帮助信息之间的关系串起来了——你从命令行左端输入参数,程序经过解析后,右侧会吐出对应格式的文件;如果中间出问题,帮助系统就是第一个求救信号。

命令行参数 → 执行 → 输出的流程 命令行 -i test.fasta -f tsv 参数解析器 校验格式+路径 格式引擎 tsv / gff3 / json 输出文件 test.tsv 帮助系统 --help / -h ⏹ 说明: 参数解析器同时连接格式引擎和帮助系统;一旦参数出错,先查 --help 再重试。 这是我项目中最常用的调试路径,本质上是人机对话的快速迭代。

4.7 一些小提醒

  • 文件名里不要有空格,不要有中文——别问我为什么知道,都是泪
  • 每次改参数组合之前,先跑一次 --help 确认语法,哪怕你已经背下来了
  • 输出格式缩写是小写的,写成 TSV 或者 GFF3 会报错,别踩这个坑
  • 如果你在服务器上跑,记得用绝对路径,别指望 ~ 或者相对路径每次都生效

命令行是枯燥的,但这就像开车——你不需要知道引擎怎么转,但必须知道油门刹车在哪里。把这一章的基础打好,后面的批处理才能稳住。