2. 安装与配置:下载、依赖、环境变量、测试运行
这一章我们动手把 InterProScan 塞进机器里。别小看这步,我见过太多人卡在依赖上,折腾半天跑不起来,最后发现是 Java 版本不对。咱们把每个坑都填平再说。
2.1 下载:选对版本和渠道
官方下载地址其实就一个核心入口:
# 当前稳定版(我写这章时是 5.70-102.0)
wget https://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.70-102.0/interproscan-5.70-102.0-64-bit.tar.gz
注意几个要点:
- 版本号:别追最新,优先用长期维护版。我曾经因为用了刚发布的 5.60 测试版,发现 Panther 模型路径有 bug,折腾了半天。
- 镜像源:国内网络不稳定的话,试试中科院或清华的 FTP 镜像,但校验和必须核对。
- 校验文件:下载后务必比对 md5 或 sha256,避免传输破损。
# 校验
md5sum interproscan-5.70-102.0-64-bit.tar.gz
# 和官方.md5文件比对
解压也简单:
tar -xzf interproscan-5.70-102.0-64-bit.tar.gz
我的习惯:把解压后的目录软链到 /opt/interproscan,路径短好记,也方便多版本切换。
sudo ln -s /path/to/interproscan-5.70-102.0 /opt/interproscan
2.2 依赖安装:Java、Perl 和 Python 的准确版本
InterProScan 的依赖清单其实不长,但每个都有版本下限。我整理成表格方便对照。
| 组件 | 最低版本 | 验证命令 | 备注 |
|---|---|---|---|
| Java (JDK/JRE) | 11 | java -version | 必须 11 或更高,8 太老,17 没问题 |
| Perl | 5.26 | perl -v | 用于部分脚本和 hmmer 包装 |
| Python | 3.8 | python3 --version | 部分内置工具使用,非必需但建议装 |
我个人习惯先装 Java。你想想看,如果系统里同时有多版本,记得把 JAVA_HOME 指对。
# Debian/Ubuntu
sudo apt update
sudo apt install openjdk-11-jdk perl python3
# CentOS/RHEL
sudo yum install java-11-openjdk perl python3
曾经踩过的坑:在 CentOS 7 上默认 Java 8,我直接用 yum install java-11 发现包名不对,需要先启用 EPEL 再安装 java-11-openjdk-devel。别怕,翻翻官方文档就能解决。
还有几个可选依赖,但要是用到对应数据库就必须装:
- Diamond:用于 blast 加速(建议装,尤其大数据量时)
- HMMER3:用于 Pfam/TIGRFAM 搜索,InterProScan 自带二进制,但版本旧可以换系统版
- SignalP/TMHMM:商业软件需额外许可证,开源版也能用,但结果精度有差异
2.3 环境变量配置:一套清爽的 PATH 方案
我不喜欢把东西全糊进 ~/.bashrc,那样后期维护头大。我习惯在 /etc/profile.d/ 下建一个 interproscan.sh,或者直接用环境模块 module 来管理。
# /etc/profile.d/interproscan.sh
export INTERPROSCAN_HOME=/opt/interproscan
export PATH=$INTERPROSCAN_HOME/bin:$PATH
然后重新加载:
source /etc/profile.d/interproscan.sh
为什么这样做?因为多用户环境里,你改全局配置,其他人也能直接用。我曾在一台共享服务器上,好几个人分别在自己的 .bashrc 里写不同版本的路径,最后混乱到谁也跑不对。嗯,统一配置省心很多。
如果只想当前用户用,那就在 ~/.bashrc 末尾加一行:
export INTERPROSCAN_HOME=/opt/interproscan
export PATH=$INTERPROSCAN_HOME/bin:$PATH
记得执行 source ~/.bashrc 或新开终端。
2.4 测试运行:一条命令验证全链路
配置完别激动,先跑个最简单的测试。InterProScan 自带了一个小样本数据:
# 切到工作目录,避免权限问题
cd ~/interpro_test
interproscan.sh -i samples/sample_proteins.fasta -f tsv -o test_output.tsv
这条命令会:
- 读取 4 条蛋白序列(很小)
- 只运行内置数据库(不联网)
- 输出 TSV 格式结果
如果一切正常,你会看到类似这样的日志尾巴:
2025-03-10 14:23:01,382 INFO [main] - InterProScan 5.70-102.0 finished
2025-03-10 14:23:01,382 INFO [main] - Output file(s): test_output.tsv
此时可以打开 test_output.tsv 瞄一眼,有内容就说明安装配置成功。
避坑指南:如果你遇到 No such file: samples/sample_proteins.fasta,八成是你没在解压后的目录下运行。用 ls $INTERPROSCAN_HOME/samples/ 确认文件存在。我曾经忘了切目录,直接在当前用户家目录执行,结果报错,还以为是依赖没装好——其实是路径问题。
2.5 常见问题速查表
| 症状 | 可能原因 | 解决方法 |
|---|---|---|
Java version mismatch | Java 版本 < 11 | 安装 OpenJDK 11+ 并设置 JAVA_HOME |
Permission denied | 解压或运行脚本无执行权 | chmod +x bin/*.sh |
Can't locate ... in @INC | Perl 模块缺失(罕见) | 安装 BioPerl 或互作相关模块 |
| 运行卡在“Loading database” | 内存不足或磁盘 IO 过慢 | 调整 JVM 堆大小:export JAVA_OPTS="-Xmx4g" |
2.6 全流程配置记忆图
上面这张图把整个配置链路串起来了。我的建议是按照从左到右的顺序一步步来,别跳。我见过有人直接跳到最后一步测试,Java 没装对,报错后开始怀疑人生——其实就从下载开始走一遍,十五分钟搞定。
2.7 小技巧:批量测试的“烟雾测试”
正式跑大规模数据前,你可以准备一个含有 10 条左右序列的小文件,测一下不同分析模式是否正常。我常用这个命令:
# 只运行 Pfam 和 SuperFamily,输出 JSON
interproscan.sh -i small_test.fasta -f JSON -d --disable-precalc -appl Pfam,SuperFamily -o quick_test.json
这个测试大概 1~3 分钟就能跑完,确保你的安装和配置经得起实际调用。
经验之谈:我第一次在集群上部署时,忘了把 INTERPROSCAN_HOME 写到作业脚本的环境变量里,结果任务跑到一半报找不到索引。从那以后,我所有提交脚本开头都显式 export INTERPROSCAN_HOME=...,再也不靠系统全局了。
2.8 撤卸与版本切换
如果你装错了版本,或者想换新版,只需要删除解压目录和软链即可,不会留下系统残留。
rm -rf /opt/interproscan /opt/interproscan-5.70-102.0
# 然后重新解压新版本,再 ln -s
环境变量里的 PATH 会自动指向新版本,不需要改配置。这种设计非常干净,我喜欢。
好了,安装配置搞定。接下来你就可以放心大胆地跑真实数据了。