Rdkit|分子3D构象生成与优化

这篇具有很好参考价值的文章主要介绍了Rdkit|分子3D构象生成与优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习
github; 地址

Rdkit|分子3D构象生成与优化

RDKit是一款非常强大的分子信息学工具包,其中包含了分子3D构象生成与优化的功能。通过RDKit,您可以将一个分子的2D结构转化为3D结构,并进行能量最小化优化,得到最稳定的构象。

构象生成算法概述

  • 基于距离(distance-based)
  • 基于知识(knowledge-based)

下面是基本代码逻辑

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import AllChem

# 读入分子SMILES字符串
mol = Chem.MolFromSmiles('CC(=O)OC1=CC=CC=C1C(=O)O')

# 生成初始3D构象
AllChem.EmbedMolecule(mol)

# 进行能量最小化优化
AllChem.MMFFOptimizeMolecule(mol)

# 输出优化后的3D结构
print(Chem.MolToMolBlock(mol))

基于距离(distance-based)

传统的距离几何(Distance Geometry)法生成构象步骤:

  • (1) 通过分子的连接表信息和一套规则,生成分子的连接边界矩阵(molecule’s distance bounds matrix )
  • (2) 使用三角形边界平滑算法(triangle-bounds smoothing algorithm),对边界矩阵进行平滑处理
  • (3) 根据边界矩阵,随机产生一个距离矩阵。
  • (4) 把产生的距离矩阵映射到三维空间中,并为每个原子计算坐标。
  • (5) 对计算的坐标结果使用力场和边界矩阵进行粗略的优化。

这种方法虽然计算速度快,也能得到分子的三维坐标,但纯粹基于距离计算会导致部分结构的扭曲,也就是结果比较丑。想得到更好的结构,需要进行更细致的力场优化,比如再使用rdkit的通用力场(Universal Force Field,UFF)进行处理。

代码示例

mol = Chem.MolFromSmiles('CC1=CC=C(C=C1)NC2=C3C(=C(C=C2)NC4=CC=C(C=C4)C)C(=O)C5=CC=CC=C5C3=O')
m3d = Chem.AddHs(mol)
print(mol.GetNumAtoms(), m3d.GetNumAtoms())

距离几何算法生成3D结构

使用距离几何算法初始化3D坐标。

生成3D构象:AllChem.EmbedMolecule(mol, randomSeed, clearConfs, useExpTorsionAnglePrefs, useBasicKnowledge, …)

  • mol:传入mol对象
  • randomSeed:随机种子,方便结果重复
  • clearConfs:清除已有构象,默认True
  • useExpTorsionAnglePrefs和useBasicKnowledge两个参数即控制是否使用ETKDG,默认都为True
AllChem.EmbedMolecule(m3d, randomSeed=10, useExpTorsionAnglePrefs=False, useBasicKnowledge=False)
Draw.MolToImage(m3d, size=(250,250))

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习

距离几何+ETKDG生成3D构象

生成3D构象:AllChem.EmbedMolecule()
先用距离几何初始化3D坐标,再使用ETKDG算法优化
参数同上,默认useExpTorsionAnglePrefsuseBasicKnowledge为True

AllChem.EmbedMolecule(m3d, randomSeed=10)
Draw.MolToImage(m3d, size=(250,250))

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习

距离几何+ETKDG生成多构象

生成多个构象:AllChem.EmbedMultipleConfs(mol, numConfs, maxAttempts, randomSeed, clearConfs, pruneRmsThresh, useExpTorsionAnglePrefs, useBasicKnowledge, …)

其中numConfs控制了生成构象的个数。

  • mol:mol对象
  • numConfs:生成的构象数量
  • maxAttempts:尝试生成构象的最多次数
  • randomSeed:随机种子
  • clearConfs:清除已有构象
  • pruneRmsThresh:根据RMS进行合并
  • ETKDG相关参数同上
cids = AllChem.EmbedMultipleConfs(m3d, numConfs=10)
print(len(cids))

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习
获取某个构象GetConformer(id)
通过传入id获取指定构象

# 获取第n个构象
conformer = m3d.GetConformer(id=6)

# 将Conformer对象添加到Mol对象中
m3d.AddConformer(conformer)

将Conformer类转为Mol类

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习

from rdkit import Chem

# 创建一个rdkit.Chem.rdchem.Mol对象
mol = Chem.MolFromSmiles('CCOCC')

