rdkit 子結構搜尋

2021-10-06 20:07:52 字數 2405 閱讀 9563

三、smarts

#! /usr/bin/python

# coding: utf-8

# rdkit 子結構搜尋

from rdkit import chem

子結構搜尋可以通過smarts匹配符完成。

首先建立分子物件,然後定義匹配模式,最後判斷是否有子結構。

匹配模式:支援chem.molfromsmarts() 和 chem.molfromsmiles() 兩種形式。 smarts的表現形式更加豐富。

mol = chem.molfromsmiles(

'c1ccccc1oc'

)patt = chem.molfromsmarts(

'oc'

)flag = mol.hassubstructmatch(patt)

if flag:

print

('分子中包含基團 -och3'

)else

:print

('分子中不包含基團 -och3'

)# 分子中包含基團 -och3

m = chem.molfromsmiles(

'c1ccccc1oc'

)patt = chem.molfromsmarts(

'oc'

)flag = m.hassubstructmatch(patt)

if flag:

atomids = m.getsubstructmatch(patt)

print

("匹配到的原子id:"

,atomids)

else

:print

("分子中不包含基團 -och3"

)# 匹配到的原子id: (6, 7)

根據輸出結果可知,6號原子對應的是甲氧基原子的o原子,7號原子對應的是甲氧基原子的c原子

m = chem.molfromsmiles(

'c1ccc(oc)cc1oc'

)patt = chem.molfromsmarts(

'oc'

)flag = m.hassubstructmatch(patt)

if flag:

atomids = m.getsubstructmatches(patt)

print

("匹配到的原子id:"

,atomids)

else

:print

('分子中不包含基團 -och3'

)# 匹配到的原子id: ((4, 5), (8, 9))

不考慮手性的時候,有手性的分子可以匹配無手性的模式和錯誤手性的模式

考慮手性的時候,有手性資訊的分子可以匹配無手性的模式

無手性資訊的分子不能匹配有手性的模式。

m = chem.molfromsmiles(

'cc[c@h](f)cl'

)print

(m.hassubstructmatch(chem.molfromsmiles(

'c[c@h](f)cl'))

)print

(m.hassubstructmatch(chem.molfromsmiles(

'c[c@@h](f)cl'))

)print

(m.hassubstructmatch(chem.molfromsmiles(

'cc(f)cl'))

)# true

# true

# true

m = chem.molfromsmiles(

'cc[c@h](f)cl'

)print

(m.hassubstructmatch(chem.molfromsmiles(

'c[c@h](f)cl'

), usechirality=

true))

print

(m.hassubstructmatch(chem.molfromsmiles(

'c[c@@h](f)cl'

), usechirality=

true))

print

(m.hassubstructmatch(chem.molfromsmiles(

'cc(f)cl'

), usechirality=

true))

# true

# false

# true

smarts在子結構匹配、化學反應等方面發揮著重要的作用

c c 大寫小寫c是不一樣的,大寫代表脂肪碳;小寫代表芳香碳

冒號後面的數字為atom map id

RDKit 子結構搜尋和MCS演算法

即使查詢分子與資料庫分子不完全匹配,也想知道其中有多少個通用結構,即最大公共子結構 mcs 可以使用與子圖同構相同的方法來計算。也可以按原樣使用公共鍵 邊 的數量作為閾值,或將其轉換為相似性指標,例如jaccard tanimoto係數。部分結構匹配的情況下,可以在結構匹配時 或確定它們不匹配時 中...

RDKit 化合物亞結構搜尋與結果輸出

假定搜尋目標化合物作為mol字串包含在稱為mols的列表中。可以在以下流程中執行部分結構搜尋,並突出顯示匹配化合物的匹配部分結構。導入庫from rdkit.chem import allchem from rdkit.chem import draw,descriptors from rdkit....

RDKit 化合物相似性搜尋(基於Python3)

化合物相似性在化學資訊學和藥物發現中具有悠久的歷史,許多計算方法採用相似度測定來鑑定研究的新化合物。本例項通過計算分子的morgan指紋進行相似性比對。匯入依賴包 usr bin env python3 from rdkit.chem import allchem as ch from rdkit....