python中的第三方库 cdk_用Jython调用CDK(Chemistry Development Kit)显示分子并高亮子结构...
CDK是一个非常优秀的开发工具,几乎综合了化学信息学中所有常用的功能。但是这个工具似乎受众并不是太多,而且教程很少。可能的原因是毕竟它是个开源开发工具,化学工作者们可能对基于这工具的软件产品更有兴趣,因为他们不喜欢开发,喜欢打包的程序。
花了几天的功夫,终于会了几个基本的功能以及概念。在研究的过程中,我也问过别人,有什么方法可以避免沉浸在API中的“方法与类的海洋”。别人回答我,无论怎样,你都必须阅读API。这确实不假,API全面的介绍了每个类、每个方法的使用方法,开始可能觉得不习惯,随着对CDK的熟悉,慢慢也就能够轻松地阅读API了,不再感觉到一头雾水,有点像看英英词典时可能发现自己连注释的内容都看不懂,有生词,把自己绕进去了。
由于本人更喜欢Python,所以就用了Jython这个中间体,既可以享受Python语法的简约之美,又能用到Java扩展包,调用CDK。建议在使用Jython前(如果之前没用过的话),还是多去用Java写代码,调用CDK,看看别人的代码,以免感觉到不适应。
1. IDE环境:Eclipse,Pydev插件,Jython2.5,配置方法类似于
2. 新建Pydev项目,添加CDK的扩展包:
我安装好Pydev插件后,原本新建Java项目的位置自然就变成了Pydev Project,如果没有可以选择Other,然后找到Pydev项目,然后添加源码文件夹src,添加包test,与java类似。添加扩展包的方法也与java类似,打开项目属性,在PyDev-PYTHONPATH选项卡中找到 External Library,点击Add zip/jar/egg,然后选择cdk-*.jar
!
3. 添加PyDev moudle 即可开始开发。
这里介绍几个简单的API功能
1) SmilesParser,用于将SMILES转化成分子
2)IAtomContainer,可以理解为描述分子的类
3)StructureDiagramGenerator,用户产生2维构象
4)Renderer, generator,用于渲染成图片
def create_a_mol():
smiles = ‘OC(=O)c(cccc1)c1OC(=O)C’
smilesParser = SmilesParser(DefaultChemObjectBuilder.getInstance())
molecule = smilesParser.parseSmiles(smiles)
sdg = StructureDiagramGenerator()
sdg.setMolecule(molecule)
sdg.generateCoordinates()
molecule = sdg.getMolecule()
return molecule
这个命令可以得到阿司匹林的分子文件
class StructureComponent(JComponent):
def init(self):
self.molecule = create_a_mol()
#self.match = create_a_SMARTSmatcher(self.molecule)
#self.molecule.setProperty(HighlightGenerator.ID_MAP,get_ids(self.molecule,self.match))
self.generators = ArrayList()
self.generators.add(BasicGenerator())
self.generators.add(BasicSceneGenerator())
#self.generators.add(HighlightGenerator())
self.renderer = AtomContainerRenderer(self.generators,AWTFontManager())
def paintComponent(self,gra):
g2 = gra
g2.setColor(Color.WHITE)
g2.fillRect(0, 0, self.getWidth(), self.getHeight())
drawArea = Rectangle(self.getWidth(), self.getHeight())
self.renderer.setup(self.molecule, drawArea)
self.renderer.paint(self.molecule, AWTDrawVisitor(g2),self.bounds,True)
这个类用于绘制分子的图片,JComponent是一个Java.swing里的包,与JFrame一起用,可以生成图形界面。上面讲JComponent派生,相当于改变图形界面里的一些东西。init中是对render的配置,其实主要就是配置“渲染产生器”。paintComponent就是具体的绘画内容。
最后,在文件的后面写上
if name == ‘main‘:
comp = StructureComponent()
frame = JFrame()
frame.getContentPane().add(comp)
frame.setMinimumSize(Dimension(600,400))
frame.pack()
frame.setVisible(True)
print ‘I love you.’
即可产生一个JFrame的图形界面。
上面注释掉的一些代码是因为源代码中还增加了高亮子结构(乙酰氧基)的功能,这里就不详细介绍,有兴趣的读者可以看源码研究,主要用到了SMARTSQueryTool类。
运行结果如下:
python中的第三方库 cdk_用Jython调用CDK(Chemistry Development Kit)显示分子并高亮子结构...相关推荐
- python怎样在已有excel文件指定行写入-Python中使用第三方库xlrd来写入Excel文件示例...
继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...
- 协程的概念及Python中利用第三方库gevent使用协程
提到程序的并发操作,大多数人程序员首先想到的进程或者线程.我们先复习一下进程和线程的概念. 进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的 ...
- 查看python库的版本-python中查看第三方库的版本号
(1)方法一 import scrapy scrapy.__version__ Out[13]: '1.5.1' (2)方法二 help(scrapy) Help on package scrapy: ...
- python中的第三方库 cv2_cv2 python
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python的excell库_Python中使用第三方库xlrd来写入Excel文件示例
继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...
- python导入excel类库_Python中使用第三方库xlutils来追加写入Excel文件示例
Python中使用第三方库xlutils来追加写入Excel文件示例 目前还没有更好的方法来追写Excel,lorinnn在网上搜索到以及之后用到的方法就是使用第三方库xlutils来实现了这个功能, ...
- python pip安装第三方库老是报错_#python pip 安装dlib一直失败?#python安装dlib错误...
#python pip 安装dlib一直失败?#python安装dlib错误 python dlib 教程2020-10-11 07:52:36人已围观 ubuntu里面怎么安装dlib 下面是在ub ...
- Jupyter lab add kernel Python+Julia+R 【jupyter Notebook 切换Python环境】and【在jupyter Notebook中安装第三方库】
新增虚拟环境 conda create -n py2 python=2.7 进入python2的环境 conda activate py2 安装python2的内核并应用 python2 -m pip ...
- python基础和第三方库 笔记(python基础完结包括高级用法,第三方库持续更新中...)
python基础 注:本笔记面向有一定基础的人 本笔记是本人快速复习python过程中记录的,不适合零基础的人学习python的主工具,可以作为辅工具,本笔记记录了入门阶段常用操作,如有错误的地方,希 ...
最新文章
- android studio butterknife自动生成,Android Studio使用ButterKnife和Zelezny的方法
- word2vec如何得到词向量
- Java程序员从笨鸟到菜鸟之(二十八)Javascript总结之语言基础
- 还有:用VB创建Excel报表
- boost::fusion::at_c用法的测试程序
- more effective C++
- $.ajax datatype默认是什么类型,理解jquery ajax中的datatype属性选项值
- linux修改可执行程序,反汇编,修改,然后重新组装一个Linux可执行文件
- easyexcel 导出设置标题_GitHub - niaobulashi/easy-excel: excel实现导入导出配置型通用方法项目...
- hdu 1207汉诺塔II 递推
- JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)
- mips的旁路_低功耗设计二之Bypassing(旁路)
- Spring 和SpringMVC 的父子容器关系
- PMP之四个敏捷会议
- 手机Web开发框架集
- OC 实现扫雷达扫描动画
- Matlab里关于T2F/F2T/lpf.m函数调用应注意的问题及函数修改
- 服务器虚拟机经常自动断网解决办法
- layui文件上传后台(带自定参数)
- 从电路交换到分组交换——TDM、ATM