大家好,今天小亚老师为大家介绍如何进行对接计算。今天的目的是要研究结合口袋以及配体与蛋白质残基的相互作用,我们选取胰蛋白酶(PDB_ID:2ZQ2),与其结合的配体是 13U。
首先,我们需要下载我们的蛋白质结构。也就是 2ZQ2,这是一个结合了我们感兴趣的配体的胰蛋白酶结构。我们将使用 Python 的请求模块和来自蛋白质数据库的 URL。
import osimport requestsos.makedirs("pdb", exist_ok=True)pdb_id = "2zq2"pdb_request = requests.get(f"https://files.rcsb.org/download/{pdb_id}.pdb")pdb_request.status_codewith open(f"pdb/{pdb_id}.pdb", "w+") as f:f.write(pdb_request.text)
当运行结束之后,我们可以在文件夹中找到一个 pdb 的文件夹,里面有 2zq2 的PDB文件。
在我们开始真正研究分子之前,让我们先研究一下结构。我们将使用一个名为 MDAnalysis 的库来首先处理我们的 PDB,然后使用一个名为 NGLView 的库对其进行可视化。
还是按照之前经验,我们需要安装 MDAnalysis 库与 NGLView 库。
import sys!{sys.executable} -m pip install MDAnalysis
MDAnalysis 需要安装一会儿,安装好之后再安装 nglview。
import sys!{sys.executable} -m pip install nglview
如果特别慢,可以考虑添加镜像:-i https://pypi.tuna.tsinghua.edu.cn/simple
为了更好的将 nglview 与 MDAnalysis 结合使用,我们可以定义一些便利函数。这些代码用于可视化蛋白质和配体之间的结合部位,并提供旋转功能来调整视角。
import mathdef rotate_view(view, x=0, y=0, z=0, degrees=True):radians = 1if degrees: radians = math.pi / 180view.control.spin([1, 0, 0], x*radians)view.control.spin([0, 1, 0], y*radians)view.control.spin([0, 0, 1], z*radians)def view_binding_site(protein, ligand):view = nv.show_mdanalysis(protein)view.clear_representations()view.add_representation("surface", colorScheme="hydrophobicity")lig_view = view.add_component(ligand)lig_view.center()rotate_view(view, y=180, x=20)return view
MDAnalysis 是一种用于处理分子动力学轨迹和其他分子结构的流行工具。MDAnalysis 中的核心对象称为“Universe”。在 MDAnalysis 术语中,Universe 代表一个分子系统。我们可以从 PDB 文件中加载 MDAnalysis Universe。
import MDAnalysis as mdaimport nglview as nvpdb_id = "2zq2"u = mda.Universe(f"pdb/{pdb_id}.pdb")view = nv.show_mdanalysis(u)view

这个视图看起来有点混乱。MDAnalysis 具有人性化的选择语法,可让我们隔离结构的各个部分。我们将采用 MDAnalysis Universe(变量 u)并使用 select_atoms 函数。在这个函数中,我们可以填写我们想要选择的内容。比如我们可以将为蛋白质和配体创建单独的变量。我们可以使用 select_atoms 函数中的单词“protein”选择 MDAnalysis 中的所有蛋白质残基。然后,我们将使用 “resname 13U” 选择我们的配体。
protein = u.select_atoms("protein")ligand = u.select_atoms("resname 13U")
通过定义的辅助函数,我们可以更方便来查看配体如何与蛋白质结合。
汇总一下:
import MDAnalysis as mdaimport nglview as nvimport math# 定义旋转视图函数def rotate_view(view, x=0, y=0, z=0, degrees=True):radians = 1if degrees:radians = math.pi / 180view.control.spin([1, 0, 0], x*radians) # 绕X轴旋转view.control.spin([0, 1, 0], y*radians) # 绕Y轴旋转view.control.spin([0, 0, 1], z*radians) # 绕Z轴旋转# 定义展示结合位点的函数def view_binding_site(protein, ligand):view = nv.show_mdanalysis(protein)view.clear_representations() # 清除现有的表示view.add_representation("surface", colorScheme="hydrophobicity") # 为蛋白质添加疏水性表面表示lig_view = view.add_component(ligand) # 将配体添加为一个组件lig_view.center() # 使配体居中rotate_view(view, y=180, x=20) # 旋转视图return view# 加载PDB文件并选择蛋白质和配体pdb_id = "2zq2"u = mda.Universe(f"pdb/{pdb_id}.pdb")protein = u.select_atoms("protein")ligand = u.select_atoms("resname 13U")# 显示蛋白质和配体的结合位点view = view_binding_site(protein, ligand)view
.webp)
查看此结构时,有意思的是我们的配体出现了两次。

如果通过右键使用记事本打开 PDB 文件进行调查,您会在配体部分看到以下内容:
HETATM 1673 C14A13U A 501 18.144 -9.216 12.088 0.61 24.22 C
ANISOU 1673 C14A13U A 501 1755 4793 2654 1752 148 1233 C
HETATM 1674 C14B13U A 501 18.147 -8.840 11.672 0.39 24.46 C
ANISOU 1674 C14B13U A 501 2583 4283 2430 1765 353 1279 C
HETATM 1675 O32A13U A 501 18.209 -8.355 11.186 0.61 24.38 O
ANISOU 1675 O32A13U A 501 2354 5394 1514 2217 238 919 O
这个 PDB 结构为每个配体原子提供了替代位置。在上面的信息中,我们看到 C14A13U 和 C14B13U。这些是同一原子的替代位置。我们可以使用 altloc 关键字,来分离我们感兴趣的配体。
protein = u.select_atoms("protein")ligand_A = u.select_atoms("resname 13U and altLoc A")ligand_B = u.select_atoms("resname 13U and altLoc B”)


当我们检查结合位点的配体时,我们注意到一些事情。首先,结合位点表面有一大片疏水区域。如果你放大结合位点,你还会看到里面有苯环和胺基。那么下一节课,小亚老师将带大家进行绘制配体接触图的学习。
课程至此已接近尾声,大家可以看到我们目前所使用的工具还是主要基于最基础的代码来实现,因为本期免费的Python数据分析与脚本编写课程的目的是希望能培养各位小伙伴的“代码感”。当然,我们还有针对药物研发的课程,也欢迎各位感兴趣的小伙伴进行询问。
课程内容包含:
计算机药物设计绪论(Introduction to Computer-Assisted Drug Design)
分子力学基本原理(Molecular Mechanics)
分子动力学模拟 (Molecular Dynamics Simulation)
定量构效关系(Quantitative Structure-Activity Relationships)(QSAR)
基于人工智能的药物设计(Artificial Intelligence-based Drug Design)
基于结构的药物设计 (Structure‐based drug design) (SBDD)
基于片段的药物设计(Fragment‐based drug design)(FBDD)
基于配体的药物设计(Ligand‐based drug design, LBDD)
虚拟筛选 (Virtual Screening, VS)
量子力学 (Quantum Mechanics, QM)



沪公网安备 31011002003500