# 创建一个新的rdkit.Chem.rdchem.Mol对象,通过复制已有的Mol对象
new_mol = Chem.Mol(mol)

# 创建一个新的rdkit.Chem.rdchem.Conformer对象
conformer = Chem.Conformer()

AllChem.EmbedMolecule(mol, randomSeed=1)

# 设置Conformer对象的原子坐标
for atom_idx in range(mol.GetNumAtoms()):
    position = mol.GetConformer().GetAtomPosition(atom_idx)
    conformer.SetAtomPosition(atom_idx, position)

# 将Conformer对象添加到新的Mol对象中
new_mol.AddConformer(conformer)


计算不同构象间的差异:AlignMolConformers(mol, RMSlist, …)

对同一分子不同的构象先进行重叠排列,再计算RMS(root mean square)值
RMSlist:用于接收RMS的列表,它由第一个构象与剩余9个构象依次比对产生。

rmslist = []

AllChem.AlignMolConformers(m3d, RMSlist=rmslist)

print(len(rmslist))
rmslist

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习
也可以计算任意两个指定构象的RMS值GetConformerRMS(mol, confId1, confId2, atomIds, prealigned)

  • confId1:第一个构象
  • confId2:第二个构象
  • atomIds:需要对比的原子,默认全部
  • prealigned:构象是否已经对齐,默认False(没有时,函数会自动将它们对齐)
AllChem.GetConformerRMS(m3d, 1, 9, prealigned=True)

手动对齐

也可以使用AllChem.AlignMol()方法。这个方法需要两个参数,即待对齐的两个分子。

注意,AlignMol()方法会修改第二个分子的坐标,将其与第一个分子对齐。如果您想保留原来的分子,可以先复制一份再进行对齐。

from rdkit import Chem
from rdkit.Chem import AllChem

# 读取分子
mol1 = Chem.MolFromSmiles('CCO')
mol2 = Chem.MolFromSmiles('CC(=O)O')
AllChem.EmbedMolecule(mol1, randomSeed=1)
AllChem.EmbedMolecule(mol2, randomSeed=1)
# 对齐分子
AllChem.AlignMol(mol1, mol2)

# 打印对齐后的分子坐标
print(Chem.MolToMolBlock(mol2))

距离几何+ETKDG+MMFF生成3D构象

对距离几何产生的构象,进行ETKDG优化后,还可以继续使用MMFF94等力场进行优化。不过需要注意的是,MMFF力场中的原子类型编码采用了自身的芳香性模型,因此在使用MMFF相关方法后,分子的芳香属性(aromaticity flags)会改变。

使用MMFF94进行优化构象:MMFFOptimizeMolecule(mol, mmffVariant, maxIters, …)

  • mmffVariant:可选"MMFF94"或"MMFF94s",默认MMFF94
  • maxIters:最多迭代次数,默认200
AllChem.EmbedMolecule(m3d, randomSeed=10)
AllChem.MMFFOptimizeMolecule(m3d)
Draw.MolToImage(m3d, size=(250,250))

Rdkit|分子3D构象生成与优化,DrugAi,机器学习,人工智能,深度学习

距离几何+ETKDG+MMFF生成多构象

其实当使用ETKDG算法生成3D构象时,通常无需再使用MMFF94力场优化。如果执意要这么做,有一个方便的函数可以调用

使用MMFF94优化多个构象:MMFFOptimizeMoleculeConfs()
返回的结果是元组组成的列表,每个元组表示每个构象的收敛值能量(not_converged, energy)。如果not_converged是0,则收敛,接近最稳态,否则没有到达最稳态。

res = AllChem.MMFFOptimizeMoleculeConfs(m3d)
res

多线程生成多构象

可以通过numThreads参数进行设置。文章来源地址https://www.toymoban.com/news/detail-647815.html

  • EmbedMultipleConfs(mol, numThreads)
  • MMFFOptimizeMoleculeConfs(mol, numThreads)
    • numThreads:默认为1,表示单进程执行。设置为0表示将会使用本机最大线程数执行。
cids = AllChem.EmbedMultipleConfs(m3d, numThreads=0)
res = AllChem.MMFFOptimizeMoleculeConfs(m3d, numThreads=0)

