Autodock vina对接!
相信你已经准备好了两个pdbqt,如果没有可以去看我准备pdbqt的那个blog。如果你想要直接下载,请下载:
这个blog采用3NPO作为模拟蛋白,可以在这里看到!上面的pdbqt是处理好的ph=7.0的,Kaempferol就是ligand,3NPO是receptor
config file准备
pdbqt是最难准备的,config相对就容易很多。autodock 4的config file准备也很看水平,但是vina把这个过程简化了,就只要最基础的几个事情
# 受体和配体设置
# 应该你已经准备好了两个pdbqt
receptor = receptor.pdbqt
ligand = ligand.pdbqt
out = output.pdbqt # 输出格式也是pdbqt!是包含多个对接结果的pdbqt!
# 网格中心与大小 (Grid Box)
# 这一部分要看蛋白质的状态!
center_x = -14.71807
center_y = 4.1954655
center_z = 3.4588184
size_x = 50
size_y = 50
size_z = 50
# 搜索参数
exhaustiveness = 32 # 让他稍微exhausted一点。和AI交流一下具体要多少,一般32即可!
num_modes = 20 # 输出前多少个,前20个比较常用发文章
energy_range = 3 # 经典的几个参数配置
说白了没啥技术含量,如果非要说,其中最有技术含量的就是center和size了。普遍来说你有两种选择
- blind docking:直接使用protein正中间作为center,并且size的数值要大到包括整个protein再加上ligand的扭转可能的范围。对于3NPO我选择50
- local docking:使用你blind docking dock 出来的ligand中心,或者口袋中心,范围要包括所有纳入计算的氨基酸!!而不是ligand自身的范围!!这是不同于discovery studio中的binding pocket,那个真的是pocket,这里的size更像计算范围而非口袋范围,一般要比口袋大一大圈!
有人问如何看蛋白质中心在哪里,可以使用下面几个方法:
# 1. 如果你安装了biopython,执行这个一句话脚本,注意receptor.pdb是目标
python -c "from Bio.PDB import PDBParser; import numpy as np; coords = [a.get_coord() for a in PDBParser(QUIET=True).get_structure('p', 'receptor.pdb').get_atoms()]; print('Center:', np.mean(coords, axis=0))"
# 2. 如果你懒得安装,我们可以直接解析pdb计算
awk '/^(ATOM|HETATM)/ {x+=$7; y+=$8; z+=$9; n++} END {if(n>0) printf "Center X, Y, Z: %.3f, %.3f, %.3f\n", x/n, y/n, z/n; else print "No atoms found."}' receptor.pdb
# 3. 如果你的电脑上有pymol,可以用命令行计算
pymol -cq -d "load receptor.pdb; print(cmd.get_position('receptor'))"没错!你会发现其实就算是pdb上面下载的蛋白质他们中心点也不是0,0,0。经常还会差很多呢!比如这里我就是-14.71807,4.1954655,3.4588184,每个蛋白一定要自己算出来!
开始跑!
config file准备完毕,直接可以跑了。运行下面这个命令
# 1. 加载autodock大礼包环境
module restore autodock-vina
# 2. 启动 Vina 纯 CPU 引擎进行对接
vina --config config.txt --cpu 2对接结果!
最后你就会看着它从0到100,然后得到这样的结果:

主要我们就是看第一列affinity也就是亲和力,如果小于-7就已经是很好的结果了!越小越好~ 当然,你可能和我的结果不一样,因为我没有用提供的文件跑。
另外可以从dist from rmsd大概看出有多少个口袋,比如说图中1是0,4是22,很明显4和1不是一个口袋,他们相差了22个A,这很多!但是2和3分别是3.4和3.5应该是在一个口袋的
最后
如果你在同时对接很多pdbqt,这里有脚本可以自动化整个流程!