Babyblue 发表于 2013-3-19 08:16:39

脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析

Vina是在Autodock4基础上改进的算法,相比autodock4而言,具体优势:准确,并行计算(官网数据):AutoDock Vina is a new open-source program for drug discovery, molecular docking and virtual screening, offering multi-core capability, high performance and enhanced accuracy and ease of use.
相应参考文献:O. Trott, A. J. Olson, AutoDock Vina: improving the speed and accuracy of docking with a new scoring function, efficient optimization and multithreading, Journal of Computational Chemistry 31 (2010) 455-461

最近用了Vina做了一次对接,我只对接了几百个化合物,发现这软件,现在还不太智能,比如说前期处理,对接结果处理,我始终认为与典型的mol2或者sdf格式文件相比,PDBQT+dlg格式文件不是很好处理,最近和一个师弟写了几个脚本程序,用来处理Vina对接问题:主要的程序如下:

对接软件:Autdock-Vina (http://vina.scripps.edu/)

PDBQT生成脚本程序:LigPrep.sh or LigPrep.py (shell 和 python,见附件):可以实现mol2、sdf、PDB、PDBQT等格式文件的虚拟库,转化成Autodock或者Vina需要的单个分子的PDBQT文件,还写了一个插件,自动去除重复分子。

结果处理程序:ARC-1.2.py (Autodock and Vina Result Conversion, python版本,见附件):实现Dlg文件、单个分子的PDBQT对接结果转化成集成的PDBQT、sdf等格式文件。还可以根据命令提示,提取打分最好的构想及打分,或者排名前十的分子,这对处理大规模虚拟筛选十分关键。

接口程序:Vina-1.4.sh (shell 版本):主要实现自动对接,只要用这个接口就可以实现,就像商业的软件的按钮操作一样,简单方便~

obabel 软件:我们的脚本需要调用此软件里面的插件来实现功能,关于这个插件,现在自己准备后面的时间来写这段代码。

我下面结合具体例子来说:

1、蛋白受体的处理:
   这个不需要多说了,ADT或者PyRx,都可以生成受体的PDBQT文件(建议),或者就自己手动生成一个(不建议),然后确定盒子中心。按照Vina的输入文件要去制作.cgf文件,例如:
config.cgf
#######################################################
receptor = rec.pdbqt //受体的名称
center_x = -2
center_y = 0            //盒子的质心
center_z = -4
size_x = 30
size_y = 32            //盒子的大小
size_z = 46
exhaustiveness = 20       //计算的复杂度
cpu = 16                     //并行计算
energy_range = 4          //作用能间距等级,这个我到现在也没搞懂{:soso_e154:}
num_modes = 20         //保留构想数目,这个是cluster之后的结果,实际构想可能很多
#######################################################

2、虚拟库小分子文件的准备
首先把虚拟库转化成mol2格式文件(里面包含很多分子),其实这个处理还需注意一些事项,如加氢、电荷、去除自身小分子、离子、无机盐等等,对接前的构想最好是3D构想
然后启动脚本LigPrep.sh,根据提示操作:
###################################################################
# sh LigPrep.sh argument   #
#Usage: LigPrep.sh prepares autodock input files (PDBQT).
#Requirement:
# 1.Ensure that molecules in the input file are of 3D prior to preparation.//需要小分子的3D构象
# 2.Each molecule should have a unique internal name.                           //需要小分子唯一的内部名字
# 3.obabel is in use and its environment varible set.                              //需要安装obabel软件
#Option:
# -i input_file (*.sdf, *.mol2, *.pdb, *.pdbqt)
# -o output_directory (default is '__pdbqt_files__')
# -n Number of molecules to divide into each group
#(default is 1500)   
# -h display this message
# -help alias of '-h'
###################################################################

例如:
sh LigPrep.sh -i ***.sdf(这样就可以生成一个默认的文件夹,里面包含虚拟库的单个小分子的PDBQT格式文件,即可以用于Autodock或者vina进行虚拟筛选)

3、虚拟筛选
启动脚本:vina-1.4.sh
#################################################################
# Usage:       #
#sh vina-1.4.sh working_direcotry #
# Option:      #
# --helpdisplay this message   #
# -halias of "--help"   #
# Note:      #
# working_directory contains input and output folders.Receptor file (e.g. receptor.pdbqt ), ligand file(s)
(e.g ligand_01.pdbqt or ligands.mol2 ) and configuration file (e.g config.cfg) must be put in the "input" folder;
all output files (*_out.pdbqt, *.log and *.txt) will be generated in the "output" folder.   
# The hierarchy relationship of the above folders and files can be depicted as follow:    #
# ROOT      
#|__ Group1Group2Group3...vina vina-1.2.sh
#|__ input   
#|   \___ *.pdbqt config.cfg   
#|__ output         
#         \___ *_out.pdbqt *.log *.txt
#################################################################

这里面要搞清楚程序放的位置关系:

例如:

sh vina-1.4.sh UCSD/ &
这表明vina-1.4.sh 和vina这2个程序 放在UCSD这个文件外面,UCSD文件里面有个input文件,里面放的是第一步产生的.cfg文件、蛋白的PDBQT文件,以及第二步产生的小分子的PDBQT文件

运行命令,即可筛选~

这样就在input文件夹同级产生output文件夹,里面就是对接结果,有几个文件解释一下:
all.log : 所有对接进度记录;
all_xtr.txt :所有对接打分记录
best_xtr.txt :所有小分子对接打分最好的记录


4、结果分析:
Vina产生的pdbqt文件和Autodock产生的dlg文件,都可以经过我们写的脚本进行处理,实现数据整合,可以用商业软件处理分析、可视化等等

#################################################################
    arc-1.2.py argument
Usage:
      arc-1.2.py is an Autodock Result Converter that converts autodock (AD4 or vina)
    output file(s) to SDF file(s) via arcing DLG to PDBQT, modifying PDBQT and
    externally-generated SDF. Either an input file or a folder that contains input
    files is required. The output file or folder is optional, and default name is
    used if not specified.
Option:
    -i          (*.dlg of AD4, *.pdbqt of vina or *.sdf) or
               
    -o          (default is *_out.pdbqt, *_mod.pdbqt or *_mod.sdf) or
               
    -m          ; extract the th mode/model of each molecule
    --mode      alias of "-m"
    --model   alias of "-m"
    -h          display this message
    --help      alias of "-h"
#################################################################

例子:
python arc-1.2.py -i ***.dlg -o ***.sdf(对Autodock产生的dlg文件的处理),sdf文件很多软件都可以打开

python arc-1.2.py -i input_directory -o ***.sdf(对Vina结果进行处理)

除此之外,还可以提取打分最好的分子,排序,等等功能


以上是我对Vina虚拟筛选的总结以及如何使用脚本程序来辅助智能化前处理和结果的后分析,花了一天的时间来准备这个,所有本帖提供的程序

都经过一天的测试,希望对大家有所帮助!

我要谢谢跟着我的一个本科生(SheldonCelan),提供技术支持!


有什么问题可以P me~



xufund 发表于 2016-5-8 09:11:46

试用了楼主的PDBQT转换脚本。赋予LigPrep.sh文件权限后,运行sh LigPrep.sh -i *.mol2报错;改用命令LigPrep.sh -i *.mol2
发现只跳出一个命令简介窗口,啥也没有(图1)。求解。
另外运行vina-1.4.sh也出现同样问题(图2)

晴海11 发表于 2016-4-14 11:05:25

我的配体是草甘膦,输入时的电荷非整数,输出也是非整数,您编写的脚本里能解决这个问题吗

晴海11 发表于 2016-4-14 11:05:06

我的配体是草甘膦,输入时的电荷非整数,输出也是非整数,您编写的脚本里能解决这个问题吗

浙医-中药筛选 发表于 2013-3-19 21:56:42

{:soso_e179:}学习了

wgbigfatcat 发表于 2013-3-20 08:48:09

买一个吧。算支持了。

xufund 发表于 2013-3-23 19:28:07

支持楼主的辛勤劳动。能否详细说说安装的问题?

Babyblue 发表于 2013-3-24 09:40:41

不需要安装,加载权限即可!

forpal 发表于 2013-3-26 18:05:32

收藏了 谢谢分享

yuhongda 发表于 2015-12-11 18:42:14

太给力了啊

leoleo 发表于 2015-12-16 16:52:06

积分太少,下载不了

luosgan 发表于 2016-4-9 10:51:39

:loveliness::loveliness::loveliness:
页: [1] 2 3
查看完整版本: 脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析