学化学的分子图不会画?石纪元教你用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,欢迎继续关注我们,期待我们更多技术分享交流,请继续关注我们头条号


分享到:


相關文章: