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

时间:2018-11-15 14:17:57

标签: numbers display rdkit moleculer

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

3 个答案:

答案 0 :(得分:1)

这在Jupyter笔记本中对我有用:

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)

答案 1 :(得分: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())

答案 2 :(得分:1)

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

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')

enter image description here

2.随着原子

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

enter image description here

3.在原子之上

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

enter image description here

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