3

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

4

3 回答 3

3

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

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

1.代替原子

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
show_atom_number(mol, 'atomLabel')

在此处输入图像描述

2. 与原子一起

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
show_atom_number(mol, 'molAtomMapNumber')

在此处输入图像描述

3. 在原子之上

mol = Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
show_atom_number(mol, 'atomNote')

在此处输入图像描述

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

于 2021-03-21T12:26:28.370 回答
3

这在 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)

更新

从版本开始,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()))
于 2018-12-02T15:47:07.897 回答
1

在 2020.03.2.0 版本中,您可以尝试

from rdkit.Chem.Draw import rdMolDraw2D
from rdkit import Chem

mol = Chem.MolFromSmiles('c1ccccc1O')
d = rdMolDraw2D.MolDraw2DCairo(250, 200)
d.drawOptions().addAtomIndices = True
d.DrawMolecule(mol)
d.FinishDrawing()
with open('atom_annotation_1.png', 'wb') as f:   
    f.write(d.GetDrawingText())
于 2020-07-02T12:48:40.117 回答