1. 程式人生 > 其它 >RDKit中的分子3D構象生成

RDKit中的分子3D構象生成

技術標籤:DRUG AI

RDKit中的分子3D構象生成

一、構象生成演算法概述

1.基於距離

  1. 生成分子的連線邊界矩陣
  2. 對邊界矩陣進行平滑處理
  3. 根據邊界矩陣,隨機產生一個距離矩陣。
  4. 把產生的距離矩陣對映到三維空間中,併為每個原子計算座標。
  5. 對計算的座標結果使用力場和邊界矩陣進行粗略的優化。

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))

檢視結果
在這裡插入圖片描述