文章目录

  • 一、绘制png:MolDraw2DCairo
  • 二、绘制svg:MolDraw2DSVG
  • 三、绘制png设置(svg设置类似)

一、绘制png:MolDraw2DCairo

先导入所要用到的库和MolDraw2DCairo模块。

from rdkit import Chem
from rdkit.Chem.Draw import rdMolDraw2D
from IPython.display import Image
  • 首先,创建一个Cairo drawer:Chem.Draw.rdMolDraw2D.MolDraw2DCairo(arg1, arg2),同Chem.Draw.MolDraw2DCairo(arg1, arg2)
    arg1和arg2分别是绘制图像的长和宽
  • 接着,准备待绘制的分子:PrepareMolForDrawing(mol, kekulize=True ,addChiralHs=True, wedgeBonds=True, forceCoords=False)
    为了画出更好看的分子,需要进行一些预处理。可以处理的选项有:计算凯库勒式、手性中心补氢、手性中心添加楔形键、生成2D坐标
  • 开始绘制:DrawMolecule()
  • 结束绘制:FinishDrawing()
  • 输出结果:WriteDrawingText(file_name)
>>> mol = Chem.MolFromSmiles('[H][C@](C)(O)F')
>>> d = rdMolDraw2D.MolDraw2DCairo(400, 200)
>>> tmp = rdMolDraw2D.PrepareMolForDrawing(mol)
>>> d.DrawMolecule(mol)
>>> d.FinishDrawing()
>>> d.WriteDrawingText('data/rdMolDraw2D_1.png')
>>> Image(filename = 'data/rdMolDraw2D_1.png', width=250)

二、绘制svg:MolDraw2DSVG

  • 首先,创建一个svg drawer:Chem.Draw.rdMolDraw2D.MolDraw2DSVG(arg1, arg2),同Chem.Draw.MolDraw2DSVG(arg1, arg2)
    arg1和arg2分别是绘制图像的长和宽
  • 接着,准备并绘制分子,两个步骤合二为一:PrepareAndDrawMolecule(drawer, mol, …)
  • 结束绘制:FinishDrawing()
  • 获取结果:GetDrawingText(file_name)
>>> mol = Chem.MolFromSmiles('c1ccccc1')
>>> d = rdMolDraw2D.MolDraw2DSVG(150, 150)
>>> rdMolDraw2D.PrepareAndDrawMolecule(d, mol)
>>> d.FinishDrawing()
>>> svg = d.GetDrawingText()
>>> with open('data/rdMolDraw2D_2.svg', 'w') as f:
>>>     f.write(svg)

三、绘制png设置(svg设置类似)

  • 实例化一个参数器:do = rdMolDraw2D.MolDrawOptions()
  • 将分子键的宽度设置为4:do.bondLineWidth = 4
  • 将分子键的长度设置为30:do.fixedBondLength = 30
  • 将分子顺时针旋转30度:do.rotate = 30
  • 修改原子标签:do.atomLabels[2] = ‘OH group’
  • 应用设置:SetDrawOptions(do)
>>> m = Chem.MolFromSmiles('[H][C@](C)(O)F')
>>> d = rdMolDraw2D.MolDraw2DCairo(150, 150)
>>> do = rdMolDraw2D.MolDrawOptions()
>>> do.bondLineWidth = 4
>>> do.fixedBondLength = 30
>>> do.rotate = 30
>>> do.atomLabels[2] = 'OH group'
>>> d.SetDrawOptions(do)
>>> rdMolDraw2D.PrepareAndDrawMolecule(d, m)
>>> d.FinishDrawing()
>>> d.WriteDrawingText('data/rdMolDraw2D_3.png')
>>> Image(filename='data/rdMolDraw2D_3.png', width=250)


本文参考自rdkit官方文档和一段项目代码。

代码及源文件在这里。

