學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

一 在石器時代重新創造文明

1-緣由

最為一個名不合格程序員,漫畫是死肥宅的完美搭配。最近看動漫《石紀元》,沉迷於對石器時代創建文明的幻想,也想在荒蕪的世界利用科學知識改變世界。爽歪歪意淫。沒看過這個動漫?趕緊看下!說的是全世界的生物都被石化,三千年後男主角甦醒後利用科學拯救世界的有趣故事。比貝爾荒野求生還爽。

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

對動漫中,男主千空一群人為創造磺胺類抗生素救人治病尤其感染。我也想畫一畫,但是我不會啊!

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

於是,我關注上了化學,雖然高考後就不再於化學接觸。而且印象中,玩知乎的童靴都知道知乎有三大勸退專業,化學是其中之一,具體原因我不知道(非化學專業)。

今天我們就用非化學專業的方式來畫分子結構圖,手把手教你,就算你是化學專業不懂編程也能快速度上手。利用Python +RDKit實現化學分子圖結構圖的繪製。

方便快捷,實現的效果如下:

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

2-適用人群

-閒的蛋疼的程序員

-化學專業不喜歡化學又得畫分子圖的同學

-轉行學Python編程的非計算機專業的迷茫小羔羊尋找開發項目訓練的同學

-覺得編程沒意思的勸退青年找點樂子刺激以保持對技術的追求

-開發新領域,嚐鮮玩樂的成年人玩具

-《Dr.STONE 石紀元》愛好者

二 環境準備:方式1 Python+RDKit

1-Python 環境搭建

參考我們的文章《 》

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

2-安裝RDKit相關依賴的Python庫

運行-cmd -逐個輸入回車安裝

pip install cmake
pip install wget
pip install swig
pip install boost
pip install aggdraw
pip install matplotlib
pip install Pillow
學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

3-RDKit 安裝

Step1 下載源碼https://github.com/rdkit/rdkit/releases/tag/Release_2019_03_4
學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

Step2 解壓到沒有空各路徑的文件夾,我的是D盤
學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

Step3 配置系統環境變量
RDBASE :D:\\rdkit\\rdkit-Release_2019_03_4
PYTHONPATH: %RDBASE%
PATH: 最後未添加 ;%RDBASE%\\lib
學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

Step4 測試安裝情況

from rdkit import Chemme
沒報錯

三 環境準備:方式2 Anaconda+RDKit(推薦)

方式1可能會出現各種錯誤,而且配置安裝複雜。推薦使用Anaconda進行安裝,但是此方式對網絡有所要求。有可能被牆掉。

1-Anaconda的安裝

可以參考其他道友的文章:https://www.jianshu.com/p/62f155eb6ac5

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

2-創建RDKit環境

Step1 打開Anaconda Prompt-輸入:

conda create -c rdkit -n freo-studio-rdkit-env rdkit
創建一個 freo-studio-rdkit-env 環境
學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

提示y/n?:輸入y

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

慢慢等待就可以了,但是網絡經常中斷,重新來過進行就好!安裝完成後如下提示:

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

Step 2 激活使用剛才創建的環境並安裝相應依賴包(如果提示報錯就更新pip)

conda activate freo-studio-rdkit-env
pip install matplotlib
pip install Pillow
pip install Pillow-PIL
pip install image

pip install ipython
輸入python 回車
輸入代碼:
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import rdDepictor
mol = Chem.MolFromSmiles('CCC(CC)O[C@@H]1C=C(C[C@@H]([C@H]1NC(=O)C)[NH3+])C(=O)OCC')
rdDepictor.Compute2DCoords(mol)
Draw.MolToFile(mol, 'mol.png')##當前路徑
學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

生成圖片如下:

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

輸入代碼運行:

from rdkit import Chem
m = Chem.MolFromSmiles('C1=CC2=C(C=C1)C1=CC=CC=C21')
m.GetAtomWithIdx(3).GetIsAromatic()
m.GetAtomWithIdx(6).GetIsAromatic()
m.GetBondBetweenAtoms(3,6).GetIsAromatic()

四 更多更復雜的化學分子結構圖

1-參考RDKit 文檔

https://rdkit.org/docs/RDKit_Book.html

https://rdkit.org/docs/index.html

https://github.com/rdkit/rdkit

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

2-更專業化學圖繪製及分析

使用Anaconda Jupiter NoteBook進行+py3Dmol進行畫3D化學圖

本文就不展開了,如果評論多,我們進行分享如何使用Python輕鬆畫3d分子結構圖

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

五 總結

玩到老,學到老! 跨學科交流學習,才發現自己的無知。這方面以後還得多學習!

看動漫,不懂化學不懂科學,都不好意思。《Dr.STONE 石紀元》這部動漫給我最大的感觸就算,不管什麼知識都要學習,萬一哪天處於極度惡劣的環境,說不定這些知識就能帶給我們求生的機會。

學化學的分子圖不會畫?石紀元教你用Python-RDKit幾行代碼搞定

Anyway,歡迎繼續關注我們,期待我們更多技術分享交流,請繼續關注我們頭條號


分享到:


相關文章: