注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小楼一夜听风雨

计算机知识、分子模拟、Linux学习,与您共分享!

 
 
 

日志

 
 

AutoDock使用札记【转】  

2010-06-28 22:14:27|  分类: 分子模拟 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原创-AutoDock使用札记(1

AutoDock
2.0以前使用的是模拟退火算法(Simulated Annealing Algorithm),在其后的版本中改为了拉马克遗传算法(Lamarckian Genetic Algorithm,LGA)AutodockDock一样,都是基于格点(grid)的计算,首先用围绕受体活性位点的氨基酸残基形成box,然后用不同类型的原子作为探针(probe)进行扫描,计算格点能量,然后对配体在box范围内进行构象搜索(conformational search),最后根据配体的不同构象(conformation),方向(orientation)和位置(position)进行评分(scoring),排序(ranking)。AutoDock虽然提供了诸如ADT(AutoDock Tools)BDT的图形界面工具,但是我们仍然认为其是一个字符界面运行分子对接软件。由于运算速度不快,所以在字符界面下对于运算的管理更为方便,可以将长时间的运算放在后台运行。对于输入文件的准备问题,Autodock有其自带的一些程序,比如addsol等,同时ADT (AutoDock Tools)也提供了一些python脚本 (路径: MGLTools/MGLToolsPckgs/AutoDockTools/Utilities24),可以代替这些程序来进行输入文件的处理。

需要注意的地方是:
1
autodock只能对单分子文件对接(一个文件只含有一个分子),不能对多分子文件筛选,所以,对于含有多个分子的文件(比如multi_mol2以及sdf),需要将之分解为多个单分子文件。有以下方法实现:

i)
使用babel
    $babel -imol2 specs_p0.0.mol2 -o specs.mol2 -split
   
将生成specs0001.mol2,specs0002.mol2 ...

ii)
使用splitmolDOCK软件包中程序,只能对mol2pdb文件进行分解):
    $mkdir specs_p0.0
    $cd specs_p0.0
    $splitmol -mol2 ../specs_p0.0.mol2
   
将生成split00001,split00002,...

2
、利用上面命令分解得到的单分子文件,外面的名称和分子内部的名称不符,可以通过编写教本批量重命名:
适用于ZINC数据库中的mol2数据集:
    for i in split*
    do
        mv $i $(grep ZINC $i).mol2   
    done
提取包含ZINC所在行的字段,在ZINC数据库中,恰巧为分子的名称。最后,全部命名为ZINC××××××.mol2

3
AutoDock官方发布版本不能用于并行运算(有的课题组开发了并行版本,但并未发布)。为了提高效率,可以将几十万个分子文件分为几百个部分,每个1000个分子。
specs数据库的20万个分子文件按照1000个分子为一组(每组为一个目录),分为20个目录
    $mkdir specs_0.0_01
    $mv specs0.0.mol2 ../specs_0.0_01
利用通配符将前999个分子转移入新文件夹,实现分装目的。
    $ls ../specs_0.0_01 | wc [-w]
查看文件个数

4
、在AutoDock输入文件的准备中,使用了很多外部程序,比如Sybyl(Tripos Ltd.)。小分子三维结构数据库都有在线免费的。如果想要构建自己的化合物库,可以用ChemDraw(商业)或ISIS/Draw(免费)画好后,存为二维格式(推荐用mol格式),然后用Corina等软件转化成三维结构。

5
AutoDock可能会发生堆栈溢出的情况,错误提示为“Segment Fault”,可以在系统的配置文件(通常为/etc/bashrc)中添加如下行:
    unlimit stacksize

在后面的介绍中,会加入下面的内容:

    Autodock
分子对接流程
    AutoDock
结果分析
    AutoDock
用于虚拟筛选

[
本帖最后由 minminchen8 2008-12-8 15:50 编辑 ]< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

