python 如何从微笑中获取带H的索引和原子

uxhixvfz  于 2023-05-12  发布在  Python
关注(0)|答案(1)|浏览(176)

我试着在微笑中添加原子数:

from rdkit import Chem
mol=Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
for i, atom in enumerate(mol.GetAtoms()):
  atom.SetProp('molAtomMapNumber',str(i))
smi=Chem.MolToSmiles(mol)
print(smi)

输出为:

[cH:0]1[cH:1][cH:2][cH:3][cH:4][c:5]1C:6=[O:8]

然后我想把微笑分解成原子:

from rdkit import Chem
mol=Chem.MolFromSmiles('c1ccccc(C(N)=O)1')
for i, atom in enumerate(mol.GetAtoms()):
  atom.SetProp('molAtomMapNumber',str(i))
  print(i,atom.GetSymbol())

输出为:

0 C
1 C
2 C
3 C
4 C
5 C
6 C
7 N
8 O

**但我想要的是这样的东西:

0 cH
1 CH
...
7 NH2
8 O**

谁能帮我弄清楚如何从上面的微笑中得到每个原子H

blmhpbnm

blmhpbnm1#

您可以使用您获得的SMILES smi变量获得原子沿着氢。

import re
atoms_with_Hs = re.findall('\[(.*?)\:', smi)
print(atoms_with_Hs)

>> ['cH', 'cH', 'cH', 'cH', 'cH', 'c', 'C', 'NH2', 'O']

相关问题