基于RDKit的指定原子或键高亮


指定原子或键高亮

HilightChemAtom.py

from rdkit import Chem
from rdkit.Chem.Draw import rdMolDraw2D
from IPython.display import SVG
from io import BytesIO
from PIL import Image
from cairosvg import svg2png
import argparsedef generate_image(mol, highlight_atoms, highlight_bonds, atomColors, bondColors, radii, size, output, isNumber=False):print(highlight_atoms)print(highlight_bonds)print(atomColors)print(bondColors)image_data = BytesIO()view = rdMolDraw2D.MolDraw2DSVG(size[0], size[1])tm = rdMolDraw2D.PrepareMolForDrawing(mol)option = view.drawOptions()if isNumber:for atom in mol.GetAtoms():option.atomLabels[atom.GetIdx()] = atom.GetSymbol() + str(atom.GetIdx() + 1)view.DrawMolecule(tm, highlightAtoms=highlight_atoms, highlightBonds=highlight_bonds,highlightAtomColors=atomColors, highlightBondColors=bondColors, highlightAtomRadii=radii)view.FinishDrawing()svg = view.GetDrawingText()SVG(svg.replace('svg:', ''))svg2png(bytestring=svg, write_to=output)img = Image.open(output)img.save(image_data, format='PNG')return image_datadef main():parser = argparse.ArgumentParser()parser.add_argument("-i", type=str, required=True)parser.add_argument("-o", type=str, required=True)parser.add_argument("-a", type=str, action="append")parser.add_argument("-b", type=str, action="append")args = parser.parse_args()atom_hilights = {}bond_hilights = {}radii = {}with open(args.i, "r") as f:string_mol = f.read()mol = Chem.MolFromMolBlock(string_mol)if args.a:for atom in args.a:print(atom)datas = atom.split(",")atom_hilights[int(datas[0])] = (int(datas[1]), int(datas[2]), int(datas[3]))radii[int(datas[0])] = 0.20if args.b:for bond in args.b:datas = bond.split(",")bond_hilights[int(datas[0])] = (int(datas[1]), int(datas[2]), int(datas[3]))generate_image(mol,list(atom_hilights.keys()), list(bond_hilights.keys()), atom_hilights, bond_hilights, radii, (400, 200), args.o, False)if __name__ == "__main__":main()

使用方法

python HilightChemAtom.py -i test.mol -o test.png [-a A] [-b B]
usage: HilightChemExample.py [-h] -i I -o O [-a A] [-b B]

-i :输入MOL文件

-o:输出图像(png / svg)

-a:指定要突出显示的原子。 mol文件中从0开始指定原子序号,然后指定以逗号分隔的RGB颜色。

-b:指定要突出显示的键。 mol文件中从0开始指定键号,然后指定以逗号分隔的RGB颜色。

python HilightChemAtom.py -i test.mol -o test.png -a 0,1,0,1

python HilightChemAtom.py -i test.mol -o test1.png -a 0,1,0,1 -a 8,1,0,0 -b 9,0,0,1

python HilightChemAtom.py -i test.mol -o test2.png -a 0,1,0,1 -a 8,1,0,0 -b 0,0,0,1

plaintextedit指定一行一行的高亮显示_RDKit | 基于RDKit的指定原子或键高亮相关推荐

  1. RDKit | 基于RDKit绘制带原子和键的索引、注释和立体化学

    基于RDKit绘制带原子和键的索引.注释和立体化学 导入库 from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Dra ...

  2. RDKit | 基于RDKit的指定原子或键高亮

    基于RDKit的指定原子或键高亮 指定原子或键高亮 HilightChemAtom.py from rdkit import Chem from rdkit.Chem.Draw import rdMo ...

  3. RDKit | 基于RDKit绘制带原子索引的分子

    RDKit可以使用IPythonConsole轻松绘制分子. 用原子索引绘制分子. from rdkit import Chem from rdkit.Chem import Draw from rd ...

  4. plaintextedit指定一行一行的高亮显示_列表记录自动逐条高亮显示

    通常我们在浏览网页的时候经常会看到多行热点信息列表数据,会每隔几秒钟在页面上就会顺次高亮显示链接标题的效果. 这种效果在我们的业务系统中也比较常见,比如企业仪表盘中部分区块的列表数据,网格式报表中. ...

  5. Java一行一行的读文件和简单的写文件

    读 在java的实验作业中,有一个是从我们的txt文件中读取矩阵.其中数与数之间是用\t隔开.行与行之间是用\n跳过.本人java学艺不精,所以我只有自行询问度娘.得知了一个可以从文件中一行一行的读取 ...

  6. C语言 一行一行读取文件txt

    参考:怎么用c语言实现读取一个txt文件里的数据 要按行读出来 打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include <stdio.h& ...

  7. 【python数据处理】将DataFrame数据拆解成为一行一行由字典键值对组成的列表

    将DataFrame数据拆解成为一行一行由字典键值对组成的列表 问题解决 拓展 问题解决 import pandas as pd import numpy as npdf = pd.DataFrame ...

  8. pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行

    pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录

  9. 教大家python读取一行一行文件内容的方法

    Python中readline()每次读取文件中的一行,需要使用永真表达式循环读取文件.但当文件指针移动到文件的末尾时,依然使用readline()读取文件将出现错误.因此程序中需要添加1个判断语句, ...

最新文章

  1. nagios系列(六)之nagios实现对服务器cpu温度的监控
  2. linux 文件大小ll和du不一致问题
  3. JCheckbox全选
  4. IntelliJ IDEA for Mac如何替换文件内容中指定的关键词
  5. C语言 __STDC__ - C语言零基础入门教程
  6. cmake 配置生成后事件_cmake 管理debug release
  7. 7-60 二分查找法之过程 (10 分)
  8. WSE2.0中X509安全令牌的使用
  9. 多输出模型实例的数据加载
  10. 安卓开发 底部导航图标切换时动画效果_体验安卓 10:好用百倍都不止!
  11. 20190902每日一句
  12. asp与php的区别
  13. 如何配置我们的家用路由器
  14. python 作用域知识点整理
  15. Android 手札小记
  16. sscanf小技巧-洛谷P7911 网络连接
  17. 机器学习-线性模型及广义线性模型
  18. 使用绞车和3PS滑轮计数器收放klein3000托鱼
  19. ERP软件31.84版本发布,一次点击实现多种操作!
  20. ThreeJs做智慧城市项目后记

热门文章

  1. Android----View
  2. 百度谷歌2013年母亲节 赏析中文搜索引擎庆祝涂鸦
  3. Defense hash algorithm collision 防御hash算法冲突导致拒绝服务器
  4. Python3.6读写串口操作
  5. LD_PRELOAD用法总结
  6. 数据结构与算法总结(八股文)
  7. 根据一个id查找出数组里面的数据并改掉_Excel最强大的VLOOKUP以及INDEXamp;MATCH查找函数...
  8. python怎么升级django_线上Django项目python2到3升级日记
  9. html鼠标平滑滚动效果,JS特效代码 JS动态平滑滚动菜单效果
  10. ubuntu linux 搭建 webssh 网页ssh远程登录其他服务器