用Google Spreadsheet批量生成化学信息和结构图片

 手里有一串CAS或者化学名列表(十有八九是存在Excel里的),想补全其他化学基本信息包括结构式图片,现在已经有一些Excel的插件能用了,不过在Google Spreadsheet里做这件事真是格外感到荡气回肠…

所有的原理、代码、操作指南都是从 http://metamolecular.com/gchem/ 这里学来的。

实验过程全程翻墙。

基本的原理是

  • 有一个Web Service能完成化学方面的事情。这里用的是著名的 http://cactus.nci.nih.gov/chemical/structure
  • Google Spreadsheet能执行自定义的脚本(javascript);而且脚本里还能用UrlFetchApp.fetch(url)这种去访问网页或Web Service!

脚本安装和使用的过程 http://metamolecular.com/blog/2011/02/22/gchem-easily-convert-names-and-cas-numbers-to-chemical-structures-in-google-spreadsheets/

效果

其他

  • 表格导出Excel文件时自定义脚本都失效了;保存成PDF图都没了。
  • 再加上现在国内墙越弄越nb,恐怕没法作为常用工具去用。
  • 比较容易可以更换成自己写的Web Service,比之现在查到的内容更精准有效。

 

MIOSS 2011资料下载

多谢chemhack同学给的链接,下载到了的所有演讲资料。

https://registration.hinxton.wellcome.ac.uk/display_info.asp?id=246

必须得说,资料里面很有料;也必须得说,大部分都没看懂。

大致有感觉的是,开源的意思就是开放,开放的意思就是融合,所以一干工具的组合很有意思

  化学信息软件 数据处理/数据挖掘/流程控制 关系数据库
Gregory Landrum RDKit Knime PostgreSQL
Rajarshi Guha CDK R  
Kevin Lawson, LICSS System CDK MS Excel  
Dr Katy Wolstencroft CDK Taverna  
Thorsten Meinl RDKit, Indigo Knime  

事实上现在存在的工具的组合远不止于此,比如历史悠久的mychem=openbabel+mysql。搞开源的人耻于鼓捣微软的平台(鼓捣苹果就高雅了?),所以自己还是需要再做功课,争取能做一点贡献。

Evernote VS. TiddlyWiki

 电子笔记是我深度依赖的工具,Evernote和TiddlyWiki各有千秋,不好抉择啊。

  TW EN 对Charlie重要
条目间引用 Wiki风格,用[[...]]很方便 *, TW胜
TAG OK,且TAG自身也是一个条目 OK  
表格 比较复杂,用字符控制,但效果不错,表头、单元格合并等都能很好表现。不能从别处粘贴。 能粘贴,能可视化编辑,效果比较弱。  
图片和附件 文件单独存放,不方便。 能粘贴。有屏幕截图功能,非常方便。 *, EN胜
格式 强,掌握控制字符,加上CSS几乎为所欲为。 弱,连H1/H2…都不支持。 *, TW胜
筛选 OK OK,有“属性”的功能;可以使用tag组合筛选;可以保存自定义筛选条件。 *, EN胜
备份和同步 单一文件,可以通过快盘、Dropbox来同步。不能在网上编辑,必须下载到本地再上传回去。不能解决冲突。 有服务器支持,网上编辑和冲突处理都非常好。 *, EN胜
客户端 浏览器即可。 专门客户端,也在网站上直接浏览和编辑。  
平台 理论上不限平台,但不是所有的平台上的浏览器都能支持本地保存HTML。 Linux下没有官方客户端,可用Nevernote。主流智能手机操作系统有客户端,可以搞拍照上传。支持IPAD。 *, EN胜
可定制性 强。可以自己充分DIY,也有很多插件。 *, TW胜
文档版本 有,需要升级。  
GTD checkboxPlugin,挺好用了。 属性>包括>未完成待办事项条目,  
其他   * 邮件接收(充分折腾后暴强大)
* 手写,OCR
* Chrome等浏览器插件
 

 

Hosting CDK on Google App Engine

Google App Engine has supported java for a while. I don’t know if others have tried to hosting CDK jar on the App Engine. Last weekend I tried to build an application or App Engine based on CDK and fortunately it seems most parts works.

 
I have build a app named ChemDeposit, it can be visited at http://chemdeposit.appspot.com/
 
It accept SMILES inputs to add or view information generated by CDK. And there’s also an *almost* substructure search implementing just based on default fingerprints.
 
The InChI generator and SMARTS search functions can not work on App Engine and I pasted error informations at http://chemdeposit.appspot.com/cdk-on-appengine.jsp , hope there’s someone can help.

免费SDF文件阅读和处理软件

