Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
Jupyter_Dock | 骨架对接
化学信息学
Jupyter_Dock
分子对接
化学信息学Jupyter_Dock分子对接
liyq@dp.tech
发布于 2023-06-15
2
AI4SCUP-CNS-BBB(v1)

🏃🏻 快速开始
您可以直接在 Bohrium Notebook 上执行此文档。首先,请点击位于界面顶部的 开始连接 按钮,然后选择 ubuntu:22.04-py3.10 镜像并选择合适的的机器配置,稍等片刻即可开始运行。

📖 来源
本 Notebook 来自 https://github.com/AngelRuizMoreno/Jupyter_Dock,由李亚奇 📨 修改搬运至 Bohrium Notebook。

代码
文本

🎯 本教程旨在快速掌握 Jupyter Dock 的用法:使用 Smina 和Ledock 进行药效团对接。

  • 一键运行,你可以快速在实践中检验你的想法。

  • 丰富完善的注释,对于入门者友好。

代码
文本

那么就让我们开始吧

代码
文本

首先,我们将配置运行环境,并下载所需要的文件以及赋予相关软件可执行权限

代码
文本
[ ]
!mamba install -c conda-forge pymol-open-source py3dmol openbabel pdbfixer vina rdkit cython -y --quiet
代码
文本
[ ]
!apt-get update && apt-get upgrade -y && apt-get install libgl1-mesa-glx -y
代码
文本
[ ]
!pip install git+https://github.com/chemosim-lab/ProLIF.git && pip install meeko
代码
文本
[1]
!git clone https://github.com/AngelRuizMoreno/Jupyter_Dock
Cloning into 'Jupyter_Dock'...
remote: Enumerating objects: 2177, done.
remote: Counting objects: 100% (57/57), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 2177 (delta 39), reused 30 (delta 28), pack-reused 2120
Receiving objects: 100% (2177/2177), 30.84 MiB | 2.21 MiB/s, done.
Resolving deltas: 100% (1664/1664), done.
Updating files: 100% (596/596), done.
代码
文本
[2]
!wget http://www.lephar.com/download/ledock_linux_x86 -O ./Jupyter_Dock/bin/ledock_linux_x86
--2023-06-15 08:42:22--  http://www.lephar.com/download/ledock_linux_x86
Resolving ga.dp.tech (ga.dp.tech)... 10.255.255.41
Connecting to ga.dp.tech (ga.dp.tech)|10.255.255.41|:8118... connected.
Proxy request sent, awaiting response... 200 OK
Length: 362677 (354K) [application/octet-stream]
Saving to: ‘./Jupyter_Dock/bin/ledock_linux_x86’

./Jupyter_Dock/bin/ 100%[===================>] 354.18K   204KB/s    in 1.7s    

2023-06-15 08:42:24 (204 KB/s) - ‘./Jupyter_Dock/bin/ledock_linux_x86’ saved [362677/362677]

代码
文本
[3]
!wget http://www.lephar.com/download/lepro_linux_x86 -O ./Jupyter_Dock/bin/lepro_linux_x86
--2023-06-15 08:42:25--  http://www.lephar.com/download/lepro_linux_x86
Resolving ga.dp.tech (ga.dp.tech)... 10.255.255.41
Connecting to ga.dp.tech (ga.dp.tech)|10.255.255.41|:8118... connected.
Proxy request sent, awaiting response... 200 OK
Length: 393683 (384K) [application/octet-stream]
Saving to: ‘./Jupyter_Dock/bin/lepro_linux_x86’

./Jupyter_Dock/bin/ 100%[===================>] 384.46K   240KB/s    in 1.6s    

2023-06-15 08:42:28 (240 KB/s) - ‘./Jupyter_Dock/bin/lepro_linux_x86’ saved [393683/393683]

代码
文本
[4]
!chmod +x -R ./Jupyter_Dock/bin
代码
文本

导入所需环境

代码
文本
[5]
from pymol import cmd
from rdkit import Chem
import py3Dmol

from openbabel import pybel

import sys, os, random
sys.path.insert(1, 'utilities/')

from Jupyter_Dock.utilities.utils import get_inplace_rmsd, get_scaffold_based_conformers

import warnings
warnings.filterwarnings("ignore")

%config Completer.use_jedi = False
代码
文本
[6]
os.chdir('Jupyter_Dock/test/Scaffold_based_Docking/')
代码
文本

使用pymol cmd 下载所需要的体系PDB文件

代码
文本
[13]
cmd.fetch(code='1B38',type='pdb1')
cmd.select(name='Prot',selection='polymer.protein')
cmd.select(name='ATP',selection='resn ATP')
cmd.save(filename='1B38_clean.pdb',format='pdb',selection='Prot')
cmd.save(filename='1B38_ATP.sdf',format='sdf',selection='ATP')
cmd.delete('all')
代码
文本

可视化检查下载结果

代码
文本
[14]
view = py3Dmol.view()
view.removeAllModels()
view.setViewStyle({'style':'outline','color':'black','width':0.1})

