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 参数组合,实战中的常见套路
在实际项目中,参数很少单独用,都是组合拳。我总结了几种高频场景:
- 快速验证跑通:只跑一个小文件,开一个子库
interproscan.sh -i small.fasta -o small_test -f tsv -appl PfamA
- 全库全流程跑:用预计算,输出 gff3
interproscan.sh -i full.fasta -o full_result -f gff3
- 新基因组的谨慎模式:关掉预计算,多格式输出,方便对比
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 本章知识体系总览
下面这张图把命令行参数、输出格式、帮助信息之间的关系串起来了——你从命令行左端输入参数,程序经过解析后,右侧会吐出对应格式的文件;如果中间出问题,帮助系统就是第一个求救信号。
4.7 一些小提醒
- 文件名里不要有空格,不要有中文——别问我为什么知道,都是泪
- 每次改参数组合之前,先跑一次
--help确认语法,哪怕你已经背下来了 - 输出格式缩写是小写的,写成
TSV或者GFF3会报错,别踩这个坑 - 如果你在服务器上跑,记得用绝对路径,别指望
~或者相对路径每次都生效
命令行是枯燥的,但这就像开车——你不需要知道引擎怎么转,但必须知道油门刹车在哪里。把这一章的基础打好,后面的批处理才能稳住。