plaintextedit指定一行一行的高亮显示_RDKit | 基于RDKit的指定原子或键高亮
基于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的指定原子或键高亮相关推荐
- RDKit | 基于RDKit绘制带原子和键的索引、注释和立体化学
基于RDKit绘制带原子和键的索引.注释和立体化学 导入库 from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Dra ...
- RDKit | 基于RDKit的指定原子或键高亮
基于RDKit的指定原子或键高亮 指定原子或键高亮 HilightChemAtom.py from rdkit import Chem from rdkit.Chem.Draw import rdMo ...
- RDKit | 基于RDKit绘制带原子索引的分子
RDKit可以使用IPythonConsole轻松绘制分子. 用原子索引绘制分子. from rdkit import Chem from rdkit.Chem import Draw from rd ...
- plaintextedit指定一行一行的高亮显示_列表记录自动逐条高亮显示
通常我们在浏览网页的时候经常会看到多行热点信息列表数据,会每隔几秒钟在页面上就会顺次高亮显示链接标题的效果. 这种效果在我们的业务系统中也比较常见,比如企业仪表盘中部分区块的列表数据,网格式报表中. ...
- Java一行一行的读文件和简单的写文件
读 在java的实验作业中,有一个是从我们的txt文件中读取矩阵.其中数与数之间是用\t隔开.行与行之间是用\n跳过.本人java学艺不精,所以我只有自行询问度娘.得知了一个可以从文件中一行一行的读取 ...
- C语言 一行一行读取文件txt
参考:怎么用c语言实现读取一个txt文件里的数据 要按行读出来 打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include <stdio.h& ...
- 【python数据处理】将DataFrame数据拆解成为一行一行由字典键值对组成的列表
将DataFrame数据拆解成为一行一行由字典键值对组成的列表 问题解决 拓展 问题解决 import pandas as pd import numpy as npdf = pd.DataFrame ...
- pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行
pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录
- 教大家python读取一行一行文件内容的方法
Python中readline()每次读取文件中的一行,需要使用永真表达式循环读取文件.但当文件指针移动到文件的末尾时,依然使用readline()读取文件将出现错误.因此程序中需要添加1个判断语句, ...
最新文章
- nagios系列(六)之nagios实现对服务器cpu温度的监控
- linux 文件大小ll和du不一致问题
- JCheckbox全选
- IntelliJ IDEA for Mac如何替换文件内容中指定的关键词
- C语言 __STDC__ - C语言零基础入门教程
- cmake 配置生成后事件_cmake 管理debug release
- 7-60 二分查找法之过程 (10 分)
- WSE2.0中X509安全令牌的使用
- 多输出模型实例的数据加载
- 安卓开发 底部导航图标切换时动画效果_体验安卓 10:好用百倍都不止!
- 20190902每日一句
- asp与php的区别
- 如何配置我们的家用路由器
- python 作用域知识点整理
- Android 手札小记
- sscanf小技巧-洛谷P7911 网络连接
- 机器学习-线性模型及广义线性模型
- 使用绞车和3PS滑轮计数器收放klein3000托鱼
- ERP软件31.84版本发布,一次点击实现多种操作!
- ThreeJs做智慧城市项目后记
热门文章
- Android----View
- 百度谷歌2013年母亲节 赏析中文搜索引擎庆祝涂鸦
- Defense hash algorithm collision 防御hash算法冲突导致拒绝服务器
- Python3.6读写串口操作
- LD_PRELOAD用法总结
- 数据结构与算法总结(八股文)
- 根据一个id查找出数组里面的数据并改掉_Excel最强大的VLOOKUP以及INDEXamp;MATCH查找函数...
- python怎么升级django_线上Django项目python2到3升级日记
- html鼠标平滑滚动效果,JS特效代码 JS动态平滑滚动菜单效果
- ubuntu linux 搭建 webssh 网页ssh远程登录其他服务器