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)11java -version必须 11 或更高,8 太老,17 没问题
Perl5.26perl -v用于部分脚本和 hmmer 包装
Python3.8python3 --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 mismatchJava 版本 < 11安装 OpenJDK 11+ 并设置 JAVA_HOME
Permission denied解压或运行脚本无执行权chmod +x bin/*.sh
Can't locate ... in @INCPerl 模块缺失(罕见)安装 BioPerl 或互作相关模块
运行卡在“Loading database”内存不足或磁盘 IO 过慢调整 JVM 堆大小:export JAVA_OPTS="-Xmx4g"

2.6 全流程配置记忆图

InterProScan 安装与配置流程 下载 wget 官方 / 镜像 解压 & 软链 tar + ln -s 依赖安装 Java 11 / Perl / Python 环境变量 PATH / INTERPROSCAN_HOME 测试运行 interproscan.sh -i samples/... -o test_output.tsv 关键提醒 • 下载后务必校验 md5 • 测试前确认 Java 版本 ≥ 11 • 内存不足时设置 JAVA_OPTS="-Xmx4g"

上面这张图把整个配置链路串起来了。我的建议是按照从左到右的顺序一步步来,别跳。我见过有人直接跳到最后一步测试,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 会自动指向新版本,不需要改配置。这种设计非常干净,我喜欢。

好了,安装配置搞定。接下来你就可以放心大胆地跑真实数据了。