化學資訊學基礎:分子指紋 MACCS Keys 的詳細介紹
我們在之前的文章中有簡單介紹了幾種分子指紋的實裝方法:
但沒有很深入的介紹這些分子指紋所代表的意義。在這篇文章中,我們將詳細介紹 MACCS Keys 中各個 Key 所代表的意義,以方便之後再建立 QSAR/QSPR 時,可以用化學知識來驗證模型的結果。
什麼是 MACCS Keys?
經由MDL公司的資料庫所開發的分子指紋。 總共設定了166種分子的由專家定義的子結構,當含有該子結構時顯示 1 沒有的時候顯示 0,對一個分子來說總共是 166 bit 的分子指紋。 像是下面幾個是 MACCS Keys 的幾個例子:
我們這次把 MACCS Keys 內容做個整理。
166種子結構的內容是什麼?
由於這166種的子結構是由專家定義的,跟 Morgan fingerprint 和 RDKit fingerprint 比較來具有較好的解釋性,也就是說這些子結構大部分是化學中常見的官能基。
在解釋166種的子結構前,我們先解釋一些圖例,首先是原子的部分,我們用不同顏色和圓圈代表不同的原子。
另外鍵結的部分,也用不同的線/形狀和顏色代表不同的鍵結。
接著,我們把166種的子結構列在下面的表格裡。在表格裡面,我們使用一些名稱和符號當作子結構的定義 (Definition) ,由於某些結構不太適合用文字解釋,我們另外附上了結構的圖片 (Figure)。在定義的地方,我們用了一些符號作為簡稱:
166種子結構的表格在下面 pdf 檔案中:
追加問題:RDKit 的 MACCSkeys中的第 167 個 bit ?
有人可能會發現,在 RDKit 實作的結果中,輸出的分子指紋數量 (bit數) 是 167個,並非 166 個。那這多出來的 bit 到底是什麼?
在 RDKit 的 MACCSkeys 模組中 (MACCSkeys.py),我們發現了一些蛛絲馬跡:
res[166] = 0
# special case: num frags > 1
if len(Chem.GetMolFrags(mol)) > 1:
res[166] = 1
上述的程式碼表示了判斷輸入的 Mol 形式是否包含了複數個分子。如果 Mol 形式存在了兩個以上的分子,那麼第 167 個 bit 的輸出值就會是 1。這個設計是因為RDKit 的 Mol 形式是允許編入複數個分子,在分子數量不同的情況下,166 bits 無法分出是否含有複數個分子,因此 RDKit 的模組編寫了第 167 個bit 來處理複數分子的情況。
下面是輸入結構包含兩個分子的一些例子: