美文网首页化学信息学
rdkit可视化原子序号

rdkit可视化原子序号

作者: drugC | 来源:发表于2022-06-22 17:31 被阅读0次

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这个信息。

相关文章

网友评论

    本文标题:rdkit可视化原子序号

    本文链接:https://www.haomeiwen.com/subject/oyrmvrtx.html