rdkit:如何显示分子的原子数

jFa*_*ang 7 numbers rdkit display moleculer

你好1我试图使用rdkit包来完成在Jupyter Notebook中显示分子原子数的工作,“import IPython.core.interactiveshell”和“import InteractiveShell”,以及“from rdkit.Chem.Draw import DrawingOptions”包,然后我使用“DrawingOptions.includeAtomNumbers=True”来处理它,但结果根本不显示原子索引。不知道是什么原因导致原子数没有显示。所以我想请您给出一个合适的答案。多谢!

mni*_*nis 5

有三种方法可以显示分子中的原子数。

from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole

def show_atom_number(mol, label):
    for atom in mol.GetAtoms():
        atom.SetProp(label, str(atom.GetIdx()+1))
    return mol
Run Code Online (Sandbox Code Playgroud)

1.代替原子

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
show_atom_number(mol, 'atomLabel')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

2. 与原子一起

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
show_atom_number(mol, 'molAtomMapNumber')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

3. 在原子之上

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
show_atom_number(mol, 'atomNote')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果您想更改要显示的数字,请str(atom.GetIdx()+1)根据您的要求更改部分。在这里查看我的博客文章以获取更详细的解释


rap*_*lpy 4

这在 Jupyter Notebook 中对我有用:

from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw

smiles = 'O=C(C)Oc1ccccc1C(=O)O'
mol = Chem.MolFromSmiles(smiles)
Draw.MolToImage(mol, includeAtomNumbers=True)
Run Code Online (Sandbox Code Playgroud)

更新

从版本开始,2020.03.1这不再起作用。

但您可以直接注释原子。

from rdkit import Chem

smiles = 'O=C(C)Oc1ccccc1C(=O)O'
mol = Chem.MolFromSmiles(smiles)
for atom in mol.GetAtoms():
    atom.SetProp('atomLabel',str(atom.GetIdx()))
Run Code Online (Sandbox Code Playgroud)