环境搭建与安装:操作系统要求、conda安装、源码编译与容器化部署
说真的,安装 InterProScan 看起来不难,但坑是真不少。我自己带团队做质控项目时,第一次装就栽在数据库路径上。后来我总结出一个原则:先搞清楚你的系统环境,再选安装方式。下面我把三种主流方式拆开讲。
操作系统要求
InterProScan 官方推荐跑在 Linux 上。我个人的经验是:CentOS 7+ 或 Ubuntu 18.04+ 最稳。Windows 虽然能用 WSL,但性能打折,不建议生产环境用。
最低软硬件配置:
| 项目 | 最低要求 | 建议配置 |
|---|---|---|
| CPU | 4 核 | 16 核以上 |
| 内存 | 8 GB | 32 GB |
| 磁盘 | 50 GB | 200 GB (SSD) |
| Java | OpenJDK 11 | OpenJDK 17 |
| Python | 3.8 | 3.10 |
| Perl | 5.26 | 5.34 |
uname -a 和 cat /etc/os-release 确认系统,再动手。
方法一:conda 安装
这是我最推荐的方式。你想想看,conda 能自动处理几乎所有的依赖,包括那个让人头疼的 hmmer3 和 signalp。对,你没看错——InterProScan 的第三方工具在 conda 里都是预编译好的。
直接上命令:
conda create -n interpro -c bioconda interproscan
conda activate interpro
但别急着跑任务。装好以后,还要干两件事:
- 下载数据库(大约 4 GB):
interproscan.sh --download - 检查路径配置:确认
interproscan.properties里的db.path指向对了。
我的个人习惯: 用 conda 装完后,第一时间执行 interproscan.sh -v 看版本号。如果输出正常,再跑一个最小测试:
interproscan.sh -i test_proteins.fasta -f TSV
这样能提前发现 Java 堆内存是否够用,避免跑了一整天才发现 OOM。
方法二:源码编译
说实话,我一般只在 conda 不可用或者需要定制参数时才走这条路。比如某些 HPC 集群上 conda 被禁用,那就只能自己编译了。
先拉源码:
git clone https://github.com/ebi-pf-team/interproscan.git
cd interproscan
InterProScan 用 Maven 管理构建,但你别怕——它其实是个 wrapper,核心是调一堆外部工具(像 C 写的 blast+、hmmer、pfam_scan 等)。所以编译前要装好这些依赖:
- 系统包:
gcc g++ make cmake - 生物信息工具:
hmmer、ncbi-blast+、signalp(需要许可证)、tmhmm - Java 11+ + Maven 3.6+
然后编译打包:
mvn clean package -DskipTests
嗯,这里要注意——编译一次可能要 10-20 分钟,而且如果你网络不好,Maven 会卡在下载依赖上。我的建议是:先在 settings.xml 里配好阿里云镜像。
方法三:容器化部署
如果你在用 Kubernetes 或者只是图省事,容器是最优雅的方案。官方提供 Docker 镜像:
docker pull biocontainers/interproscan:v5.63-78.0
docker run -v /data:/data biocontainers/interproscan:latest interproscan.sh \
-i /data/input.fasta -f TSV -o /data/output.tsv
镜像里已经包含了所有数据库和依赖。你只需挂载输入输出目录即可。
Singularity 用户注意: 很多 Slurm 集群只认 Singularity。你可以把 Docker 镜像转成 Singularity:
singularity pull interproscan.sif docker://biocontainers/interproscan:latest
singularity exec interproscan.sif interproscan.sh -i input.fasta
这样就不需要 root 权限了。
三种方式各有长短,我画了张图帮你梳理思路:
最后提醒一句: 不管用哪种方式,都先跑 interproscan.sh --help 看看有没有报错。我见过有人明明装好了,却因为 JAVA_HOME 没设导致无法启动。这种问题排查起来特别浪费时间——别问我怎么知道的。