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)显示分子并高亮子结构...相关推荐

  1. python怎样在已有excel文件指定行写入-Python中使用第三方库xlrd来写入Excel文件示例...

    继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...

  2. 协程的概念及Python中利用第三方库gevent使用协程

    提到程序的并发操作,大多数人程序员首先想到的进程或者线程.我们先复习一下进程和线程的概念.   进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的 ...

  3. 查看python库的版本-python中查看第三方库的版本号

    (1)方法一 import scrapy scrapy.__version__ Out[13]: '1.5.1' (2)方法二 help(scrapy) Help on package scrapy: ...

  4. python中的第三方库 cv2_cv2 python

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. python的excell库_Python中使用第三方库xlrd来写入Excel文件示例

    继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...

  6. python导入excel类库_Python中使用第三方库xlutils来追加写入Excel文件示例

    Python中使用第三方库xlutils来追加写入Excel文件示例 目前还没有更好的方法来追写Excel,lorinnn在网上搜索到以及之后用到的方法就是使用第三方库xlutils来实现了这个功能, ...

  7. python pip安装第三方库老是报错_#python pip 安装dlib一直失败?#python安装dlib错误...

    #python pip 安装dlib一直失败?#python安装dlib错误 python dlib 教程2020-10-11 07:52:36人已围观 ubuntu里面怎么安装dlib 下面是在ub ...

  8. 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 ...

  9. python基础和第三方库 笔记(python基础完结包括高级用法,第三方库持续更新中...)

    python基础 注:本笔记面向有一定基础的人 本笔记是本人快速复习python过程中记录的,不适合零基础的人学习python的主工具,可以作为辅工具,本笔记记录了入门阶段常用操作,如有错误的地方,希 ...

最新文章

  1. android studio butterknife自动生成,Android Studio使用ButterKnife和Zelezny的方法
  2. word2vec如何得到词向量
  3. Java程序员从笨鸟到菜鸟之(二十八)Javascript总结之语言基础
  4. 还有:用VB创建Excel报表
  5. boost::fusion::at_c用法的测试程序
  6. more effective C++
  7. $.ajax datatype默认是什么类型,理解jquery ajax中的datatype属性选项值
  8. linux修改可执行程序,反汇编,修改,然后重新组装一个Linux可执行文件
  9. easyexcel 导出设置标题_GitHub - niaobulashi/easy-excel: excel实现导入导出配置型通用方法项目...
  10. hdu 1207汉诺塔II 递推
  11. JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)
  12. mips的旁路_低功耗设计二之Bypassing(旁路)
  13. Spring 和SpringMVC 的父子容器关系
  14. PMP之四个敏捷会议
  15. 手机Web开发框架集
  16. OC 实现扫雷达扫描动画
  17. Matlab里关于T2F/F2T/lpf.m函数调用应注意的问题及函数修改
  18. 服务器虚拟机经常自动断网解决办法
  19. layui文件上传后台(带自定参数)
  20. 从电路交换到分组交换——TDM、ATM

热门文章

  1. LCC-HVDC高压直流输电PSCAD模型介绍
  2. kindeditor上传本地mp4视频
  3. 管式超滤膜组件应对氨氮废水 轻松自如
  4. 网页制作背景颜色代码大全
  5. 苹果手机量体温_用手机可以量体温?反派不能用 iPhone?奇怪的知识又增加了.........
  6. 磨针记2——逝去的女神
  7. 浏览器无法加载网页静态资源
  8. 2019房贷利率你知道了吗?
  9. 【Unreal】未加密的pak文件解包方法
  10. 阿里倾情力荐:Java全线成长宝典,从P5到P8一应俱全