原创-AutoDock使用札记(2——分子对接流程

1、受体文件准备:
Atudock
运算的受体加极性氢(polar hydrogens, essential_only hydrogens),Kollman United点电荷。首先把PDB蛋白文件中除蛋白以外的所有物质全部删除(可以在Sybyl中操作),保存未macro.pdb。加氢加电荷通过自由软件pmol2q可以很好实现:
    $pmol2q macro.pdb macro.mol2   
选择加氢,加电荷,pmol2q可以输出mol2pdbq以及pdbqs文件。


Autodock3中,受体的格式为pdbqs,可以通过如下方法准备:
i
)通过AutoDock软件包中程序:
    SGI Irix
下运行:
    %mol2fftopdbq macro.mol2 > macro.pdbq
    %addsol macro.pdbq macro.pqdbs

以上两个命令可以通过一个命令实现:
    %mol2topdbqs macro.mol2

    Linux
下运行:
    $mol2topdbq macro.mol2 > macro.pdbq
    $addsol macro.pdbq macro.pqdbs
   
ii
)通过ADTpython脚本:
    $pythonsh $adtpy/prepare_receptor.py -r macro.mol2 [-o macro.pdbqs] -C
   
注:
        -C:
保留原有电荷,若不用此选项,则添加Kullman电荷
注:关于pdbqs格式的受体原子类型说明:
   
在使用autogrid计算grid maps前,需要修改pdbqs文件中的原子名称。autogrid只能识别大分子的7中原子类型,这些原子类型以单字母表示:CNOSHXM
   
后面两种X,M可以用来表示所有类型的原子,不过,M通常用来表示金属(metals)。
   
另外,还需修改gpf文件,将其中涉及到X,M的行重新设定,主要是原子半径等参数。

Autodock4中,受体的格式为pdbqt,与PDB格式类似,包含点电荷 ('Q')AutoDock4原子类型('T')。可以通过如下方法准备:
    $pythonsh $adtpy/prepare_receptor4.py -r macro.mol2 [-o macro.pdbqs] -C
   
注:   
        
也可以由python脚本中的pdbqs_to_pdbqt.py来将autodock3pdbqs文件转化。
        -o:
不加则自动生成文件名相对应的pdbqt文件。
        -C:
保留原有电荷,否则添加Gasteiger电荷

2
、配体文件准备:
Autodock3中,配体的格式为pdbq,可以通过如下方法准备:
i
)通过AutoDock软件包中程序:
    %deftors lig.mol2

ii
)通过ADTpython脚本:
    $pythonsh $adtpy/prepare_ligand.py -l lig.mol2 [-o lig.pdbq] -C
   
注:
        -C:
保留原有电荷
        -o
:不加则自动生成文件名相对应的pdbq文件。
        
Autodock4中,配体的格式为pdbqt.可以通过如下方法准备:
    $pythonsh $adtpy/prepare_ligand4.py -l lig.mol2 [-o lig.pdbqt] -C
   
注:
        
也可以由python脚本中的pdbq_to_pdbqt.py来将autodock3gpf文件转化:
        $pythonsh pdbq_to_pdbqt -s lig [-o lig.pdbqt]
   

3、准备GPF(grid parameter file)文件:
Autodock3

i
)通过AutoDock软件包中程序:
    $mkgpf4 lig.pdbq macro.pdbqs
   
注:
        
程序包中有mkgpf3,不过mkgpf4是其修正后的版本,建议使用mkgpf4,这个与autodock4没有关系。
   
ii
)通过ADTpython脚本:
    $pythonsh $adtpy/prepare_gpf.py -r macro.pdbqs -l lig.pdbq
   
Autodock4(
只能通过ADTpython脚本)
    $pythonsh $adtpy/prepare_gpf4.py -r macro.pdbqt -l lig.pdbqt [-p gridcenter='x y z'] [-o lig.macro.gpf]
   
注:也可以由python脚本中的gpf3_to_gpf4.py来将autodock3gpf文件转化。
        -o:
输出文件名
        -p gridcenter='x y z'
注意用单引号
    

注:
    1
、准备gpf文件时,最好通过ADT图形界面进行,这是因为:
        i
gpf文件中活性位点(center grid)默认根据配体位置定义(auto),需要修改为晶体结构中配体的具体坐标值;当然,在命令行中使用-p gridcenter='x y z'参数也可以定义。
        ii
)盒子(box)大小在图形界面中可以很方便的调整。
        iii
)在虚拟筛选中需要添加更多的院子类型,在图形界面中操作非常方便,可以通过“Grid”菜单中的“Directly Set”来输入需要的原子类型。
    2
