感谢大家的支持,今天我们来到本期课程的最后一节,为了更好地了解我们的配体如何与蛋白质结合,比如配体如何与蛋白质残基相互作用,包括它是否形成氢键、范德华相互作用等。我们今天将使用代码制作配体与蛋白质残基接触的二维图。
我们将使用一个名为 ProLIF 的库进行此分析。ProLIF 是“Protein-Ligand Interaction Fingerprints”的缩写,它是一种旨在为从分子动力学轨迹、对接模拟和实验结构中提取的配体、蛋白质、DNA 或 RNA 分子组成的复合物生成相互作用指纹的工具。
在使用 ProLIF 之前,我们首先必须确保我们的配体和蛋白质文件已正确准备。大多数 PDB 文件中都不存在氢,因为它们无法通过 X 射线晶体学等方法很好地解析。我们需要将它们重新添加,以完成对结合位点的分析。
因为这节课还是基于上一节课的内容进行的拓展,所以各位小伙伴还是在上节课的 Notebook 中进行操作。我们将首先从 MDAnalysis 保存我们选择的新 PDB。然后,我们将添加氢。
protein.write(f"pdb/protein_2zq2.pdb")ligand_A.write(f"pdb/ligand_A.pdb")
输入这两行代码后,可以在文件夹中看到两个新的文件:一个是 “ligand_A.pdb” 和 “protein_2zq2.pdb”。
有了结构文件之后,我们需要确保我们的蛋白质和配体具有氢原子。我们将首先对蛋白质进行此操作。
我们将使用一个名为 PDB2PQR 的专门程序,该程序专门用于处理蛋白质等生物分子。使用 PDB2PQR 的优势在于它将检查我们的蛋白质中是否存在缺失原子和蛋白质中的多重占用。
普通安装
! pip install pdb2pqr然后我们可以直接通过程序的命令进行使用,(这里需要解释一下,比如我们之前使用 pip 安装等在命令之前都有一个“!”,一般像程序的使用一般都在终端中,所以我们在使用 pdb2pqr 的时候也可以通过这个方式)。
! pdb2pqr --pdb-output=pdb/protein_h.pdb --pH=7.4 pdb/protein_2zq2.pdb protein.pqr
这行命令的作用是在pH值7.4的条件下,使用 PDB2PQR 工具对蛋白质文件 pdb/protein_2zq2.pdb 进行质子化处理,生成新的PDB文件 pdb/protein_h.pdb,并同时生成一个包含原子电荷和半径的PQR文件 protein.pqr,用于进一步计算。大家可以看到已经在文件夹中生成了新的文件。
我们需要定义一下蛋白
protein = mda.Universe("pdb/protein_h.pdb")接下来为配体添加氢原子稍微困难一些。我们不能只使用 PDB2PQR。因为配体可能没有键长,因此无法始终识别正确的键序。我们将使用下载的理想配体作为参考,这时候我们需要在 PDB 数据库中下载(https://www.rcsb.org/ligand/13U)点击 Download Files 中选择 Structure Data File (Ideal SDF)进行下载,然后保存到现在工作的文件夹。

接下来我们需要使用名为 RDKit 的库来匹配键序并添加氢原子。RDKit 是一个用于化学信息学和药物化学的开源工具包。它提供了一系列功能来处理化学结构、分子信息和相关计算,特别是在药物研发和化学信息学领域非常有用。
因为 RDKit 安装比较慢,所以我们使用镜像。
! pip install rdkit -i https://pypi.tuna.tsinghua.edu.cn/simple安装好之后,我们进行配体的氢原子添加
from rdkit import Chemfrom rdkit.Chem.AllChem import AssignBondOrdersFromTemplate# 使用SDF文件读取templatetemplate = Chem.MolFromMolFile("pdb/13U_ideal.sdf")pdb_ligand = Chem.MolFromPDBFile(f"pdb/ligand_A.pdb")# 去除所有氢template = Chem.RemoveAllHs(template)# 根据template分配键阶ligand = AssignBondOrdersFromTemplate(template, pdb_ligand)# 将结果写入SDF文件Chem.MolToMolFile(ligand, "pdb/ligand.sdf")
这时会提示:
WARNING: More than one matching pattern found - picking one现在,我们需要确保该结构含有氢原子以供分析。需要安装一个 OpenBabel,OpenBabel 是一个开源的化学工具箱,旨在处理各种化学数据格式,并执行多种化学信息学任务。它在计算化学、分子建模和药物设计中广泛应用。
然而 OpenBabel 并不是非常容易安装,我们按照常规的安装它会出现报错。OpenBabel 的安装方式有两种,一种是从官方地址获取最新版本的源码进行手动编译安装,另一种是基于Conda的自动化安装,但是后者的版本会比手动编译安装的版本更低一些。我们可以尝试使用conda进行安装。
我们可以通过安装核心 OpenBabel 包及其 Python 绑定,是最简便的解决方案。
conda install -c openbabel openbabel
安装好之后,我们输入
from openbabel import pybel# # 使用 pybel 读取 SDF,添加氢原子,并保存为 PDBmol = next(pybel.readfile("sdf", "pdb/ligand.sdf"))mol.addh() # 添加氢原子mol.write("pdb", "pdb/ligand_h.pdb", overwrite=True)
运行后可以看到在pdb的文件夹中多了一个 ligand_h 文件,至此,我们已经准备好了包含氢的蛋白文件和配体文件,可以绘制结合位点的图了。
快速安装绘图包 prolif
import sys!{sys.executable} -m pip install prolif -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完毕后,我们输入以下代码进入最后一步:
import prolif as plfimport MDAnalysis as mda# 加载蛋白质和配体的PDB文件,创建MDAnalysis的 Universe 对象protein_h = mda.Universe("pdb/protein_h_1.pdb")ligand_h = mda.Universe("pdb/ligand_h_1.pdb")# 使用prolif库的from_mda函数,将MDAnalysis的 Universe 对象转换为 RDKit 分子对象protein_mol = plf.Molecule.from_mda(protein_h)ligand_mol = plf.Molecule.from_mda(ligand_h)# 创建一个 Fingerprint 对象,用于检测蛋白质和配体之间的相互作用fp = plf.Fingerprint()# 创建一个包含配体分子的列表lig_list = [ligand_mol]# 使用 Fingerprint 的 run_from_iterable 方法,计算配体和蛋白质之间的相互作用interactions = fp.run_from_iterable(lig_list, protein_mol)# 使用 prolif 的 plot_lignetwork 方法,绘制配体与蛋白质的相互作用网络图html_network = fp.plot_lignetwork(lig_list[0])# 将生成的 HTML 内容保存为文件with open("interaction_network_interactive.html", "w") as file:file.write(html_network.data)# 打开生成的 HTML 文件import webbrowserwebbrowser.open("interaction_network_interactive.html")
然后大家就可以看到一个HTML的文件,现在可以通过网页来查看蛋白与配体的相互作用吧!

后续我们会有其他的培训课程,也希望大家多多咨询。
计算机药物设计绪论(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