摘要:本文介绍了如何用Virtuaflow虚拟筛选Enamine的Advance、HTS与Real Diverse数据库。

作者:肖高铿/2020-10-29

前言

之前我们移值了开源高通量虚拟筛选系统VirtualFlow及其数据库Real Database到cloudam的云E算例平台1,已经开始为广大用户服务。由于Real数据库需要定制,因而供货周期比现货更长、价格也更贵,不少用户反馈希望能有现货数据库可用。经过上海陶素许可,将Enamine的2020年5月份Adance与HTS两个现货数据库也准备成VirtulFlow可用的格式并与大家分享。

本文用了一个“不同于”云计算教程 | 在云端用VirtualFlow实现超高通量虚拟筛选的流程来完成虚拟筛选,但其本质是一样的:本文只是将前文脚本createworkflow.sh拆解为一行一行的命令分别执行罢了。这么拆解脚本的目的是让大家更方便的自定义参数进行虚拟筛选。

特别声明(2021-12-04)

今年发布的Vina 1.2支持多分子对接以及GIRD可重复利用,这样可以节省很多文件读取的时间并免于GRID重复生成,大幅提升计算的性能。因此我建议分割数据库为小库用Vina1.2进行虚拟筛选。此外,原始的VirtualFlow用Openbabel进行格式转化,存在柔性键错误定义的情况,这也是我不推荐继续用Virtualflow的理由。

ENAMINE数据库简介

经过更新之后,目前有三个ENAMINE数据库可以使用,分别介绍如下:

  1. Enamine REAL
  2. 2020/07/20从www.virtual-flow.org移值过来,包含了14.6亿化合物,供应商为enamine(上海陶素代理),需定制。

    位置:$LIBRARY/enamine/ligand-library

    todo.all生成与空间坐标:从www.virtual-flow.org在线获取。

  3. Enamine REAL-Diverse
  4. 包含了2100万的多样Real化合物,供应商为enamine(上海陶素代理),需定制。

    位置:$LIBRARY/enamine-diverse-real-drug-like/ligand-library

    todo.all生成与空间坐标:见数据库目录里的todo.all, 空间坐标解释见README。

  5. Enamine Advance
  6. 2020年5月版本,包含了448388个化合物,供应商为enamine(上海陶素代理),现货。

    位置:$LIBRARY/enamine-adv-202005/ligand-library

    todo.all生成:见数据库目录里的todo.all,空间坐标解释见README。

  7. Enamine HTS
  8. 2020年5月版本,包含了1756280个化合物,供应商为enamine(上海陶素代理),现货。

    位置:$LIBRARY/enamine_hts_vfvs_202005/ligand-library

    cloud

    todo.all生成:见数据库目录里的todo.all, 空间坐标解释见README。

其中环境变量LIBRARY定义如下:

1
2
export VFVS_ROOT=/public/software/.local/easybuild/software/virtualflow
export LIBRARY=$VFVS_ROOT/libs

虚拟筛选的准备

以BCR-ABL激酶抑制剂的虚拟筛选为例,假设你准备好了如下文件:

  1. Dokcing计算用蛋白文件:1iep_prot.pdbqt
  2. QVINA2用的Docking配置文件:config.txt
  3. VirtualFlow配置文件:ctrl.all
  4. 该文件的设置主要与使用的计算节点核心数有关系,我这里准备了3各种情况:4核心(all.ctrl-c4)、8核心与16核心(all.ctrl-c16)节点的配置文件,这些配置文件已经配置好,适合于用qvina进行虚拟筛选。

  5. 对接用的化合物列表:todo.all
  6. 在本算例中,用Enamine advance,todo.all文件在该数据库目录下。

Virtulflow的使用

1 设定项目文件目录

假设计划在HOME下的VFVS_ABL目录开始一个虚拟筛选计算,那么我们需要创建该目录做为管理该项目的目录。为了方便后续管理,并建立一个VFVS_DIR环境变量指向该目录:

1
2
3
cd  ~
mkdir VFVS_ABL
export VFVS_DIR=/home/cloudam/VFVS_ABL

2 准备input-files目录

2.1 创建input-files目录

首先,我们需要创建一个input-files,用于保存输入文件。

1
2
cd $VFVS_DIR
mkdir input-files

2.2 指定用于虚拟筛选的数据库

鉴于我们需要对Enamine advance进行虚拟筛选,所以将该该库放入input-files目录,用软链接即可:

1
ln -sf $LIBRARY/enamine-adv-202005/ligand-library $VFVS_DIR/input-files

2.3 创建受体文件目录并放置受体文件

1
2
mkdir -p $VFVS_DIR/input-files/receptors
cp 1iep_prot.pdbqt $VFVS_DIR/input-files/receptors

2.4 创建对接场景目录并放置对接参数文件

1
2
mkdir -p $VFVS_DIR/input-files/qvina02_rigid_receptor1
cp config.txt $VFVS_DIR/input-files/qvina02_rigid_receptor1/config.txt

3. 准备tools目录

先将Virtual flow的tools复制到项目目录

1
cp -fr $VFVS_ROOT/vfvs/tools $VFVS_DIR

复制todo.all到tools里:

1
cp  $VFVS_DIR/input-files/ligand-library/todo.all $VFVS_DIR/tools/templates/todo.all

复制Virtualfollow配置文件

1
cp   all.ctrl-c4 $VFVS_DIR/tools/templates/all.ctrl

其中all.ctrl-c4是我实先准备好的Virtual Flow配置文件,适合于4核心计算节点。相应的有8核心与16核心(all.ctrl-c16)的配置文件。