Windows环境下,常用的SDF文件 阅读和处理的免费(或试用版)软件。
 
 
  • 加载速度快。打开大文件时,随着窗口滚动增量加载解析。
  • 编辑,包括画结构式
  • 根据结构式命名。Traditional name/ IUPAC name
  • 单个化合物结构图另存为图片。
  • 分子式和分子量等基于结构的分析。
  • 生成SMILES。
 

http://www.enso-software.com/WebSite2005/Default.aspx

With ensochemSheet, you can manage you SD files as comfortably as if the were in a database. Search for structures and alphanumerical data, let the program automatically filter duplicates and much more. Test the free demo version even today!
 
  • 编辑,包括画结构式。
  • 子结构检索。

http://www.hyleos.net/?s=applications&p=ChemFileBrowser

 
  • 加载速度慢;功能简单。
  • 列表查看和单个化合物查看。
  • 可以标注和选择SDF中的化合物,并对选择的部分导出。
  • 导出成SDF或CVS。
 
 
  • 用于聚类等分析的工具。
  • 列表和单个化合物信息查看。单个化合物信息查看自动全屏,有导航按钮。
  • 导出成Excel,结构图列表或属性列表。

 

上面的工具中,只有marvin view 还在持续的开发和改进。
 

 

http://www.bioclipse.net/

基于eclipse。

 

关于化学结构式web显示和输入

将化学结构式在网页上显示出来,是基于WEB的化合物注册系统(compound registry system)中必不可少的功能,也能用于化学品研发、销售企业的产品宣传网站。而要实现结构式检索,就要有结构式输入的功能。

我所知道的化学结构式web显示的方法,从技术手段上来说可以分为以下几种

  • 预生成图片。
  • 使用在线结构图生成服务。
  • 使用浏览器插件(java或activex)。
  • 基于Javascript和AJAX的方案。

预生成图片

在后台用工具将结构式信息都转换成图片格式(PNG, JPEG等),再将图片上传到网站服务器,用普通的图片显示方式显示出来。需要注意的就是一般的产品目录中,产品数量较大,是用数据库生成的列表,批量生成的图片,就需要用产品编号、CAS编号等相对固定的编码对应起来。

后台生成图片的工具很多,大部分化学信息学软件都可以做得到。但是为了方便批量操作,尽量选择有编程接口的软件,至少也要能够通过命令行调用的软件。

使用在线结构图生成服务

可以利用的服务,我在之前的这篇在线化学结构式图片生成服务中详细介绍过。前提基本都是要有化合物的SMILES编码信息。这样做的好处是,不用自己生成图片,不用占用自己网站的空间,甚至不用占用自己网站的带宽。同样潜在的问题是要依赖第三方服务的准确性、可靠性和稳定性。

使用浏览器插件

使用浏览器插件恐怕是最常见的解决方案。一般来说,这样的插件都需要用结构式的mol格式作为输入,mol格式可以从SDFile的连接表部分导出。关于mol 和SDFile格式请参考 Chemical table files。目前也只有使用插件,能够实现结构式的输入。

最常见的网页插件有

 

JMEhttp://www.molinspiration.com/jme/,java applet

我所见过的90%以上的在web中显示和输入结构式的浏览器插件,都是用JME来实现的。JME的作者没有声称过这个软件是免费的,非商业用户需要向他发一个邮件来索要。而实际上既然是java applet,直接下载下来用也很容易。而事实上大多数的人都是这么做的。

这个软件估计至少有10年历史了,作者是Peter Ertl


Jmolhttp://jmol.sourceforge.net/, java applet

没有用过。开源的项目,支持的格式非常多,不过还是不支持SMILES/InChI。

 

Chemdraw pluginhttp://www.cambridgesoft.com/software/details/?ds=2&dsv=93, activex

不是免费的,在工作中用到过。功能非常强大,结构式编辑功能与Chemdraw软件基本相当,远远超出其他插件。

 

Chemwriterhttp://metamolecular.com/chemwriter/, java applet

Chemwrite应用并不广泛,功能也不强大,只能说图片显示的质量要比JME好不少,进行了边缘平滑的处理。之所以要提到,是因为这个软件的作者是 Depth-first 这个化学信息学博客的作者Rich Apodaca,我在这里学到了很多有用的知识。

 

 

JChemPaint, http://apps.sourceforge.net/mediawiki/cdk/index.php?title=JChemPaint, java applet

基于CDK项目的一个衍生产品。

 

基于Javascript和AJAX的方案

不论java applet还是activex,都对客户端有所要求。java applet要求客户访问网站的时候,要安装java运行时环境;activex默认在浏览器中不能运行,要客户判断安装并执行,因为有臭名昭著的安全问题。而基于Javascript和AJAX的方案,能够解决这些问题,也符合Web2.0的趋势。

 

MX-GWThttp://chemhack.com/mx-gwt/, 纯javascript

