RDKit中的分子3D构象生成
一、构象生成算法概述
1.基于距离
- 生成分子的连接边界矩阵
- 对边界矩阵进行平滑处理
- 根据边界矩阵,随机产生一个距离矩阵。
- 把产生的距离矩阵映射到三维空间中,并为每个原子计算坐标。
- 对计算的坐标结果使用力场和边界矩阵进行粗略的优化。
2.基于知识
代码实现
>>> from rdkit import Chem
>>> from rdkit.Chem import AllChem
>>> from rdkit.Chem import Draw
>>> m = Chem.MolFromSmiles('c1ccccc1')
>>> m3d=Chem.AddHs(m)
>>> AllChem.EmbedMolecule(m3d, randomSeed=1)
>>> Draw.MolToImage(m3d, size=(250,250)
二、代码实现
1.添加氢原子
- 加氢:Chem.AddHs()
在rdkit中,分子在默认情况下是不显示氢的,但氢原子对于真实的几何构象计算有很大的影响,所以在计算3D构象前,需要使用Chem.AddHs()方法加上氢原子。
2.距离几何算法生成3D结构
- 生成3D构象:AllChem.EmbedMolecule(mol, randomSeed, clearConfs, useExpTorsionAnglePrefs, useBasicKnowledge, …)
mol:传入mol对象
randomSeed:随机种子,方便结果重复
clearConfs:清除已有构象,默认True
useExpTorsionAnglePrefs和useBasicKnowledge两个参数即控制是否使用ETKDG,默认都为True
3.距离几何+ETKDG生成3D构象
代码实现
>>> AllChem.EmbedMolecule(m3d, randomSeed=10)
>>> Draw.MolToImage(m3d, size=(250,250))
查看结果