RDKit|使用MolDraw2DCairo模块绘制分子相关推荐

  1. rdkit 绘制分子【可视化分子】

    rdkit 内置了Draw模块,用于绘图,把一些经常用到的方法直接放在Draw下面. 文章目录 一.引入所需库 二.分子对象转化为图片 2.1 分子对象转图片文件函数解析 2.2 分子对象转图片函数解 ...

  2. RDKit | 基于RDKit和Cytoscape绘制分子相似图

    化学信息学中有许多网络结构化数据.例如分子,分子相似图和MMP等. Cytoscape是一款图形化显示网络并进行分析和编辑的软件 基于RDKit和Cytoscape绘制分子的相似图. py2cytos ...

  3. rdkit 处理2D、3D分子

    Smiles 可以看成分子的1D形式,分子的平面结构可以看成分子的2D形式.该算法能够减少分子中原子在平面内的碰撞,使得绘制的分子更加清晰. 文章目录 一.引入所需库 二.处理2D分子 2.1 计算分 ...

  4. OpenCV gapi模块绘制的实例(附完整代码)

    OpenCV gapi模块绘制的实例 OpenCV gapi模块绘制的实例 OpenCV gapi模块绘制的实例 #include <opencv2/imgproc.hpp> // cv: ...

  5. python画五角星代码_Python使用Turtle模块绘制五星红旗代码示例

    在Udacity上课时学到了python的turtle方法,这是一个很经典的用来教小孩儿编程的图形模块,最早起源于logo语言.python本身内置了这个模块,其可视化的方法可以帮助小孩儿对编程的一些 ...

  6. python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...

    本文实例讲述了Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息.分享给大家供大家参考,具体如下: 进行图像绘制有时候需要设定坐标轴以及图像标题等信息,示例代码如下: #-*- ...

  7. 如何在ChemDraw中绘制分子立体结构

    ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...

  8. Python调用pikepdf模块解密PDF文件(使用tkinter模块绘制GUI)

    Python调用pikepdf模块解密.合并PDF文件(使用tkinter模块绘制GUI) 安装模块 pip install pikepdf 代码 #!/usr/bin/pythonimport os ...

  9. python画正切函数_python的pygal模块绘制反正切函数图像方法

    python的pygal模块绘制反正切函数图像方法 python是一个很有趣的语言,可以在命令行窗口运行.python中有很多功能强大的模块,这篇经验告诉你,如何使用python的pygal模块绘制反 ...

  10. 利用python库中的turtle模块绘制自己的名字

    # 利用turtle模块绘制自己名字 --杨文博 import turtle as p p.pensize(5) p.pencolor("cornflowerblue") p.se ...

最新文章

  1. 区块链技术之Fabric逻辑架构详解
  2. [译] 这可能是 2018 年最好的一篇 PHP 性能测评(包含 5.6 到 7.2,以及 HHVM)
  3. 中国齿轮行业竞争分析与投资规模预测报告2021-2027年
  4. linux hadoop 运行jar,Linux下执行Hadoop WordCount.jar
  5. 要求做一个从网页上导入excel
  6. 磁盘Raid方案简单对比
  7. 对称二叉树(C++)
  8. 为什么blender安装后无法打开_CAD软件打开图纸后钢筋符号无法读取的解决办法...
  9. 伊甸园日历游戏(vijos--1004)
  10. MatalbSimulink Control Tutorials笔记4-根轨迹设计控制器
  11. ChatGPT封杀潮,禁入学校,AI顶会特意改规则,LeCun:要不咱把小模型也禁了?...
  12. 微信聊天记录丢失后的记录
  13. C++高阶 RAII机制(以对象管理资源)
  14. Mybatis 批量操作8种实现总结
  15. 前端如何单枪匹马实现小程序页面级版本控制
  16. CISA国际注册信息系统审计师
  17. AT2442 フェーン現象 (Foehn Phenomena)
  18. android 字体加粗_华为nova发布新字体LOGO,设计把我酷到了!
  19. 我为什么要找河南女人做老婆
  20. C/C++编程学习 - 第22周 ⑦ 数字反写

热门文章

  1. 鸢尾花(Iris)数据集
  2. 后端图形验证码base64编码字符串及前端获取图形验证码base64编码字符串并解码显示图形验证码代码
  3. fnt美术字处理 阴影部分
  4. java生成word,营业执照获取信息,cookie
  5. 人工智能--一种现代的方法(知识点总结第一章)
  6. node2vec python_Node2vec和networkx
  7. Linux卸载Apache服务器
  8. spoon mysql教程_Kettle-Spoon入门示例
  9. python 拼音输入法_用Python从0开始实现一个中文拼音输入法的思路详解
  10. tar打包命令(linux)