这是国内的一位叫Duan Lian的同学的作品。是我知道的和见过的唯一的用纯粹的javascript实现的结构式显示和输入方案。这个软件实际上是把Rich Apodaca用java开发的一个轻量级的化学信息处理库,MX,通过Google的GWT编译成javascript,使之能在浏览器里运行。非常棒。

 

Molinspiration WebMEhttp://www.molinspiration.com/docu/webme/index.html, AJAX

是开发JME的公司Molinspiration最近开发的AJAX的方案,需要服务器的支持。如果愿意买这个软件的话,Molinspiration提供服务器端支持。对客户来说,仍然只要能支持js的浏览器就行了。

 

PubChem edithttp://pubchem.ncbi.nlm.nih.gov/edit/, AJAX

PubChem在线服务的结构式输入工具,可以拆出来用。而且PubChem也足够开放,提供了很详细的使用说明,包括如何把输入的结构传递到表单。在在线化学结构式图片生成服务提到过,这个编辑器背后隐藏着一个通过SMILES来显示结构式的接口。

 

 

对化学结构式图片进行OCR

原文在 Have your hamburger and eat it – Edit molecules in PDFs。虽然讲的是“编辑PDF中的结构式”,实际上的核心意思是通过OCR的手段,将结构式还原回来。

OCR文字,识别个名片简单,但是恢复带有图型结构的化学结构式图片,看起来就不那么容易了。这篇文章里提供的工具,却偏偏很容易。

核心的软件是BKChem,是基于Python的开源化学信息学软件。很可惜这个网站在国内被盾住了,上传一个在这里

Windows环境下软件配置的步骤是

  1. 安装Python
  2. 按照Python的版本安装 Python Imaging Library
  3. 下载并且安装BKChem-0.12.5.zip。国内下载不了请用这个链接
  4. 下载 convert_clipboard_image.pyconvert_clipboard_image.xml 这两个文件,放在BKChem的plugins文件夹里。这个文件夹一般的路径是这样的 C:\Python25\share\bkchem\plugins
  5. 下载osra-mingw-1-1-0.zip,解压。在系统变量中,设置OSRA变量的值是解压后文件夹中osra.exe的绝对路径。

 

软件使用的方法是

  1. 在C:\Python25\Lib\site-packages\bkchem路径下,双击bkchem.py,运行BKChem。
  2. 在打开的PDF/ Word/ 画图板等软件中拷贝结构式图型。
  3. 在BKChem中点击plugins菜单下的"Paste and Convert Image",就可以开始转换了。

然后呢,当然就是继续编辑这个结构式啦。与其他OCR一样,在准确性是不能达到100%的。往往一些环结构会断掉,特殊的元素、手性键会认错。

不过这已经离可以转换成mol/ SMILES/ InChI格式的结构式不远了。

090218, update

Optical Structure Recognition Software To Recover Chemical Information: OSRA, An Open Source Solution

 

 

在线化学结构式图片生成服务

利用一些网站提供的资源,可以在线生成结构式图片。

DayLight

其中比较突出的是DayLight提供的服务,在另外一篇 结构式图片生成服务, DayLight SMI2GIF 中做过详细介绍。DayLight的服务传入的结构式参数是SMILES,而且有很丰富的参数以调节输出效果。

NIST

NIST是美国国家标准与技术局(National Institute of Standards and Technology),NIST WebBook 是老牌的免费化合物信息数据库,提供丰富的化合物物理、化学性质数据。其化合物的编码方式,其实是CAS号码。把CAS号码转换成数字,就可以很容易得到结构式图片的地址了。


http://webbook.nist.gov/cgi/cbook.cgi?Struct=C490119

NIST WebBook的数据量并不是很大,只有几万条记录。不知道是不是因为太老的原因(05年就没再更新过),其中还有错误数据。至少到这篇发布的时候,上面的例子仍就是一个错误结构。我写Email报告了这个问题,不知道啥时候能修正。

NLM

NLM是(National Library of Medicine) 它提供的ChemIDPlus数据库 也是用CAS号码进行编码的。数据量要比NIST大很多,结构式输出的质量也更好。


http://chem.sis.nlm.nih.gov/chemidplus/RenderImage?maxscale=30&width=200&height=200&superlistid=000490119

Pubchem