view.addModel(open('1B38_clean.pdb','r').read(),format='pdb')
Prot=view.getModel()
Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})
view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})

view.addModel(open('1B38_ATP.sdf','r').read(),format='sdf')
ref_m = view.getModel()
ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.2}})

view.zoomTo()
view.show()
代码
文本

配体预处理

代码
文本
[15]
mol= [m for m in pybel.readfile(filename='1B38_ATP.sdf',format='sdf')][0]
mol.addh()
out=pybel.Outputfile(filename='1B38_ATP_H.sdf',format='sdf',overwrite=True)
out.write(mol)
out.close()
代码
文本
[21]
ATP=Chem.SDMolSupplier('1B38_ATP_H.sdf',False)[0]
ade_map=ATP.GetSubstructMatch(Chem.MolFromSmarts('[#7]-[#6]-1=[#6]-2-[#7]=[#6]-[#7]-[#6]-2=[#7]-[#6]=[#7]-1'))
scaffold=Chem.EditableMol(ATP)
scaffold_out=Chem.SDWriter('Adenine.sdf')
for atom in reversed(ATP.GetAtoms()):
if atom.GetIdx() not in ade_map:
scaffold.RemoveAtom(atom.GetIdx())
s=scaffold.GetMol()
scaffold_out.write(s)
scaffold_out.close()
s
代码
文本
[22]
Apropovir=Chem.MolFromSmiles('CC(CN1C=NC2=C(N=CN=C21)N)OCP(=O)(O)O')
Apropovir
代码
文本
[23]
get_scaffold_based_conformers(smiles='CC(CN1C=NC2=C(N=CN=C21)N)OCP(=O)(O)O',anchor='Adenine.sdf',num_confs=200,rmsd_threshold=0.75,output='Confs.sdf')
代码
文本

骨架对齐结果的 3D 展示

代码
文本
[24]
view = py3Dmol.view()
view.removeAllModels()
view.setViewStyle({'style':'outline','color':'black','width':0.1})

confs=Chem.SDMolSupplier('Confs.sdf')
for c in list(confs):
c_1=Chem.MolToMolBlock(c)
view.addModel(c_1,'mol')
z= view.getModel()
z.setStyle({},{'stick':{'colorCarbon':'gray','radius':0.1,'opacity':1}})

view.zoomTo()
view.show()
代码
文本

使用 Lepro 进行受体处理

代码
文本
[26]
!../../bin/lepro_linux_x86 1B38_clean.pdb

os.rename('pro.pdb','1B38_clean_H.pdb')
代码
文本

使用 smina 对配体进行打分

代码
文本
[27]
!../../bin/smina -r {'1B38_clean_H.pdb'} -l {'Confs.sdf'} -o {'Smina.sdf'} --minimize >> {'smina.log'}

candidates=Chem.SDWriter('Cans.sdf')
results=Chem.SDMolSupplier('Smina.sdf')
scaffold=Chem.SDMolSupplier('Adenine.sdf')[0]
for res in results:
rmsd= get_inplace_rmsd (scaffold,res)
if rmsd <= 1 and float(res.GetProp('minimizedAffinity')) < 0:
res.SetProp('RMSDvsScaffold',str(rmsd))
candidates.write(res)
candidates.close()
代码
文本

打分结果的 3D 展示

代码
文本
[28]
view = py3Dmol.view()
view.removeAllModels()
view.setViewStyle({'style':'outline','color':'black','width':0.1})

view.addModel(open('1B38_clean.pdb','r').read(),format='pdb')
Prot=view.getModel()
Prot.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}})
view.addSurface(py3Dmol.VDW,{'opacity':0.6,'color':'white'})

view.addModel(open('1B38_ATP.sdf','r').read(),format='sdf')
ref_m = view.getModel()
ref_m.setStyle({},{'stick':{'colorscheme':'greenCarbon','radius':0.2}})

confs=Chem.SDMolSupplier('Cans.sdf')
for c in list(confs)[:10]:
c_1=Chem.MolToMolBlock(c)
print(c.GetProp('_Name'),'Score: {} | RMSD vs Scaffold: {}'.format(c.GetProp('minimizedAffinity'),c.GetProp('RMSDvsScaffold')))
view.addModel(c_1,'mol')
z= view.getModel()
z.setStyle({},{'stick':{'colorCarbon':'gray','radius':0.1,'opacity':1}})

view.zoomTo()
view.show()
 Score: -0.07111 | RMSD vs Scaffold: 0.7638085165799083
 Score: -5.71039 | RMSD vs Scaffold: 0.5227661054429604
 Score: -5.83819 | RMSD vs Scaffold: 0.38256257527364096
 Score: -5.09564 | RMSD vs Scaffold: 0.6511503413191146
 Score: -5.74657 | RMSD vs Scaffold: 0.8141302186996873
 Score: -5.22347 | RMSD vs Scaffold: 0.6442026730773478
 Score: -6.29610 | RMSD vs Scaffold: 0.3712376570338742
 Score: -6.22478 | RMSD vs Scaffold: 0.4242543494178937
 Score: -6.32058 | RMSD vs Scaffold: 0.4232643866426752
 Score: -6.24476 | RMSD vs Scaffold: 0.37265014155371