到了这里,关于Rdkit|分子3D构象生成与优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于子口袋的分子生成

    生成与靶蛋白具有高结合亲和力的分子(也称为基于结构的药物设计,structure-based drug design)是药物发现中的一项基本且具有挑战性的任务。最近,深度生成模型在生成以蛋白质口袋为条件的3D分子方面取得了显著成功。然而,大多数现有的方法独立地考虑蛋白质口袋的分子

    2024年02月13日
    浏览(38)
  • Top 15 开源3D分子蛋白质建模与渲染软件

    如今,WebGL 是一种趋势技术,因为它允许开发人员使用现代浏览器作为客户端来创建复杂的 3D 交互式图形、游戏,而无需安装额外的插件、扩展或软件。 WebGL允许浏览器直接与GPU(图形处理单元)一起工作。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 有多种 JavaScript 框架旨

    2024年02月09日
    浏览(43)
  • Transformer-M:一个能理解2D和3D分子的Transformer

    目录 总结 一、Introduction 二、Transformer-M 三、Experiment 1. PCQM4Mv2 performance (2D) 2. PDBBIND performance (2D3D) 3. QM9 performance (3D) 4. Ablation study Impact of the pre-training tasks: Impact of mode distribution: 四、Conclusion 参考(具体细节见原文)         今天给大家介绍的是来自北京大学贺笛团

    2024年02月06日
    浏览(42)
  • 智能优化算法应用:基于材料生成算法3D无线传感器网络(WSN)覆盖优化 - 附代码

    摘要:本文主要介绍如何用材料生成算法进行3D无线传感器网(WSN)覆盖优化。 本文主要基于0/1模型,进行寻优。在二维平面上传感器节点的感知范围是一个以节点为圆心,半径为 R n R_n R n ​ 的圆形区域,该圆形区域通常被称为该节点的“感知圆盘”, R n R_n R n ​ 称为传感器

    2024年02月03日
    浏览(54)
  • 基于组合优化的3D家居布局生成看千禧七大数学难题之NP问题

    本文探讨了运筹学和组合优化方法在3D家居布局生成中的应用,并调研了AI生成3D场景布局的最新方法。文中结合了家居家装业务的实际应用场景,从算法建模和计算复杂度的角度上阐述了室内设计的布局问题中存在的难点,以及如何用简化和近似的思想来建模3D布局生成问题

    2024年02月07日
    浏览(35)
  • 从优化设计到智能制造:生成式AI在可持续性3D打印中的潜力和应用

    可持续性是现代工业中一个紧迫的问题,包括 3D 打印领域。为了满足环保制造实践日益增长的需求,3D 打印已成为一种有前景的解决方案。然而,要使 3D 打印更具可持续性,还存在一些需要解决的挑战。生成式人工智能作为一股强大的力量,处于这一变革性转变的最前沿,

    2024年01月24日
    浏览(37)
  • 新的网络钓鱼即服务平台让网络犯罪分子生成令人信服的网络钓鱼页面

    至少从2022年中期开始,网络犯罪分子就利用一个名为“伟大”的新型网络钓鱼即服务(PhaaS或PaaS)平台来攻击微软365云服务的企业用户,有效地降低了网络钓鱼攻击的门槛。 思科Talos研究员蒂亚戈·佩雷拉表示:“目前,Greatness只专注于微软365钓鱼页面,为其附属公司提供附件和

    2024年02月05日
    浏览(39)
  • 机器学习&&深度学习——机器翻译(序列生成策略)

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——seq2seq实现机器翻译(详细实现与原理推导) 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 上一节已经实现了机器翻译的模型训练和预测,逐个预测输出序列, 直

    2024年02月12日
    浏览(38)
  • 机器学习策略——优化深度学习系统

    老式电视机,有很多旋钮可以用来调整图像的各种性质,对于这些旧式电视,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来调梯形角度,还有一个旋钮用来调整图像左右偏移,还有一个旋钮用来调图像旋转角度之类的。

    2024年02月10日
    浏览(32)
  • 机器学习笔记 - 从2D数据合成3D数据

            人们一致认为,从单一角度合成 3D 数据是人类视觉的一项基本功能,这对计算机视觉算法来说极具挑战性。但随着 LiDAR、RGB-D 相机(RealSense、Kinect)和 3D 扫描仪等 3D 传感器的可用性和价格的提高,3D 采集技术的最新进展取得了巨大飞跃。         与广泛使用

    2024年02月01日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包