对于化合物的标记,SMILES是公开的标准,直观还原结构式信息,值得应用;CAS不公开不免费,但也成为了既成的行业标准。现在能与CAS相提并论的,我想就是NCBI的PubChem 数据库了。NCBI是美国国立生物技术信息中心(The National Center for Biotechnology Information。在在线数据库的范畴内来说,PubChem的Compound ID(cid)基本上是必被引用的。所以也勉强将它用cid作结构参数的图片生成接口纳入进来。这个接口背后也有很多参数用以调节输出。


http://pubchem.ncbi.nlm.nih.gov/image/imagefly.cgi?cid=10273&width=400&height=400

有一篇很好的文章,Thirty-Two Free Chemstry Databases(32个免费化学数据库) ,仔细读过的话也许还会有更多的发现。

2008年12月15日更新

Hack PubChem的结构式编辑页面,找到PubChem通过SMILES输出结构式图片的服务


http://pubchem.ncbi.nlm.nih.gov/edit/editsrv.fcgi?drawevent=paste&sessionid=122931177&smiles=c1(c(cncc1)C(O)=O)C(O)=O&speed=1&nopng=0&vid=&vhadd=0

 

ChemDB

ChemDB / Smi2Depict: Generate 2D Images from Molecule Files


http://c1ccccc1-2.ics.uci.edu:8081/arrow-webapp/ArrowWebService?action=smi2png&smiles=c1(c(cncc1)C(O)=O)C(O)=O&width=400&height=200&arrowdesc=&extraImageSetting=amap

eMolecules


http://depict.emolecules.com/cgi-bin/mymol/depict.cgi?smiles=c1(c(cncc1)C(O)=O)C(O)=O&width=100&height=100&colorscheme=cow&format=png&submit=image

NCI/CADD, Chemical Identifier Resolver 

美国癌症研究中心


http://cactus.nci.nih.gov/chemical/structure/c1(c(cncc1)C(O)=O)C(O)=O/image

 

 

Firefox加载Java Applet后死翘的问题

现象就是加载了带Java Applet的网页后,直接死翘或者在关闭页面的时候死翘,整个Firefox失去响应,只能强制结束进程。
真好吃: JVM卡死firefox提出了正解。

我的firefox有时候不能正常现实applet
反映就是卡死firefox
但是有一个奇怪的现象就是 如果运行本地的网页applet后
在不关闭firefox的前提下 去看含有applet的网页没有任何问题

我百思不得其解 最后分析出了一个大概的原因
jvm大概无法获取firefox的代理服务器设置
所以就卡死掉了

我在java 控制面板中代理服务器设置选择直接连接就解决问题了

如图设置,搞定
JVM connection setting

结构式图片生成服务, DayLight SMI2GIF

SMILES的发明者,DayLight公司提供了一个非常实用的Web Service工具,可以在线通过化合物的SMILES编码,生成它的结构式图片。这个工具就是SMI2GIF 。它是基于DayLight公司的产品”HTTP Toolkit“建立的。我们可以购买这个产品自己建立Web Service,也可以直接在线使用DayLight提供的服务。

下面的图片是一个最简单的在线应用。

图片的HTML代码是

        <img src="http://www.daylight.com/dayhttp/smi2gif?smiles=Oc1ccccc1"></img>
    

DayLight给出了一个参考文档,对这个接口的调用参数和功能,讲述得非常详细。下面就把简单的,我也懂的参数作一点举例介绍。

图片的高度和宽度,线条的粗细,输出的格式(PNG/GIF)


http://www.daylight.com/dayhttp/smi2gif?width=100&height=100&smiles=O%3DC1CCCCC1&Linewidth=thick&output=PNG

色调搭配

提供了几种基本色调


COB
– color on black

COW
– color on white

COP
– color on paper

BOW
– black on white

BOP
– black on paper

WOB
– white on black

WOP
– white on paper


http://www.daylight.com/dayhttp/smi2gif?smiles=O%3DC1CCCCC1&colormode=COW

对原子单独指定颜色


http://www.daylight.com/dayhttp/smi2gif?numcolors=10&tdt=%24SMI%3COCCCCCCCCCC%3EALAB%3C0.0%2C.1%2C.2%2C.3%2C.4%2C.5%2C.6%2C.7%2C.8%2C.9%2C1.0%3E%7C

是否显示手性结构


http://www.daylight.com/dayhttp/smi2gif?hide_chi_h=false&smiles=C[C%40%40H](N)C(%3DO)O

突出显示子结构

这样的功能一般都用在子结构检索之后的结果输出中。


http://www.daylight.com/dayhttp/smi2gif?smiles=O%3DC1CCCCC1&highlight=O%3DC

URL编码

对查询URL中的SMILES字符串,应该用URL-Encode(RFC1738)进行编码。同时,SMI2GIF也支持省略掉百分号的简洁编码方式,比如 (O=C1CCCCC1)可直接表示成 4f3d4331434343434331

参数缩写

SMI2GIF的各个参数,都可以按照下面的映射进行缩写

Option Abbreviation
colormode c
fromto f
height he
hide_chi_h hi
hlen_pct hl
hydrogens hy
numcolors linew
linewidth n
old_style ol
orient or
output ou
reaction r
scale sca
schematic sch
smiles smil
smirks smir
tdt t
width w
xsmiles x

Next Page »

Random posts