即使查詢分子與資料庫分子不完全匹配,也想知道其中有多少個通用結構,即最大公共子結構(mcs)。可以使用與子圖同構相同的方法來計算。也可以按原樣使用公共鍵(邊)的數量作為閾值,或將其轉換為相似性指標,例如jaccard / tanimoto係數。
部分結構匹配的情況下,可以在結構匹配時(或確定它們不匹配時)中止搜尋,但是在mcs的情況下,可以輸出最優解,直到搜尋到所有可能性為止。有必要設計諸如確定計算時間的上限,當公共邊緣的數量超過閾值時中止搜尋或者使用高速近似解演算法的手段。
儘管即使使用vf2演算法也可以計算mcs,但已經開發了許多更高效且針對特定應用的演算法。作為開源的mcs實現,rdkit具有基於dfs的演算法fmcs和vf2。
導入庫
from rdkit import rdbase, chem
from rdkit.chem import allchem, draw
from rdkit.chem import rdfmcs
from rdkit.chem.scaffolds import murckoscaffold
import pubchempy as pcp
載入資料
rdkit 子結構搜尋
三 smarts usr bin python coding utf 8 rdkit 子結構搜尋 from rdkit import chem子結構搜尋可以通過smarts匹配符完成。首先建立分子物件,然後定義匹配模式,最後判斷是否有子結構。匹配模式 支援chem.molfromsmarts 和 c...
RDKit 化合物亞結構搜尋與結果輸出
假定搜尋目標化合物作為mol字串包含在稱為mols的列表中。可以在以下流程中執行部分結構搜尋,並突出顯示匹配化合物的匹配部分結構。導入庫from rdkit.chem import allchem from rdkit.chem import draw,descriptors from rdkit....
二分搜尋binary search和貪婪演算法
定義 二分搜尋也稱折半搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。運用前提 必須是排好序的。輸入並不一定是陣列,也可能是給定乙個區間和終止的位置。優點 缺點 採取自平衡二叉查詢樹 可在o nlogn 的時間內用給定的資料構建出一顆二叉查詢樹。可在o logn 的時間內對資料進行搜尋 可在o...