检查一下现在的项目文件里的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[cloudam@master 1_input]$ tree
.
├── input-files
│   ├── ligand-library -> /public/software/.local/easybuild/software/virtualflow/libs/enamine-adv-202005/ligand-library
│   ├── qvina02_rigid_receptor1
│   │   └── config.txt
│   └── receptors
│       └── 1iep_prot.pdbqt
├── output-files
└── tools
    ├── bin
    │   ├── qvina02
    │   ├── qvina_w
    │   ├── smina
    │   ├── sqs
    │   ├── time_bin
    │   ├── vina
    │   ├── vina_carb
    │   └── vina_xb
    ├── slave
    │   ├── continue-jobline.sh
    │   ├── copy-templates.sh
    │   ├── copy-templates.sh.clodam
    │   ├── copy-templates.sh.old
    │   ├── exchange-continue-jobline.sh
    │   ├── exchange-jobfile.sh
    │   ├── prepare-todolists-cloudam.sh
    │   ├── prepare-todolists.sh
    │   ├── prepare-todolists.sh.old.old
    │   ├── show_banner.sh
    │   ├── submit.sh
    │   └── sync-jobfile.sh
    ├── templates
    │   ├── all.ctrl
    │   ├── one-queue.sh
    │   ├── one-step.sh
    │   ├── template1.lsf.sh
    │   ├── template1.pbs.sh
    │   ├── template1.sge.sh
    │   ├── template1.slurm.sh
    │   ├── template1.slurm.sh.old
    │   ├── template1.torque.sh
    │   └── todo.all
    ├── tmp
    │   └── README.md
    ├── vf_continue_all.sh
    ├── vf_continue_jobline.sh
    ├── vf_prepare_folders.sh
    ├── vf_redistribute_collections_multiple.sh
    ├── vf_redistribute_collections_single.sh
    ├── vf_report.sh
    ├── vf_start_jobline.sh
    └── vf_start_jobline.sh.old
 
10 directories, 41 files

4. 准备工作流目录(workflow)

1
2
cd $VFVS_DIR/tools
./vf_prepare_folders.sh

5. 开始虚拟筛选

假设我们用200个节点进行虚拟筛选,用vf_start_jobline.sh开始虚拟筛选:

1
2
3
cd $VFVS_DIR/tools
NODE_NUMBER=200
./vf_start_jobline.sh 1 $NODE_NUMBER templates/template1.slurm.sh submit 1

6. 进度查看与对接结果统计

1
2
cd $VFVS_DIR/tools
./vf_report.sh  -c vs -d qvina02_rigid_receptor1

虚拟筛选的后处理:列出top化合物与pose提取

本部分内容需要openbabel支持,因此需要预先加载OpenBabel的虚拟环境。在cloudam,虚拟环境rdkit已经预先安装好了openbabel:

1
2
3
module add Anaconda3/2020.02
source activate
conda activate rdkit

1. 复制VFTools

首先需要将VFTools复制一份到本地:

1
2
3
cd $VFVS_DIR
cp -r  $VFVS_ROOT/vftools/VFTools .
export PATH=$VFVS_DIR/VFTools/bin:$PATH

2. 排序并获得top化合物列表

在VirtualFlow计算完毕,还可以对所有的化合物进行排序。创建专用的目录pp,键入命令:

1
2
3
cd $VFVS_DIR
mkdir -p pp/ranking
cd pp/ranking

对所有的化合物排序:

1
vfvs_pp_ranking_all.sh ../../output-files/complete/ 2 meta_tranche

如果不能正常使用,请键入:

1
vfvs_pp_ranking_all.sh -h

根据帮助,确保参数都是正确的。同时确认已将VFTools/bin加入到PATH环境变量。

给出打分最佳前100个化合物的列表,保存为compound:

1
head -n 100 qvina02_rigid_receptor1/firstposes.all.minindex.sorted.clean > compounds

3.提取打分最靠前100个化合物的对接结合模式(pose)

创建新的目录,用来保存pose

1
2
3
cd $VFVS_DIR/pp
mkdir -p docking_poses/qvina02_rigid_receptor1
cd docking_poses/qvina02_rigid_receptor1

根据第上一步的列表(componds),将top 100化合物的pose提取出来:

1
2
cp ../../ranking/compounds .  #复制列表到当前目录
vfvs_pp_prepare_dockingposes.sh ../../../output-files/complete/qvina02_rigid_receptor1/results/ meta_tranch compounds dockingsposes overwrite

生成三个文件,两个目录:

1
compounds  compounds.energies  compounds.energies.uniq.csv dockingsposes  dockingsposes.plain

每个打分最佳的pose已经按排名顺序以PDB格式保存在dockingsposes.plain目录里,可以直接用可视化软件对结果进行分析,推荐用FlareViewer(免费)做为可视化软件对结果进行分析。

致谢

Enamine 2020年5月份版本的HTS与Advance数据库由上海陶素提供,网站:https://www.tsbiochem.com

计算费用

以最近一个用户的虚拟筛选为例,说明费用情况,帮助大家做合理的预算.

  • 硬件配置与单价
  • 16核心,每核心1GB内存, 机时费用为0.1元/核小时。

  • 数据库
  • Enamine HTS(2020 May版本)共175万化合物。

  • 虚拟筛选软件与主要参数
  • 用QVINA2进行虚拟筛选,exhaustiveness = 8,每个化合物仅进行一次计算。

  • 总费用
  • 最终结算费用为2300元。

文献

  1. 肖高铿,李青松. 云计算教程 | 在云端用VirtualFlow实现超高通量虚拟筛选. http://blog.molcalx.com.cn/2020/07/20/cloudam-virtualflow-htvs.html

使用咨询

Virtual Flow布署于云E算力平台,一款提供机时的云计算产品,注册即可使用。