代码
文本

参考

  1. https://github.com/AngelRuizMoreno/Jupyter_Dock

如果你使用这个notebook中的工具,记得引用相关文献

1. Jupyter Dock

Ruiz-Moreno A.J. Jupyter Dock: Molecular Docking integrated in Jupyter Notebooks. https://doi.org/10.5281/zenodo.5514956

2. Autodock Vina

Eberhardt, J., Santos-Martins, D., Tillack, A.F., Forli, S. (2021). AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings. Journal of Chemical Information and Modeling.

Trott, O., & Olson, A. J. (2010). AutoDock Vina: improving the speed and accuracy of docking with a new scoring function, efficient optimization, and multithreading. Journal of computational chemistry, 31(2), 455-461.

3. LeDock

Wang Z, Sun H, Yao X, Li D, Xu L, Li Y, et al. Comprehensive evaluation of ten docking programs on a diverse set of protein–ligand complexes: the prediction accuracy of sampling power and scoring power. Phys Chem Chem Phys. 2016;18: 12964–12975. https://doi.org/10.1039/C6CP01555G.

4. AutoDock Tools

Morris, G. M., Huey, R., Lindstrom, W., Sanner, M. F., Belew, R. K., Goodsell, D. S., & Olson, A. J. (2009). AutoDock4 and AutoDockTools4: Automated docking with selective receptor flexibility. Journal of computational chemistry, 30(16), 2785–2791. https://doi.org/10.1002/jcc.21256.

5. Pymol API

The PyMOL Molecular Graphics System, Version 1.2r3pre, Schrödinger, LLC.

6. OpenBabel

O'Boyle, N.M., Banck, M., James, C.A. et al. Open Babel: An open chemical toolbox. J Cheminform 3, 33 (2011). https://doi.org/10.1186/1758-2946-3-33.

7. RDKit

RDKit: Open-source cheminformatics; http://www.rdkit.org

8. py3Dmol

Keshavan Seshadri, Peng Liu, and David Ryan Koes. Journal of Chemical Education 2020 97 (10), 3872-3876. https://doi.org/10.1021/acs.jchemed.0c00579.

9. PDBFixer

P. Eastman, M. S. Friedrichs, J. D. Chodera, R. J. Radmer, C. M. Bruns, J. P. Ku, K. A. Beauchamp, T. J. Lane, L.-P. Wang, D. Shukla, T. Tye, M. Houston, T. Stich, C. Klein, M. R. Shirts, and V. S. Pande. 2013. OpenMM 4: A Reusable, Extensible, Hardware Independent Library for High Performance Molecular Simulation. Journal of Chemical Theory and Computation. ACS Publications. 9(1): 461-469.

10. MDAnalysis

R. J. Gowers, M. Linke, J. Barnoud, T. J. E. Reddy, M. N. Melo, S. L. Seyler, D. L. Dotson, J. Domanski, S. Buchoux, I. M. Kenney, and O. Beckstein. MDAnalysis: A Python package for the rapid analysis of molecular dynamics simulations. In S. Benthall and S. Rostrup, editors, Proceedings of the 15th Python in Science Conference, pages 98-105, Austin, TX, 2016. SciPy, doi:10.25080/majora-629e541a-00e.

N. Michaud-Agrawal, E. J. Denning, T. B. Woolf, and O. Beckstein. MDAnalysis: A Toolkit for the Analysis of Molecular Dynamics Simulations. J. Comput. Chem. 32 (2011), 2319-2327, doi:10.1002/jcc.21787. PMCID:PMC3144279.

11. ProLif

chemosim-lab/ProLIF: v0.3.3 - 2021-06-11.https://doi.org/10.5281/zenodo.4386984.

12. Fpocket

Le Guilloux, V., Schmidtke, P. & Tuffery, P. Fpocket: An open source platform for ligand pocket detection. BMC Bioinformatics 10, 168 (2009). https://doi.org/10.1186/1471-2105-10-168.

13. Smina

Koes, D. R., Baumgartner, M. P., & Camacho, C. J. (2013). Lessons learned in empirical scoring with smina from the CSAR 2011 benchmarking exercise. Journal of chemical information and modeling, 53(8), 1893–1904. https://doi.org/10.1021/ci300604z
代码
文本
化学信息学
Jupyter_Dock
分子对接
化学信息学Jupyter_Dock分子对接
点个赞吧
推荐阅读
公开
Jupyter_Dock | 反向对接
化学信息学Jupyter_Dock分子对接
化学信息学Jupyter_Dock分子对接
liyq@dp.tech
发布于 2023-06-15
3 转存文件
公开
Jupyter_Dock | 对接结果分析
化学信息学Jupyter_Dock分子对接数据分析
化学信息学Jupyter_Dock分子对接数据分析
liyq@dp.tech
发布于 2023-06-15
3 转存文件