化學資訊學入門:如何處理化合物資訊?SMILES又是什麼?

Chemistry with data magic
6 min readJun 29, 2024

--

化學資訊學是利用電腦技術對化合物進行各種分析及應用。然而,化合物的訊息是如何讓電腦讀取的?我們平常使用的化學式或結構式並不是一種簡單的輸入方式,我們需要更簡易的化合物表達方法才能讓電腦可以讀取化合物資訊。

Simplified molecular-input line-entry system (SMILES) 形式是什麼?

SMILES 是一種線符號形式的規範,用於使用短 ASCII 字串描述化合物的結構。大多數分子編輯器可以導入 SMILES 字串,以轉換回分子的二維繪圖或三維模型。 最初的 SMILES 字串的描述方法始於 1980 年代。此後,SEMILS 持續被修改和擴展。下面是一些化合物的例子:

在化學資訊學上的處理中,使用 SMILES 字串有一些優點:

  • 化學結構的儲存方式中,最為簡單的一種
    化合物的儲存方式有很多種,像是利用 ChemDraw…等軟體繪製化合物結構後可輸出多種檔案格式,但有時候不同檔案格式會出現相容性的問題。或者是使用 mol file 的形式可以解決一些相容性的問題,mol file可儲存較多的訊息,像是原子座標和分子物性…等資訊,並不是最簡單的儲存方法。而 SMILES 只是單純的字串形式,可以簡單的儲存在 txt file…等純文字檔中,或是和其他資訊一起存在 csv 或 excel file 中,也可以簡單的從 python 或是其他軟體進行讀取。
  • 可以大量儲存化合物結構
    利用機械學習做資料分析時,我們總是需要大量的數據,所以如何儲存的量的化合物數據是一個重要的問題。上述提到了各種化學結構的儲存方式,部分檔案形式 (像是 mol file) 僅能存取一個化合物,這時候我們可以能需要管理大量的檔案或是需要改變檔案的形式 (像是 sdf file) 來儲存大量的化合物資訊。如果使用 SMILES 字串的話,由於本身只是個字串,不只是可以存放在各種檔案的形式,而且也不佔太多的儲存空間,相對的方方便。下面是將 284 個化合物以不同的形式存放在不同檔案中,我們可以發現 SMILES 形式的檔案大小僅幾 KB 而已。

如何取得化合物的 SMILES

這裡我們介紹幾種方式來取得化合物的 SMILES,基本上只要知道化合物的基本資訊就能得到 SMILES 了,下圖簡單呈現了幾種將阿斯匹靈轉換成 SMILES 的方法。

  • 由化學結構得到 SMILES:只要知道阿斯匹靈的化學結構,我們可以利用一些軟體將化學結構轉換成 SMILES 字串。
  • 由英文名得到 SMILES:這個方法僅限於常見的化合物,我們可以使用一些資料庫檢索的方式得到該化合物的 SMILES 字串。
  • 由 CAS no. 或是 PubChem CID…等資料庫的化合物編號得到 SMILES:我們可以使用一些資料庫檢索的方式得到該化合物的 SMILES 字串。

實際操作:利用軟體將化學結構轉換成 SMILES 字串

這個方法是利用ChemDraw…等軟體繪製自己想要的化合物結構,再利用輸出功能來得到 SMILES 字串。各種軟體有不同的輸出方法,我們簡單的將輸出方法整理在下列的圖片中。通常都是使用 “Copy As” 這個複製功能,來取得 SMILES 字串,然後貼在文字檔案中。

我們推薦使用 Marvin.js 來繪製化學結構,由於 Marvin.js 是個 web service 不需要安裝程式,直接就可以在瀏覽器上使用,而且可以將化學結構儲存成多種形式。使用上和其他軟體不太一樣,並不是使用 “Copy As” 的功能,而是儲存的功能來轉換格式。

實際操作:利用PubChem資料庫取得 SMILES 字串

下列的圖片中是在 PubChem 中,分別用英文名、CAS no. 和 PubChem CID 進行搜尋,PubChem 會在搜尋結果裡提供 SMILES 字串。

實際操作:利用 Python 取得 SMILES 字串

這裡我們測試兩種不同的函式庫 CIRpyPubChemPy 來取得化合物的 SMILES 字串。這兩個函式庫都是搜尋線上的資料庫,在使用時都需要網路連線。

  • CIRpy:Chemical Identifier Resolver (CIR) 是一個網路服務,可將不同化學表示方法間轉換。例如,可以將化學名稱轉換成的 SMILES 字串。而 CIRpy 是 CIR 的 Python API,可以在 Python 上進行化學表示方法的轉換。使用上相當簡單,只要使用 cirpy.resolve 這個指令即可。下面是利用化合物的英文名稱和 CAS no. 進行轉換,我們這裡測試了兩種不同的化合物:阿斯匹靈和維生素E:
  • PubChemPy:這是在“化學資訊學入門:化學資料庫的使用方法(Python)”這篇文章中介紹的方法,透過 PubChemPy 利用 Python 檢索 PubChem 資料庫來取得 SMILES 字串。如果是要利用化合物的英文名稱和 CAS no. 進行轉換的話,可以使用 get_compounds 函數。如果是要利用 PubChem CID 的話,則是使用 Compound 這個函數。

結語

將化合物結構轉換成 SMILES 字串是化學資訊學的基礎技術之一。 SMILES 字串是簡單的化學分子表達形式,也很容易被電腦讀取,進而應用其他的機械學習等技術。 此外,使用 SMILES 形式來管理分子結構也很方便,一方面不佔用很多的儲存空間,也可以把化合物資訊放進 excel file 等檔案格式,也增加了化學資訊的應用範圍。

--

--

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.