分子基础操作与药效团查找
1.原子操作
在rdkit中,分子中的每一个原子都是对象,可以通过原子对象的属性和函数来获取各种信息。
- 对原子进行遍历:m.GetAtoms()
- 获取原子索引:GetIdx()
- 获取原子序号:GetAtomicNum()
- 获取原子符号:GetSymbol()
- 获取原子连接数(受H是否隐藏影响):GetDegree()
- 获取原子总连接数(与H是否隐藏无关):GetTotalDegree()
- 获取原子形式电荷:GetFormalCharge()
- 获取原子杂化方式:GetHybridization()
- 获取原子显式化合价:GetExplicitValence()
- 获取原子隐式化合价:GetImplicitValence()
- 获取原子总的化合价:GetTotalValence()
- …
>>> from rdkit import Chem
>>> m = Chem.MolFromSmiles('C1OC1')
>>> print('\t'.join(['id', 'num', 'symbol', 'degree', 'charge', 'hybrid']))
>>> for atom in m.GetAtoms():
>>> print(atom.GetIdx(), end='\t')
>>> print(atom.GetAtomicNum(), end='\t')
>>> print(atom.GetSymbol(), end='\t')
>>> print(atom.GetDegree(), end='\t')
>>> print(atom.GetFormalCharge(), end='\t')
>>> print(atom.GetHybridization())
id num symbol degree charge hybrid
0 6 C 2 0 SP3
1 8 O 2 0 SP3
2 6 C 2 0 SP3
- 也可以通过索引获取原子:GetAtomWithIdx()
>>> print(m.GetAtomWithIdx(0).GetSymbol())
C
- 获取相连的原子:GetNeighbors()
>>> atom = m.GetAtomWithIdx(1)
>>> [x.GetAtomicNum() for x in atom.GetNeighbors()]
[6, 6]
2.键操作
同样,每一个键也都是对象,可以通过属性和函数来获取键的信息。
- 对键进行遍历:m.GetBonds()
- 获取键的索引:GetIdx()
- 获取键的类型:GetGetBondType()
- 以数字形式显示键的类型:GetBondTypeAsDouble()
- 是否为芳香键:GetIsAromatic()
- 是否为共轭键:GetIsConjugated()
- 是否在环中:IsInRing()
- 是否在n元环中:IsInRingSize(n)
- 获取起始原子:GetBeginAtom()
- 获取末尾原子:GetEndAtom()
- …
>>> m = Chem.MolFromSmiles('C=C-C=C')
>>> print('\t'.join(['id', 'type', 'double', 'aromic', 'conjug',