化學資訊學入門:分子指紋(Molecular fingerprint)+ Python 實裝

Chemistry with data magic
4 min readApr 23, 2024

--

今天我們介紹的分子指紋是根據某種規則制定的用來表現一個分子整體特徵的表現手法。 通過計算分子的分子指紋,我們可以得到不同分子之間的類似度並將它們可視化。我們可以舉出相當多 QSAR/QSPR 的例子來證明,化合物之間有著類似分子結構的化合物之間往往具有一些相同的性質,比如生理活性,反應活性等等。

分子指紋最簡單的方法是將分子結構轉換成 one-hot 編碼。 在化學資訊學中已有多種分子指紋的技術應用在 QSAR/QSPR 建模中。RDKit 中提供了多種分子指紋的計算函數。

1.MACCS Keys

經由MDL公司的資料庫所開發的分子指紋。 總共設定了166種分子的由專家定義的子結構,當含有該子結構時顯示 1 沒有的時候顯示 0。在 RDKit 中,對一個分子來說總共是 167 bit 的分子指紋。利用 RDKit 來計算 MACCS Keys 的方法如下:

fingerprints = []
safe = []
for mol_idx, mol in enumerate(mols):
try:
fingerprint = [x for x in MACCSkeys.GenMACCSKeys(mol)]
fingerprints.append(fingerprint)
safe.append(mol_idx)
except:
print("Error", mol_idx)
continue
fp_MACCSkeys = pd.DataFrame(fingerprints)

其輸出為下圖:

詳細內容可參考這篇文章:

2.Morgan fingerprint

Morgan fingerprint 雖然不需要事先去準備子結構,但需設定距離起點原子的鍵距(radius),已上圖為例設定 radius = 4。 然後會計算 radius = 4 以內所有子結構的數量。接著使用Hash function 將訊息壓縮成 one-hot 編碼。我們可以設定 radius 和 bit 的數量來得到不同的分子指紋以及其長度。

Morgan fingerprint 計算方法如下

fingerprints = []
safe = []
for mol_idx, mol in enumerate(mols):
try:
fingerprint = [x for x in AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048)]
fingerprints.append(fingerprint)
safe.append(mol_idx)
except:
print("Error", mol_idx)
continue
fp_MorganFingerprint = pd.DataFrame(fingerprints)

3.RDKit Fingerprint

RDKit Fingerprint的演算法類似Daylight Fingerprint,另外也稱為 Topological Fingerprint。 RDKit Fingerprint 是識別並且hash(切斷)特定的拓撲路徑(例如化學鍵),然後透過他們來設定特定的使用者所指定的分子指紋長度。 當識別出所有的路徑之後,折疊指紋直到獲得含有特定的位元密度的資料。

fingerprints = []
safe = []
for mol_idx, mol in enumerate(mols):
try:
fingerprint = [Chem.Fingerprints.FingerprintMols.FingerprintMol(mol)]
fingerprints.append(fingerprint)
safe.append(mol_idx)
except:
print("Error", mol_idx)
continue
fp_TopoFingerprint = pd.DataFrame(fingerprints)

結語

化學資訊學的強力工具 RDKit 裡可以輕鬆地計算各種化學特徵量,立如苯環數量,官能基數量和LogP等等,這些都對應著分子的一部分構造所反映的某種特徵。分子指紋可以有效表現分子的子結構 (Substructure) 並應用在 QSAR/QSPR 上。

(感謝@yweilin753@uentinnlea共同編輯)

--

--

Chemistry with data magic

I am working on improving material developments by creating machine learning analytical tools for chemical data to accelerate the material discovery.