Autodock vina の pdbqt准备

Autodock vina の pdbqt准备
pdbqt file 的一部分

这篇blog中假设你毫无autodock经验但是有最最基础linux使用经验,本blog着重描述vina的一些文件和操作流程,以避免以后自己操作的时候犯错。

我们会先从配体准备的软件选择和安装开始,然后会分别讲解ligand和receptor的准备过程。

pdbqt生成-软件的选择和安装

这里的软件指的是从sdf或者pdb文件到pdbqt文件的过程。本质上来说他们都是笛卡尔坐标系xyz的信息储存文件,都可以用文本文档直接打开。

head your_pdbqt.pdbqt

没错,里面是人类可以读懂的表格,他们并不神秘

如果你打开看了,就会发现其实pdbqt比pdb多出了两列:也就是q和t。Partial Charge (Q)和Atom Type (T)。Q用于计算静电相互作用,T用于计算van derr waal力和氢键,他们正常pdb是不需要的,但是预测docking的时候非常有用。

一直以来Autodock tools或者MGL tools是比较被推荐的,也是官方标准工具,也是图形化工具。另外也有PyRx等别的第三方pdbqt生成器的库,但是兼容性相对差一点点(生成QT就说白了是很简单的活儿,但是既然有官方的为啥不用呢)。但是对于跑在服务器上面,我还是更倾向于完全使用命令行完成,这样不管是文件的管理还是流程把控都比较容易,写sh脚本可以省去很多人工体力劳动还有无聊的scp和文件整理环节。这里强烈推荐meeko库(https://github.com/forlilab/Meeko)。这是autodock官方主力推动的,新的处理工具,对于vina兼容性是最好的。

利用pip install或conda install安装即可,你会获得mk_prepare_ligand.py 和mk_prepare_receptor.py 两个可以直接执行的脚本文件,安装完成以后可能还要手动安装一些第三方库如gemmi。整个过程比较简单可以和AI老师交流一下,由于大家的环境各不相同,我就不做详细说明了。

Ligands 准备

这里我们用类固醇Kaempferol来打个比方。一般来说都是chemdraw直接画好结构导出成sdf,然后进行处理。可以使用下面链接下载ligand的sdf

1 平衡pH (加H)

第一步是平衡到实验pH,第一步是平衡到实验pH,第一步是平衡到实验pH。曾经多次实验失败全都是因为没有注意pH。学化学的知道,H这玩意真是难管又重要。一定要记住这一步!!!所以第一步我们平衡pH

obabel Kaempferol.sdf -O Kaempferol_ph7.0.sdf -p 7.0

用obabel平衡pH。没错,meeko才不管pH的事情

1.5 energy minimization

obabel Luteolin.sdf -O Luteolin_minimized.sdf --gen3d --minimize --ff MMFF94 --steps 500

obabel 能量最小化

有时候能量最小化一下,要不然可能不是真实情况。autodock会根据和输入的pdbqt的区别来扣分(如cis-trans转换等等)。我们需要模拟真实情况下的输入才能保证输出的准确性。

2 用meeko官方工具prepare ligand

下面直接用这个ph7.0的去prepare ligand即可,无需其他步骤。meeko会进行一些简单的基于经验的计算,正儿八经的算的话不会这么快的。

mk_prepare_ligand.py -i Kaempferol_ph7.0.sdf -o Kaempferol.pdbqt

meeko prepare ligand

这样我们就得到了Kaempferol.pdbqt!

receptor

autodock对于receptor的要求可谓是非常的严格,严格在于H,没错,又是H。为了降低工作量,vina只保留极性H,非极性H应该完全去除。另外,pH也是我们需要注意的,receptor使用3NPO做个例子。下载链接:https://www.rcsb.org/structure/3NPO

1 去水

这有很多种方法可以选,比如说用pymol打开手动选择所有0去掉,不过这里推荐直接一行命令搞定,不过还是要提前看一下水是不是HOH,如果是不讲科学不明来源的pdb,那这个方法可能不行。

grep -v HOH 3npo.pdb > 3npo_nowater.pdb

直接用greq去掉所有带HOH的行

2 平衡pH,加H

途径1:reduce2

这里最为推荐的是autodock官方自家推出的reduce2.py,直接执行命令即可:

reduce2.py approach=add add_flip_movers=True 3npo_nowater.pdb > 3npo_charged.pdb

用官方推荐的reduce2直接加H和电荷

但是!!!!但是!!!他不支持滴定加H!!也就是说你不知道它加出来到底pH是多少!虽然来说一般都是ph 7~7.4,当然你也可以加完以后用propka进行预测,根据电荷判断,但是仍然无法保证蛋白就是你想要的质子化状态。

途径2:pdb2pqr

这里介绍一下另一个命令行工具pdb2pqr,这也是地位极高、神一样存在的脚本。他会把pdb文件变成pqr。pqr其实是pdbqr,也是在pdb的基础上加东西,这次加的两列是charge (Q)和radius (R)。

pdb2pqr30 --ff=AMBER --with-ph=7.0 3npo_nowater.pdb 3npo_ph7.0.pqr

使用pdb2pqr推测ph7.0时质子化情况

这个命令行工具非常厉害,采用了propka算法,滴定计算pH环境,完全不是盲目用静态规则猜的。随后还会快速的进行几何优化,保证蛋白质H-bond网络总能量最低。但是对于autodock来说有点大材小用,如果你不需要确保ph或者reduce本身ph没问题的话。

如果你像我一样使用的是pdb2pqr,那么非常可惜非常可惜,pdb2pqr提供了q的信息并且还有算出来的r的信息,但是meeko不支持它作为输入,我们只能先丢掉这些信息 – 但是此时H已经被按照pH加上并且结构进行了一定程度的优化,所以也没白做。我们要把它转化成pdb再进行下一步

obabel 3npo_ph7.0.pqr -O 3npo_charged.pdb

转换成pdb格式,便于meeko处理

3 meeko prepare receptor

到这一步,不管你用的什么途径,都会得到3npo_charged.pdb. 下面直接使用mk prepare即可

mk_prepare_receptor.py --read_pdb 3npo_charged.pdb -o receptor -p

使用meeko直接prepare

有时候情况比较特殊我们需要注意一下二硫键, 整体的sh如下:

# 去掉水分子!
prody fetch 3npo
prody select "chain A and not water and not hetero" 3npo.pdb -o 3NPO_A.pdb
# ================= 如果有构象 ====================
# 1. 剔除所有带有 'B' 构象前缀的残基行 (如 BMET, BLEU, BGLU, BILE, BSER, BLYS)
grep -v -E "BMET|BLEU|BGLU|BILE|BSER|BLYS" 3NPO_A.pdb > 3NPO_cleaned.pdb
# 2. 将所有 'A' 构象前缀的残基名字改回标准的三字母缩写 (如 AMET ->  MET)
# 注意:前缀带有空格,用来保持 PDB 的严格列宽对齐
sed -i -E 's/AMET/ MET/g; s/ALEU/ LEU/g; s/AGLU/ GLU/g; s/AILE/ ILE/g; s/ASER/ SER/g; s/ALYS/ LYS/g' 3NPO_cleaned.pdb
# ========================================================
# mk prepare啦!确保这里double sulfur bond的template!
mk_prepare_receptor.py -i 3NPO_cleaned.pdb -o 3NPO -p -j -g --box_enveloping 3NPO_cleaned.pdb --padding 1 --set_template A:66,106,119,160=CYX
# 如果加柔性,加上下面的
# --flexres "A_ASN109,A_ASN90,A_MET107,A_LEU39,A_SER116"

这样我们就得到了receptor.pdbqt用于后续分析。

下一步?

你都拿到两个pdbqt啦!!直接写config file用vina dock就行!

Read more

GroMacs 跑起来!

开始之前感谢一下Justin A. Lemkul, Ph.D.教授的GROMACS Tutorials。现在已经几乎成为新手必学行业标准了。强烈推荐可以去上他的课。这篇blog是我根据他的教程总结出来,并加上了自动化的部分,让一切更加方便! 我们会采用3NPO pdb file 和一个autodock vina对接后的pdbqt文件开始。你可以从下面下载他们,但也可以参考我之前的教程一步一步拿到自己的pdbqt flie: 3NPO3NPO.pdb143 KBdownload-circleKaempferol_dockingKaempferol_docking.pdbqt53 KBdownload-circle 一、准备pdb file 你会发现autodock vina dock之后的pdbqt里面有多个构象,他们都被MODEL分割。如下图: 所以我们处理的第一步就是分割,把这个含有多个model的变成单独的一个model。利用下面几行sh就可以轻松拿到第一个构象。当然,也可以直接用手复制粘贴出来。不过可能使用vina的vina_split会更可靠一些 vina_spl

By Blake Jia
Autodock vina对接!

Autodock vina对接!

相信你已经准备好了两个pdbqt,如果没有可以去看我准备pdbqt的那个blog。如果你想要直接下载,请下载: KaempferolKaempferol.pdbqt2 KBdownload-circle3NPO3NPO.pdbqt122 KBdownload-circle 这个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) # 这一部分要看蛋白质的状态! ce

By Blake Jia
Autodock vina自动化运行

Autodock vina自动化运行

autodock vina 现在还是比较常用了,虽说config file之类的还是比较直观易懂的,但是一般来说我们做一个东西都要同时dock很多个ligand。下面就是我常用的autodock vina自动化运行脚本。 * 自动化批量对接(Batch Docking): 自动扫描指定目录下的所有配体文件(.pdbqt),并逐个与受体(Receptor)进行对接。 * 智能参数记忆(State Persistence): 首次输入参数后,脚本会自动将其缓存到隐藏文件 .dockenv 中。下次运行时直接回车即可跳过输入,极大提升复用效率。 * 动态生成配置与日志(Auto-Logging): 自动为每个配体生成专属的 config.txt 配置文件,并实时保存带有时间戳的详细运行日志(.out)。 * 重名防覆盖保护(File Protection): 如果输出目录已存在同名对接结果,脚本会自动给新文件加上序号(如 _1, _2),防止实验数据被意外覆盖。 用户输入内容: 序号允许用户输入的内容 (Input)默认值 (Default)说明 (Notes)1

By Blake Jia