化學資訊學小技巧:分子可視化工具 mols2grid
在“化學資訊學入門:使用 Pandas 輔助化學數據處理”這篇文章中,我們得到了分子結構的視覺化結果。如何把複數個分子漂亮的呈現出來一直是挑戰。一個法國研究室做了一個函式庫用來視覺化 sdf ,還可以在上面可以加自己需要的訊息。
具體的資訊和官方的 example 在 github 上有
安裝的話在 terminal 輸入 conda install -c conda-forge rdkit
或 pip install mols2grid
就行了。我們嘗試了一下將 mol 據轉化成 sdf ,寫入自己準備的資訊然後用這個包可視化了一下。使用的是ames,準備mols這一塊就不詳細說了,之前文章也有。首先對mols進行初步處理:
for mol in mols:
Chem.AddHs(mol)
AllChem.Compute2DCoords(mol)
之後是對 mol 據轉設定自己準備的性質,這裡就將每個分子的番號和活性 01 資料寫入 mol,之後轉化成 sdf 儲存到本地。當然這裡也可以依自己需求加其他東西。
writer = Chem.SDWriter("/Users/...../data/sdf_sample.sdf")
for (mol,cas,act) in zip(mols,df['CAS_NO'],df['activity']):
mol.SetProp("CAS_NO",name)
mol.SetProp("activity",str(act))
writer.write(mol)
writer.close()
最後是可視化:
import mols2grid
mols2grid.display("/Users/...data/sdf_sample.sdf",
# RDKit's MolDrawOptions parameters
fixedBondLength=25,
# rename fields for the output document
# mapping={"activity": "act"},
# set what's displayed on the grid
subset=["CAS_NO", "img", "activity"],
# set what's displayed on the tooltips
tooltip=["activity"],
style={"activity": lambda x: "color: red" if x == 0 else "color: black"})
具體介紹一下,這裡的 mapping 是重新命名,例如你可以把 activity 改名成act。 subset 是排版。這裡 subset = [“CAS_NO”, “img”, “activity”] 也就是各個格子裡的訊息,從上到下依照CAS編號、分子式、活性值來顯示的。 tooltip定義的是用滑鼠點擊格子的時候顯示出來的資訊。 style 可以定義字的顏色,如果活性值是 1 的話字體變成紅色, 0 的話則維持黑色。此外,這個包還加入了檢索功能很是好用。最後可視化出來大概是這個樣子:
大概是以上的功能,mols2grid 提供了不錯的分子視覺化工具,很多地方都可以自己設定,達到自己想要的視覺化結果。
(感謝@yweilin753和@uentinnlea共同編輯)