2. 环境准备:Linux服务器、Perl、Python、R等依赖安装

说实话,每次开新课前,我最怕听到的就是“环境装好了”。这步要是没做对,后面所有代码都得跪。我见过太多同学,代码写得漂亮,结果一跑就报错,查半天发现是依赖版本不对。所以这一章,咱们踏踏实实把家底儿装齐。

2.1 你需要一台什么样的服务器

ANNOVAR和VEP都是跑在Linux上的工具。我个人习惯用Ubuntu 20.04 LTS,够稳,社区支持也好。CentOS 7也行,但包管理器是yum,命令不大一样。

硬件要求? 说实话,不算高。但数据库文件不小——ANNOVAR的refGene和clinvar,加起来几十个G。VEP的缓存更是下起来让人崩溃。所以,建议至少

  • 内存:8GB+,16GB更舒服。VEP加载大数据库时很吃内存。
  • 磁盘:100GB以上空闲。最好是SSD,解压和查询都能快很多。
  • CPU:4核以上。多线程注释时,核多就是快。
注意:千万不要在Windows的WSL1下跑ANNOVAR,文件系统IO慢到你怀疑人生。WSL2会好一些,但我还是建议直接上原生Linux服务器或者Docker。

2.2 Perl:VEP的亲爹

VEP是用Perl写的。所以第一件事:装Perl。

大部分Linux发行版都自带了Perl。但版本可能偏老。VEP 112要求Perl ≥ 5.26。我遇到过5.24跑VEP,一堆模块装不上,气得我直接升了。

检查版本:

perl --version

# 如果你看到 v5.xx.x 大于等于5.26,那行。
# 否则,需要重新安装或升级。

安装Perl模块:

VEP依赖一大堆Perl模块。最省心的办法是让VEP的安装脚本帮你搞定。但如果你要自己装,可以这样:

# 安装cpanminus(比cpan好用)
curl -L https://cpanmin.us | perl - --sudo App::cpanminus

# 安装常用模块
cpanm DBI DBD::mysql Archive::Zip
cpanm JSON Set::IntervalList
# 别急,VEP官方有一个更完整的依赖列表,后面会讲。
提示:我一般先把系统的gcc和make装好,否则cpanm编译模块时会挂。Ubuntu下这条命令搞定:apt install build-essential。

2.3 Python:我们的主力战场

虽然VEP用Perl,但后期数据处理、可视化、整合,咱们全靠Python。我个人习惯用Miniconda来管理Python环境,干净又灵活。

安装Miniconda:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 一路yes。最后重启终端或用source ~/.bashrc激活。

conda --version
# 应该看到 conda 23.x.x 之类

创建专属环境:

我强烈建议每个项目建一个独立环境。别把所有包装进base,后患无穷。

conda create -n annot_py311 python=3.11 -y
conda activate annot_py311

# 安装常用数据处理库
pip install pandas numpy
pip install matplotlib seaborn
pip install jupyterlab
# 之后还会装pysam、pyensembl等,但那是后面章节的事。
为什么用3.11? 我记得3.12刚出时,有几个生物信息学库还没适配,踩过坑。3.11兼容性最好,至少到2025年都稳。

2.4 R语言(可选但推荐)

说实话,R的ggplot2画基因结构图就是比Matplotlib顺手。虽然本课程以Python为主,但我还是建议装个R,万一哪步想用呢。

# Ubuntu
sudo apt install r-base r-base-dev

# 验证
R --version

# 启动R,安装常用包
R
> install.packages("ggplot2")
> install.packages("dplyr")
> q()

如果你服务器上跑R包太慢,可以考虑用Microsoft R Open或者conda安装R:

conda install -c conda-forge r-base r-essentials -y

2.5 数据库下载:这才是大头

工具装好了,没数据库还是白搭。ANNOVAR和VEP都需要下载参考基因组和注释数据库。

ANNOVAR的数据库:

# 假设你已经下载了ANNOVAR的perl脚本
# 下载人类hg38的注释库
annotate_variation.pl -buildver hg38 -downdb -webfrom annovar refGene humandb/
annotate_variation.pl -buildver hg38 -downdb -webfrom annovar clinvar_20240913 humandb/
annotate_variation.pl -buildver hg38 -downdb -webfrom annovar dbnsfp42a humandb/

# 注意:dbnsfp非常巨大,30G+,量力而行

VEP的缓存:

# VEP提供了缓存下载脚本
perl INSTALL.pl --CACHEDIR /path/to/vep_data --SPECIES homo_sapiens --ASSEMBLY GRCh38 --CACHE_VERSION 112

# 或者手动下载后解压
wget https://ftp.ensembl.org/pub/release-112/variation/indexed_vep_cache/homo_sapiens_vep_112_GRCh38.tar.gz
tar -xzf homo_sapiens_vep_112_GRCh38.tar.gz -C /path/to/vep_data
小心磁盘空间:我曾在某次课上,忘记检查磁盘就直接下载VEP缓存,结果跑到一半空间满了,数据库碎了,又得重新下。建议先df -h看看剩余空间。

2.6 验证环境是否可用

装完所有东西,最好跑一个“Hello World”来验证。

验证ANNOVAR:

# 找一个测试VCF文件(或者自己编一个简短的)
# 这里用ANNOVAR自带的示例
table_annovar.pl example/ex1.avinput humandb/ -buildver hg38 -out myanno -remove -protocol refGene -operation g -nastring .

# 如果成功,你会看到 myanno.hg38_multianno.txt 文件生成

验证VEP:

# 用VEP的示例VCF
vep --cache --dir /path/to/vep_data --input_file example.vcf --output_file test_vep.vcf --everything

# 如果看到 "Job completed successfully",就对了。

验证Python环境:

python -c "import pandas; print('pandas version:', pandas.__version__)"

这步很简单,但很重要。我一般把验证命令写进一个check_env.sh脚本里,以后每次换机器就一键跑一次。

本章核心结构速览

下面这张图把今晚的准备工作串起来了。你照着这个流程走,不会落东西。

环境准备整体流程 Linux 服务器 Perl ≥5.26 + 模块 Python 3.11 + 库 R(可选) 下载数据库 验证环境 🎯 可以开始实战 说明: Perl 和 Python 是必须项 R 是可选项,但推荐安装 数据库下载需要联网和空间