三、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....