RDKit中的分子3D構象生成
阿新 • • 發佈:2021-02-19
技術標籤:DRUG AI
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))
檢視結果