你好1 我试图使用 rdkit pack 来完成在 Jupyter Notebook 、“import IPython.core.interactiveshell”和“import InteractiveShell”以及“from rdkit.Chem.Draw import DrawingOptions”包中显示分子原子数/索引的工作,然后我使用“DrawingOptions.includeAtomNumbers=True”来处理它,但结果根本不显示原子索引。 不知道是什么原因导致原子数没有显示。 所以我想请您给出一个合适的答案。 非常感谢!
分子中的原子数有三种显示方式。
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)
。查看我的博客文章以获取更详细的解释这里
这在 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()))
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())