2. 安装与部署(Linux)

说实话,InterProScan 的安装并不复杂,但坑不少。我第一次部署时,光依赖环境就折腾了大半天。你想想看,一个工具要同时伺候 Java、Perl 和 Python 三个运行时,稍有不慎就会报错。这一章,我会把整个流程拆开揉碎,把我在项目中踩过的坑一并告诉你。

核心思路:先检查系统,再配环境,最后安装验证。这一步错,步步错。

2.1 系统要求

在动手之前,先看看你的服务器够不够格。我个人习惯用 CentOS 7 或 Ubuntu 20.04 LTS,这两个发行版踩坑最少。硬件方面,下面这个表可以作个参考:

组件最低要求建议配置
CPU4 核8 核及以上
内存8 GB32 GB(数据库加载后更从容)
磁盘50 GB200 GB(包含所有数据库文件)
操作系统Linux x86_64CentOS 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 安装验证

除了跑测试数据,我还会做两步验证:

  1. 检查 Java 版本:确保启动脚本调用的 Java 不是你系统里的老版本。
  2. 检查数据库完整性:手动数一下 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 安装部署流程 系统要求 依赖环境 下载 配置 验证 CPU≥4核,内存≥8GB 磁盘≥200GB(含数据库) Java 11 / Perl ≥5.20 Python 3.6+ 官网 FTP 或 GitHub 建议手动下载数据库 修改JAVA_HOME 设置 properties 文件 跑测试数据 检查输出文件 关键避坑点 • Java 需 JDK 而非 JRE • 数据路径不能错 • 不要用 root 跑 • 避免 NFS 挂载 data • TMPDIR 设到大分区 • 内存单位带 g • 先验证测试数据 “三分部署,七分配置” 别急着跑大作业 把环境调稳再说

图里我特意把避坑点列在了右侧。说白了,InterProScan 的安装没有太多技术含量,但每一个细节都有可能让你卡住很久。照着这个流程一步步来,基本不会出大问题。