2. 安装与部署(Linux)
说实话,InterProScan 的安装并不复杂,但坑不少。我第一次部署时,光依赖环境就折腾了大半天。你想想看,一个工具要同时伺候 Java、Perl 和 Python 三个运行时,稍有不慎就会报错。这一章,我会把整个流程拆开揉碎,把我在项目中踩过的坑一并告诉你。
核心思路:先检查系统,再配环境,最后安装验证。这一步错,步步错。
2.1 系统要求
在动手之前,先看看你的服务器够不够格。我个人习惯用 CentOS 7 或 Ubuntu 20.04 LTS,这两个发行版踩坑最少。硬件方面,下面这个表可以作个参考:
| 组件 | 最低要求 | 建议配置 |
|---|---|---|
| CPU | 4 核 | 8 核及以上 |
| 内存 | 8 GB | 32 GB(数据库加载后更从容) |
| 磁盘 | 50 GB | 200 GB(包含所有数据库文件) |
| 操作系统 | Linux x86_64 | CentOS 7 / Ubuntu 20.04 |
嗯,这里要注意:InterProScan 的数据库解压后差不多 80 GB,加上运行时的临时文件,200 GB 不算夸张。我曾经在 100 GB 的机器上跑,结果中途磁盘写满,任务全崩,白等了 6 个小时。
为什么会这样?因为 InterProScan 在运行时,会把中间结果写到临时目录,默认是 /tmp。如果你系统盘空间不大,记得改环境变量 TMPDIR 指向一个大分区。
2.2 依赖环境配置
InterProScan 的依赖有三个:Java、Perl 和 Python。说白了,每个都是独立的大系统,但 InterProScan 只用到它们的一小部分功能。我建议先检查系统自带的版本:
java -version
perl -v
python3 --version
如果版本不符,就手动安装。下面是我整理的具体步骤。
2.2.1 Java
InterProScan 5.x 要求 Java 11。我用的是 OpenJDK 11,稳定且免费。安装命令:
# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-11-jdk
# CentOS/RHEL
sudo yum install java-11-openjdk-devel
# 验证
java -version
# 输出应该包含 "openjdk version "11.0.x""
我曾经遇到一个问题:系统装了多个 Java 版本,InterProScan 的启动脚本总是调用 Java 8,结果直接报 Unsupported class file major version。解决方法很简单,设置 JAVA_HOME 环境变量:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
建议把这两行加到 ~/.bashrc 或 /etc/profile 里,一劳永逸。
2.2.2 Perl
Perl 大部分系统都自带。InterProScan 5.x 对 Perl 版本要求不高,5.20 以上即可。如果你像我一样用 CentOS 7 默认的 5.16,那就需要升级一下:
# 安装 Perl 5.26(使用 perlbrew 或系统包)
sudo yum install perl-5.26-minimal
# 或者用 plenv
plenv install 5.26.3
plenv global 5.26.3
嗯,这里要提醒:InterProScan 的 iprscan 脚本会调用 Perl 来解析某些输出文件。如果你不跑多序列比对,Perl 版本要求其实不严。但我个人习惯装新版,免得后期出问题。
2.2.3 Python
Python 3.6 以上即可。InterProScan 用 Python 来处理 JSON 和 XML 输出。安装方法:
# Ubuntu
sudo apt install python3 python3-pip
# CentOS
sudo yum install python3 python3-pip
# 验证
python3 --version
# 应该 >= 3.6
注意:InterProScan 在运行时会调用 python3 命令,不是 python。如果你的系统只有 python 指向 Python 2,一定要装好 Python 3 并确保 python3 可用。
2.3 下载 InterProScan
下载方式有两种:官网 FTP 或 GitHub Release。我一般用 FTP,速度稳定:
# 进入你打算安装的目录(比如 /opt 或 /home/bioinfo)
cd /opt
# 下载最新稳定版(以 5.67-96.0 为例)
wget https://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.67-96.0/interproscan-5.67-96.0-64-bit.tar.gz
# 解压
tar -xzf interproscan-5.67-96.0-64-bit.tar.gz
# 重命名(方便管理)
mv interproscan-5.67-96.0 interproscan
解压后,目录结构如下:
interproscan/
├── bin/
├── data/
├── lib/
├── interproscan.sh
├── interproscan.properties
└── ...
其中 data/ 目录默认是空的,需要单独下载匹配的数据库文件。你也可以选择在第一次运行时自动下载,但建议手动下载,因为数据库很大(约 80 GB),万一断网重下很麻烦。
手动下载数据库的命令:
cd /opt/interproscan
wget https://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.67-96.0/alt/interproscan-data-5.67-96.0-64-bit.tar.gz
tar -xzf interproscan-data-5.67-96.0-64-bit.tar.gz
# 这样 data/ 下就有所有数据库文件了
2.4 单机安装步骤
下载和解压就算完成“安装”了。InterProScan 不像其他软件需要 make install,它解压即用。但有几个关键配置,不做好就没法跑。
2.4.1 权限设置
# 确保脚本可执行
chmod +x /opt/interproscan/interproscan.sh
# 设置数据目录权限(如果其他用户要用)
chmod -R 755 /opt/interproscan/data
2.4.2 配置文件修改
打开 interproscan.properties,找到下面几项:
# 设置 Java 最大内存(根据你的机器调整)
# 默认是 2g,我建议改成 8g 或更高
nucleic.acid.max.memory=8g
protein.max.memory=8g
# 数据库路径(如果手动下载的,要确保路径正确)
data.directory=/opt/interproscan/data
嗯,这里要注意:如果数据库路径不对,InterProScan 会尝试从网络下载,非常慢。我当初就因为这个浪费了 2 个小时,最后发现是路径少了个 /。
2.4.3 运行测试
InterProScan 自带了一个测试脚本,用来验证安装是否成功:
cd /opt/interproscan
./interproscan.sh -i test_proteins.fasta -o test_output.tsv
如果一切正常,你会看到类似下面的输出:
INFO [main] - InterProScan 5.67-96.0 starting...
INFO [main] - Using Java: /usr/lib/jvm/java-11-openjdk-amd64/bin/java
INFO [main] - Loaded database: Pfam (version 35.0)
...
INFO [main] - Finished. Results written to test_output.tsv
打开 test_output.tsv,如果里面有几行带注释的数据,就说明安装成功了。
2.5 安装验证
除了跑测试数据,我还会做两步验证:
- 检查 Java 版本:确保启动脚本调用的 Java 不是你系统里的老版本。
- 检查数据库完整性:手动数一下
data/下面有多少个.db文件。
验证数据库的快速方法:
ls -lh /opt/interproscan/data/*.db | wc -l
# 正常应该有 10 个左右,具体数量视版本而定
我个人的习惯是,安装完后立刻用 screen 或 nohup 跑一个小的真实序列,确认能跑完。因为有些 bug 在测试数据上不会暴露,但在实际数据上会出现。比如,我曾遇到一个数据库文件损坏,测试集只有 3 条序列,没触发那个模块;跑一个 50 条序列的输入时,直接卡死在 Pfam 搜索上。
小技巧:把 interproscan.sh 加到 PATH 环境变量里,以后直接用命令调用,不用每次输全路径。
export PATH=/opt/interproscan:$PATH
echo 'export PATH=/opt/interproscan:$PATH' >> ~/.bashrc
2.6 常见问题与避坑
注意:如果你在运行 interproscan.sh 时遇到 Error: Could not find or load main class,多半是 JAVA_HOME 没设对,或者 lib/ 路径不对。检查 interproscan.properties 中 jar.path 是否正确。
我曾经遇到过一个问题:服务器内存 64 GB,但 InterProScan 一直报内存不足。后来发现是 interproscan.properties 里的 .max.memory 写成了 8g 但没留单位后缀,系统直接用了字节解析。改成 8g 去掉单位?不,写成 8g 是对的,是我写成了 8 没带 g。这些小细节,真的坑人。
其他常见问题:
- Java 不是 Java Development Kit(JDK):InterProScan 需要 JDK 而不是 JRE,因为编译注解模块需要
javac。我的教训:装了 JRE 跑了两天才发现。 - 不要用 root 用户跑:InterProScan 会在
data/下写临时文件,root 权限可能导致其他用户无法读数据库。 - 数据目录不要放在 NFS 挂载盘:数据库文件数量多、体积大,NFS 远程读写极慢,我曾经等过半小时还没加载完一个模块。
2.7 本章知识体系
下面这张图把安装部署的核心流程画出来了。你可以对照它,一步步检查自己的环境:
图里我特意把避坑点列在了右侧。说白了,InterProScan 的安装没有太多技术含量,但每一个细节都有可能让你卡住很久。照着这个流程一步步来,基本不会出大问题。