rdkit可视化原子序号

rdkit中对于单个原子的操作,常常是通过GetAtomWithIdx这个函数来实现的,然后可以对该原子做各种下游操作,但对于本身没有明确序号的原子,人难以确认该输入哪个序号,这里展示如何将rdkit的内部序号可视化。

方式一

通过设定atomMapNumber, 该方法修改后, 序号可体现在SMILES中易于保存。

from rdkit import Chem

def showAtomNum(smi):
    try:
        mol=Chem.MolFromSmiles(smi)
        for i, atom in enumerate(mol.GetAtoms()):
            atom.SetProp('molAtomMapNumber',str(i))
        return Chem.MolToSmiles(mol)
    except Exception as e:
        print (e)
        return None

showAtomNum('c1ccccc(C(N)=O)1')
output: '[cH:0]1[cH:1][cH:2][cH:3][cH:4][c:5]1[C:6]([NH2:7])=[O:8]'
图一、原子序号的可视化

方式二

类似于方式一相对更加美观,但保存结果不能体现在SMILES中。

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
for atom in mol.GetAtoms():
    atom.SetProp("atomNote", str(atom.GetIdx()))
mol
图二、序号浮在原子上方的可视化
print (Chem.MolToSmiles(mol))
output: 'NC(=O)c1ccccc1'

然而,当你试图保存为SMILES时,不能留下刚刚的序号信息。
但可以通过存为sdf等格式的方式,在molProp下,依然保存着atomNote这个信息。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容