rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms

rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms_第1张图片

1、3d键长矩阵获取rdDistGeom

from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import rdDistGeom as molDG


mol = Chem.MolFromSmiles('O=C1N(C=CN1[C@****)=C(C(N)=O)N=C3)C')
bm = molDG.GetMoleculeBoundsMatrix(mol)
bm
## 3d后键长
AllChem.EmbedMolecule(mol)
dm=AllChem.Get3DDistanceMatrix(mol)
dm

rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms_第2张图片

2、键角度获取rdMolTransforms

rdMolTransforms.GetAngleDeg 扭转角计算
rdMolTransforms.GetDihedralDeg 二面角计算
rdMolTransforms.GetBondLength(conf,1,2) 键长计算

## 分子索引展示
from rdkit.Chem.Draw import IPythonConsole
IPythonConsole.drawOptions.addAtomIndices = True
IPythonConsole.molSize = 800,800
mol

rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms_第3张图片
**代码

conf=mol.GetConformer(0)
atoms=[a for a in mol.GetAtoms()]
for a in atoms:
    print( a.GetIdx(), a.GetSymbol() )
##键长
from rdkit.Chem import rdMolTransforms
rdMolTransforms.GetBondLength(conf,1,2)

rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms_第4张图片

from rdkit.Chem import rdMolTransforms

rdMolTransforms.GetAngleDeg(conf,60,2,1)  ## 中间位置是中间原子
rdMolTransforms.GetAngleDeg(conf,60,2,3)
rdMolTransforms.GetAngleDeg(conf,1,2,3)

rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms_第5张图片

二面角计算,需要四个索引原子,两个平面的夹角
rdkit 3d结构距离键长矩阵获取rdDistGeom与键角度获取rdMolTransforms_第6张图片

from rdkit.Chem import rdMolTransforms

rdMolTransforms.GetDihedralDeg(conf,0,1,2,3)

你可能感兴趣的:(CADD/AIDD,rdkit)