、配体的原子类型说明:
        AD3
AD4的原子类型写法差异很大,而且,在gpf文件中,表达格式差异也很大。在AD4中,各种原子类型写在一行中,每种类型以空格间隔,但是在AD3中,须对每种原子类型的具体参数(作用半径)进行定义,比较繁琐。下面是两种版本中原子类型的写法:
-----------------------
AD3:
    C carbon (aliphatic)
    A carbon (aromatic)
    N nitrogen
    O oxygen
    P phosphorus
    S sulphur
    H hydrogen     
    f iron
    F fluorine
    c chlorine
    b bromine
    I iodine
-----------------------
AD4
(共22种,下表中有7中重复,在autodocksuite-< xmlnamespace prefix ="st2" ns ="urn:schemas-microsoft-com:office:smarttags" />4.0.0/src/autodock-4.0.0/AD4_parameters.dat文件)
    H    Non H-bonding Hydrogen
    HD*  Donor 1 H-bond Hydrogen
    HS   Donor S Spherical Hydrogen
    C*   Non H-bonding Aliphatic Carbon
    A*   Non H-bonding Aromatic Carbon
    N*   Non H-bonding Nitrogen
    NA*  Acceptor 1 H-bond Nitrogen
    NS   Acceptor S Spherical Nitrogen
    OA*  Acceptor 2 H-bonds Oxygen
    OS   Acceptor S Spherical Oxygen
    F    Non H-bonding Fluorine
    Mg   Non H-bonding Magnesium
    MG   Non H-bonding Magnesium
    P    Non H-bonding Phosphorus
    SA*  Acceptor 2 H-bonds Sulphur
    S    Non H-bonding Sulphur
    Cl   Non H-bonding Chlorine
    CL   Non H-bonding Chlorine
    Ca   Non H-bonding Calcium
    CA   Non H-bonding Calcium
    Mn   Non H-bonding Manganese
    MN   Non H-bonding Manganese
    Fe   Non H-bonding Iron
    FE   Non H-bonding Iron
    Zn   Non H-bonding Zinc
    ZN   Non H-bonding Zinc
    Br   Non H-bonding Bromine
    BR   Non H-bonding Bromine
    I    Non H-bonding Iodine
-----------------------
注:
    *
默认在gpf中存在的原子类型
   
$bable -imol2 lig.mol2 -obox box
0.375

4、准备DPF(docking parameter file)文件:
Autodock3

i
)通过AutoDock软件包中程序:
    $mkdpf3 lig.pdbq macro.pdbqs
   
ii
)通过ADTpython脚本:
    $pythonsh $adtpy/prepare_dpf.py -r macro.pdbqs -l lig.pdbq
   
Autodock4(
只能通过ADTpython脚本)
    $pythonsh $adtpy/prepare_dpf4.py -r macro.pdbqs -l lig.pdbqt -p ga_num_evals=25000000 -p ga_run=100 -p ga_pop_size=300
   
注:
        
也可以由python脚本中的dpf3_to_dpf4.py来将autodock3gpf文件转化。
        -p parameter=value
:输入参数值
注:
   
此处生成的dpf需要编辑其中的参数,对遗传算法的精度进行设置。dpf文件中参数设置:
   
其中,"ga_num_evals""ga_num_evaluations"用于限定程序收敛条件,决定运算费时长短。
    'ga_'
起始行参数:genetic algorithm
    'sw_'
起始行参数:Solis and Wets local search method
    ga_num_evals=25000000    Torsions<10
,设定为2.5e5 2.5e7Torsions>10,设定为2.5e7(默认2.5e6)
    ga_run=100   
