1. 引入所需库
#! /usr/bin/python
# coding: utf-8
# rdkit 操作分子对象
from rdkit import Chem
2. test 分子
smi='[C:0]1-[C:1]-[C:2]1-[C:3](-[CH2:4])(-[CH:5])'
mol = Chem.MolFromSmiles(smi)
atoms = mol.GetAtoms()
bonds = mol.GetBonds()
3. 获取分子中所有的环信息
atom.IsInRing() #是否在环中
atom.IsInRingSize() #是否在n元环中
bond.IsInRing() #是否在环中
bond.IsInRingSize() #是否在n元环中
查看所有最小环(smallest set of smallest rings, SSSR)的信息:GetSymmSSSR()
ssr = Chem.GetSymmSSSR(mol)
num_ring = len(ssr)
print("环的个数=", num_ring) #环的个数= 3
for ring in ssr:
print('ring consisted of atoms id:', list(ring))
环信息
ring consisted of atoms id: [14, 13, 17, 16, 15]
ring consisted of atoms id: [19, 20, 21, 23, 24, 18]
ring consisted of atoms id: [31, 32, 33, 34, 35, 30]
————————————————
版权声明:本文为CSDN博主「qq_36801966」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36801966/article/details/106432725
获取分子环信息用到的函数
直接获取环的信息:GetRingInfo()
查看一共有几个环:NumRings()
查看id为n的原子在几个环中:NumAtomRings(n)
查看id为n的键在几个环中:NumBondRings(n)
查看id为n的原子是否在n1元环中.IsAtomInRingOfSize(n, n1)
查看id为n的键是否在n1元环中.IsBondInRingOfSize(n , n1)
ri.NumAtomRings()
ri.NumBondRings(9)
ri = mol.GetRingInfo()
print('分子中环的个数=',ri.NumRings()) # 分子中环的个数= 3
print(ri.NumAtomRings(2)) # 0
print(ri.IsAtomInRingOfSize(3,3)) # False
print(ri.IsBondInRingOfSize(2,3)) # False