Я буду использовать molblock вместо файла .mol, но он работает для обоих.
В моем образце молблока ваша подструктура состоит из атомов 2-5.
Чтобы получить координаты, вам нужен конформер молекулы, и с помощью идентификаторов из поиска по подструктуре вы можете назвать элементы.
from rdkit import Chem
molblock = '''
cn=nc substructure
sample for stackoverflow
16 15 0 0 0 0 999 V2000
-2.6048 -0.8132 0.1394 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.8319 0.4361 -0.2883 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.5126 0.4361 0.3487 N 0 0 0 0 0 0 0 0 0 0 0 0
0.5126 0.4361 -0.3487 N 0 0 0 0 0 0 0 0 0 0 0 0
1.8319 0.4361 0.2883 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6048 -0.8132 -0.1394 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.0542 -1.7032 -0.1653 H 0 0 0 0 0 0 0 0 0 0 0 0
-2.7245 -0.8132 1.2228 H 0 0 0 0 0 0 0 0 0 0 0 0
-3.5863 -0.8132 -0.3346 H 0 0 0 0 0 0 0 0 0 0 0 0
-1.7122 0.4361 -1.3717 H 0 0 0 0 0 0 0 0 0 0 0 0
-2.3825 1.3260 0.0164 H 0 0 0 0 0 0 0 0 0 0 0 0
2.3825 1.3260 -0.0164 H 0 0 0 0 0 0 0 0 0 0 0 0
1.7122 0.4360 1.3717 H 0 0 0 0 0 0 0 0 0 0 0 0
2.0542 -1.7032 0.1653 H 0 0 0 0 0 0 0 0 0 0 0 0
2.7245 -0.8132 -1.2228 H 0 0 0 0 0 0 0 0 0 0 0 0
3.5863 -0.8132 0.3346 H 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
1 7 1 0 0 0 0
1 8 1 0 0 0 0
1 9 1 0 0 0 0
2 3 1 0 0 0 0
2 10 1 0 0 0 0
2 11 1 0 0 0 0
3 4 2 0 0 0 0
4 5 1 0 0 0 0
5 6 1 0 0 0 0
5 12 1 0 0 0 0
5 13 1 0 0 0 0
6 14 1 0 0 0 0
6 15 1 0 0 0 0
6 16 1 0 0 0 0
M END'''
m = Chem.MolFromMolBlock(molblock)
#m = Chem.MolFromMolFile('theMolFile')
conf = m.GetConformer()
patt = Chem.MolFromSmiles('CN=NC')
sub = m.GetSubstructMatch(patt)
for s in sub:
print(m.GetAtoms()[s].GetSymbol(), list(conf.GetAtomPosition(s)))
Выход:
C [-1.8319, 0.4361, -0.2883]
N [-0.5126, 0.4361, 0.3487]
N [0.5126, 0.4361, -0.3487]
C [1.8319, 0.4361, 0.2883]