最好在50以上(默认10
    ga_pop_size=300
(默认150
    sw_max_its=3000
(默认300

5、通过AutoGrid计算格点能量:
    $autogrid3/4 -p macro.gpf -l macro.glg
注:   
    AutoGrid
默认计算8种原子类型,可以通过修改源代码,使其计算更多院子类型的格点能量。

6、通过AutoDock进行分子对接:
    $autodock3/4 -p lig.macro.gpf -l lig.macro.glg
注:
   
AutoGrid一样,AutoDock默认计算8种原子类型,可以通过修改源代码,使其计算更多院子类型的格点能量。

   
7
、提取结果:
i
)通过AutoDock软件包中程序:
    $get-docked lig.macro.dlg
注:
   
生成lig.macro.dlg.pdb文件
   
ii
)通过ADTpython脚本:
    pythonsh $adtpy/summarize_results.py
    pythonsh $adtpy/summarize_results4.py

参考:
http://autodock.scripps.edu/faqs-help

 

原创-AutoDock使用札记(3——虚拟筛选

利用AutoDock进行虚拟筛选:I.目录结构:
$VSTROOT
$VSTROOT/Results/
$VSTROOT/scripts/
$VSTROOT/VirtualScreening/
$VSTROOT/VirtualScreening/etc
:预先对晶体复合物进行分子对接,用于重现晶体结构结合模式,以此考察分子对接软件是否适用于改体系。
$VSTROOT/VirtualScreening/Ligands
:包含所有小分子(pdbqt格式)
$VSTROOT/VirtualScreening/Receptor:
包含所有受体和参照分子文件(pdbqt格式),以及通过gpf生成的map文件,xyz文件((grid size file)fld文件(grid field file)。
$VSTROOT/VirtualScreening/Dockings
:虚拟筛选时,对于每个小分子产生目录。在各目录中:将../Ligands/中对应的小分子文件复制到此处;为../Receptor/macro.pdbqt以及*map*在此处建立快捷方式;通过python脚本prepare_dpf4.py生成dpf文件;运行autodock进行分子对接。

所以,在作虚拟筛选时,在工作目录中,需要创建4个新目录,分别为:
    receptor    ligands        etc        docking
--------------------------------------
利用AutoDock进行虚拟筛选:II.脚本解析(csh
i)
将配体的mol2文件转化为pdbqt文件(脚本,Ligands目录):
##########################
#!/bin/csh
foreach f(*.mol2)
    pythonsh $adtpy/prepare_ligand4.py -l $f  [-o "$f"qt] [-d ligand_dict.py]
end

##########################

OR


##########################
#!/bin/bash
for f in *.mol2
do
    pythonsh $adtpy/prepare_ligand4.py -l $f  [-o "$f"qt] [-d ligand_dict.py]
done

##########################
注:
    -d:
生成文件记录每个分子中的原子类型信息,用于下面的autogrid计算。

ii)
准备受体对接文件(Receptor目录:*.gpf,*.map,*.fld
##########################
    $pythonsh $adtpy/prepare_receptor4.py -r macro.mol2 [-o macro.pdbqt] -C
    $pythonsh $adtpy/prepare_gpf4.py -r macro.pdbqt -l lig.pdbqt
    $autogrid4 -p macro.gpf -l macro.glg

##########################
注:
   
编辑gpf文件,添加足够多的配体原子类型,然后一劳永逸地对每个原子类型进行格点能量计算。原子类型详见上一部分。
   
运用AutoDock3进行虚拟筛选时,由于gpf文件中包含了详细的原子类型信息,不能象AutoDock4一样直接修改,可以使用模板。(该模板来自JMC2005文献作者)。在ADT中添加原子类型可能能够直接添加在gpf文件中。


iii)
准备晶体结构中配体对接文件(etc/目录)
    $cd etc
    $mkdir 2cdz
    $cd 2cdz
    $cp ../../Ligands/2cdz_lig.pdbqt .
    $ln -s ../../Receptor/2cdz.pdbqt .
    $ln -s ../../Receptor/2cdz*map* .
    $pythonsh $adtpy/prepare_dpf4.py -l 2cdz_lig.pdbqt -r 2cdz.pdbqt [-o 2cdz_lig_2cdz.dpf] -p ga_num_evals=25000000 -p ga_run=100
    $autodock4  -p 2cdz_lig_2cdz.dpf -l lig_2cdz.dlg
    $tail ind_x1hpv.dlg
##########################

iv)
准备配体对接文件(脚本,Docking目录)
##########################
#!/bin/bash
cd Ligands
ls *.pdbqt > ../etc/ligand.list
cd ../Docking
for i in $(cat ../etc/ligand.list)
do
    f=$< xmlnamespace prefix ="st1" ns ="isiresearchsoft-com/cwyw" />{i%.pdbqt}
    mkdir $f
    cd $f
    cp ../../Ligands/$i .
    ln -s ../../Receptor/*map* .
    ln -s ../../Receptor/macro.pdbqt .
    pythonsh $adtpy/prepare_dpf4.py -l $i -r macro.pdbqt [-o ${f}_macro.dpf] -p ga_num_evals=25000000 -p ga_run=2
        cd ..
done

##########################
注:
    ${f}_macro.dpf
,调用变量${f},可以避免混淆;如果不加(i.e. $f_macro.dpf),系统会识别变量为"${f_macro}.dpf,这样,由于未定义f_macro这个变量,返回的值为".dlg"

   
v
)进行分子对接(脚本,Docking目录)
#########################
#!/bin/bash
for i in $(cat ../etc/ligand.list)
do
    f=${i%.pdbqt}
    autodock4 -p ${f}_macro.dpf -l ${f}_macro.dlg
done
#########################

后记:
AutoDock
的准确性在很大程度上依赖于ga_num_evalsga_pop_size以及sw_max_its,而对于ga_run可以设置为23(默认10
因此对于虚拟筛选,建议参数如下面脚本所示。这样,会给出2个或3个评分值,如果结果好,评分值应该比较一致。

在虚拟筛选中,为每个配体分子都创建了一个目录,然后将配体分子拷贝入此目录,将受体文件及map文件链接入目录,接着创建dpf文件,最后使用循环脚本,进入每个目录进行分子对接。个人认为没有必要,只要在一个Docking目录中,一次将受体及map文件链接,将所有配体文件拷贝入目录,为每个配体文件创建dpf文件。由于每个配体的名称是不同的,所以不用担心输入文件或者输入文件相互覆盖;另外,由于所用的受体和map文件是相同的,所以只要创建一次链接就可以了。因此,脚本修改为:
##########################
#!/bin/bash
cd /Docking
ln -s ../Receptor/*map* .
ln -s ../Receptor/macro.pdbqt .
cp ../Ligands/* .
for i in *.pdbqt
do
    pythonsh $adtpy/prepare_dpf4.py -l $i -r macro.pdbqt [-o ${f}_macro.dpf] -p sw_max_its=3000 -p ga_pop_size=300 -p ga_num_evals=25000000 -p ga_run=2
done

##########################
可以使用下面的脚本对接:
#########################
#!/bin/bash
for m in *.dpf
do
    ad3 -p $m -l ${m%dpf}dlg
done
#########################

注:
    ad3
使autodock3.max的链接。
   
参考:
Using AutoDock 4 for Virtual Screening
http://autodock.scripps.edu/faqs-help/tutorial/using-autodock4-for-virtual-screening
   
Using AutoDock 3 for Virtual Screening     
http://autodock.scripps.edu/faqs-help/tutorial/using-autodock-for-virtual-screening

 

原创-AutoDock使用札记(4——结果分析(完结)

AutoDock产生的构象和评分值(单位kcal/molAD4提供了RMSD值)为dlg文件,先使用get-docked命令转化为PDB格式,这种格式没有mol2格式操作方便。
        $get-docked *.dlg
dlg
文件中还包含了一部分比较重要的信息,即文件末尾的cluster部分。这部分数据对所有构象进行了聚类分析,并保留代表构象,按照能量值从优到劣排序,单独分析这部分数据,足以对对接产生的所有构象有完整认识。
       
1
、编写脚本提取运算结果的评分值并对评分值进行排序

adscore3
(适用于AutoDock3):提取PDB文件中的评分值并对评分值进行排序(需要用get-docked命令生成pdb文件)
#####################
egrep 'Run|Final Docked Energy' *.pdb >> adscore3.tmp
#perl -pi -e 's/\nUSER    Final/    Final/;' adscore.tmp
#sed "s/USER    //g" adscore.tmp | sort -r +8 score.tmp > adscore.log
vi -e adscore3.tmp << EOF
        :%s/USER    //g
        :%s/\nFinal/         Final/g
        :%s/\[=(1)+(2)\]//g
        :wq
EOF
sort -r +7 adscore3.tmp* > adscore3.log
rm -f *.tmp*
cat adscore3.log
#####################

-------------------------------------------------
adgrep4
(适用于AutoDock4):提取DLG文件中的评分值
#####################
#!/bin/bash
egrep 'DOCKED: USER    Run|Cluster Rank|RMSD from reference structure|USER    Estimated' *.dlg
#####################

-------------------------------------------------
adcluster4
(适用于AutoDock4):提取DLG文件中的Cluster Rank部分
#####################
#!/bin/bash
egrep 'Cluster Rank' -A5 -B2 *.dlg > adcluster4.tmp
sed "s/\[=(1)+(2)+(3)-(4)\]//g" adcluster4.tmp > adcluster4.log
cat adcluster4.log
#####################

-------------------------------------------------
adscore4
(适用于AutoDock4):提取DLG文件中的能量值和Ki值并根据能量值进行排序
#####################
#!/bin/bash
egrep  'USER    Run|USER    Estimated' *.pdb > adscore4.tmp1
egrep '.dpf' -v adscore4.tmp1 > adscore4.tmp2
sed "s/USER    //g" adscore4.tmp2 | egrep 'USER' -v > adscore4.tmp3
vi -e adscore4.tmp3 << EOF
        :%s/\nEstimated Free Energy of Binding/,   Estimated Free Energy of Binding/g
        :%s/  \[=(1)+(2)+(3)-(4)\]\nEstimated Inhibition Constant,/,   /g
        :%s/\[Temperature = 298.15 K\]//g
        :wq
EOF
sort -r +9 adscore4.tmp3 >  adscore4.log
rm -f *tmp*
cat adscore4.log
#####################

-------------------------------------------------
2
、用于分析AutoDock运算结果中受体-配体相互作用的图形化软件中,理论上最好用的应该是ADT(我没有用过,在Linux下非常慢,可能是由于从工作站上调用,显示延迟的缘故,而在Windows机器上总是无故退出)。我用过的最好用的是VidaOpeneye Ltd.),以前提供2个月的试用版,我还申请过1年的学术用户版,但一年后License过期,就没的用了。当然,把系统时间调整回到License有效期内,还是可以使用(Openeye公司的软件都是精品呵)。Vida可以同时读入受体、参考分子(这里是晶体结构中的配体)和对接得到的构象,显示非常好看的ribbon形态和氢键,作图效果一流,不过操作起来不是很人性化。
AutoDock
的手册示例中使用Sybyl软件对结果进行分析,不过Sybyl每次只能从PDB文件中读入1个分子,还是不很方便。
没有尝试UCSF chimera是不是可以,不过,看其对DOCK处理的得心应手,应该差不多。

参考:
Using AutoDock 4 for Virtual Screening
http://autodock.scripps.edu/faqs ... r-virtual-screening
   
Using AutoDock 3 for Virtual Screening     
http://autodock.scripps.edu/faqs ... r-virtual-screening

后记:
关于AutoDock使用的系列教程就算完结了。eming朋友提出DOVIS软件对于AutoDock的虚拟筛选已经实现了流程化(piperline pilot),确实,Dovis是一个不错的工具。当初在使用Autodock做筛选时,还没有看到这个软件。同样的,Linux平台下的Triton对于AutoDock的运算也可以提供很好的平台支持。这样的软件还有BDT,不妨尝试一下。
不过,个人觉得在字符界面下运行AutoDock还是要方便一些,特别是分子比较多的时候。曾经有一段时间,在unix-centerhttp://www.unix-center.net/?p=10 )注册了一个帐号,在其提供的服务器上进行运算,字符界面的,速度也不错。
最后感谢eming朋友的讨论和捧场,也感谢斑竹对新人帖子的支持。

 

  评论这张
 
阅读(2332)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017