msgbartop
ChemHack.com中文版
msgbarbottom

13 三 11 《操蛋的化学信息学》- 计算机里的分子 – 2(InChI)

这是接两年未更新的太监系列《操蛋的化学信息学》的最新一节。更新原因无他,看Googel Analytics日志,每天还有搜索“化学信息学”几个字进来的同学,去Google一搜,竟然这就写了几屏幕的太监文竟然进到了第一页。为了不让垃圾信息占据Google首页,进而辜负了Google的名声,继续写 =。=!

话说前年(2009年)我们说到了SMILES,还提到了InChI。两年前说InChI还没长大,现在看已经是遍地开花了。InChI是啥,IUPAC(如果你非叫那个长名字它就是国际纯粹与应用化学联合会)说,InChI是The IUPAC International Chemical Identifier(如果你有翻译癖的话它的全称是国际纯粹与应用化学联合会国际化学标识符)的缩写。可见,缩写让我们的生活变得多么美好,可是总有那么一小撮不让人舒舒服服的用缩写。上过有机化学的想必都曾经对IUPAC命名法深恶痛绝过,但是IUPAC从化学信息学的史前时代就为化学信息的传播奠定了坚实的基础。有了IUPAC命名法,你跟大哥说:“帮我搞点(5α,6α)-7,8-didehydro-4,5-epoxy-17-methylmorphinan-3,6-diol diacetate”。可是没有IUPAC命名法,要么你画张满是圈圈和条条的图,要么你说来点海洛因,接着你被和谐了。可是画图在打字机时代,或者说一直到瞧不死的Mac机发明的时代,可是很麻烦的。后来网络牛X了,90后都会发QQ表情了,贴个图还不容易。可是图片有个致命的弱点,人认识,机器不认识。而且,你看这张,和这张,随便哪个你吸上几百毫克都会high,根本就是一样的玩意嘛。可是你家电脑就是吸上一斤也没反应,你问它这东西分子量是多少,它告诉你这图片大小是300K。但是SMILES之类的东西不一样,机器懂的。IUPAC作为化学界的广电,怎能让SMILES成为事实上的分子标识符标准(还有CAS号,稍后再聊)。于是广电成立了InChI托拉斯(InChI Trust),就是这么一个名字听起来牛逼哄哄的组织,做出来了InChI。搞标准的人总喜欢搞好多层的东西,于是InChI就活生生的成了6层,比TCP/IP还多两层。你别问我是哪几层,非把你整晕了不行,咱们还是说例子。

CH3CH2OH

乙醇,有的人喜欢喝有点人过敏,就是不过敏的看了这串InChI也要过敏了,用SMILES来表示就是CCO,但是InChI可以长到。。。InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3

一点点来解释,“InChI=”表示这是一串InChI(废话)。接下来的“1”表示版本号,即InChI软件1.x。然后的“S”表示是标准(standard)InChI,啥是标准InChI,回头再说or自个查维基。然后一个斜杠分割,“C2H6O”,就是分子式了,整串InChI里也就这个是给人能看懂的。接下来的c1-2-3表示原子间的连接(c即connect)。1 2 3都是原子的编号,这个是怎么编的呢,除掉氢原子,按照分子式的顺序,1和2是C,3是O。至于数字间的那一杠,其实它就是一个杠杠,并不表示单双键(注意别弄混了,SMILES中是用=来表示双键的)。接下来的一层,“h3H,2H2,1H3”,第一个小写h表示是H原子层,“3H”表示3号原子(就是O原子)上有一个H原子,“2H2”表示2号原子(C)上有两个,你懂的。

于是以上就是InChI最简单的示例,其实可以讲的再复杂点的,但是怕大家睡着,有兴趣知道就去看IUPAC的文档吧。

你看到了,InChI实在是太长了,这么简单一个分子都能被折腾成这样,刚才我们说到的海洛因,InChI=1S/C21H23NO5/c1-11(23)25-16-6-4-13-10-15-14-5-7-17(26-12(2)24)20-21(14,8-9-22(15)3)18(13)19(16)27-20/h4-7,14-15,17,20H,8-10H2,1-3H3/t14-,15+,17-,20-,21-/m0/s1,真是继承了(5α,6α)-7,8-didehydro-4,5-epoxy-17-methylmorphinan-3,6-diol diacetate这样IUPAC命名的光荣传统,IUPAC命名在这一刻灵魂附体了。IUPAC着手进行InChI的初衷之一就是把它作为化合物的标准标识符,但是,这么长的东西和简短的CAS编号哪能相提并论。
CAS编号是哪路神仙?CAS编号是美国化学文摘(Chemical Abstract Service)给化合物的编号。这个编号是人工编的数字编号,非常短,比如甲苯是108-88-3,海洛因是561-27-3。但是这样的数字编号有个问题,就是必须由CAS来给它编,如果我刚刚在脑子里意淫了一个新分子,那是不可能得到一个CAS编号的。
inChI给出了一个解决方案,就是InChIKey,海洛因那串很长的InChI就可以变成InChIKey=GVGLGOZIDCSQPN-PVHGPHFFSA-N。这是通过叫做SHA-256的hash算法得到的,这个就不说了,要不我自己也得晕了。

各位看官,谢谢捧场,今天说书到此结束。。。

04 四 09 《操蛋的化学信息学》- 计算机里的分子 – 1a

今天我们聊一下SMILES,下面是Wikipeida里的解释,但是请不要看它,因为这个解释实在太复杂了。

SMILES(Simplified molecular input line entry specification),简化分子线性输入规范,是一种用ASCII字符串明确描述分子结构的规范。SMILES由Arthur Weininger和David Weininger于20世纪80年代晚期开发,并由其他人,尤其是日光化学信息系统有限公司(Daylight Chemical Information Systems Inc.),修改和扩展。

由于SMILES用一串字符来描述一个三维化学结构,它必然要将化学结构转化成一个生成树,此系统采用纵向优先遍历树算法。转化时,先要去掉氢,还要把环打开。表示时,被拆掉的键端的原子要用数字标记,支链写在小括号里。

SMILES字符串可以被大多数分子编辑软件导入并转换成二维图形或分子的三维模型。转换成二维图形可以使用Helson的“结构图生成算法”(Structure Diagram Generation algorithms)。

 

这个SMILES是怎么回事呢?一堆牛人在很久很久以前就开发了一套牛X的化学信息系统,但是怎么输入分子结构还是个比较大的问题。就是要用画的,也不是人人都有鼠标啊(我们把时间设置在SMILES还没发明的80年代初)。但是每个有计算机的人都有键盘吧,于是大家就要想想怎么用键盘输入分子结构。

拿这玩意来说吧,乙醇,乙醇分子,大家都认识。我要在纸上画我可以画出来这么一个玩意。高中化学,大家都上过,有时候老师就给留那么一个空,你画图还不好画,你会怎么写呢?对了,就是CH3CH2OH了。这个结构用SMILES标示就是CCO,你发现了什么?这帮牛人太懒了,H都懒得写。反正有机分子都是要配成符合价键规则的,该有几个H大家都清楚,省了就省了。

然后是这个玩意,双键,现在我告诉你它的SMILES表示是C=CCO。

现在你可以告诉我,你学会了SMILES了。我给你讲个笑话,说的是从前有个地主,他有个儿子,地主给他儿子请了个先生叫他认字,先生教了“一”字,然后先生又教了“二”字,然后地主儿子就说我学会写字了,结果呢地主让他儿子去写请帖,碰巧人家姓“万”,好冷啊 -.-!

地主儿子还好,他可以画一万横,不过你就是把键盘上的按键都拔下来也找不到那个键上有三个横,于是三件这个其实是C#CCO。

现在你会用SMILES表示所有的长链分子了,那么这个怎么办?

分支

这个我们这样表示,C=C(C)CO,分支的地方加个括号就好了。我想你肯定看懂了,接下来我们来点有难度的,环。

环这个就是环己烷了,用SMILES表示是C1CCCCC1。简单来说,就是把环给砍断成链了,砍的地方做个标记(这里是1)。然后我只要记住C1和C1是连起来的就是把这个SMILES还原成环了。挺Easy不是?然后我们来看看取代基。

取代基这个是个间甲基苯酚,环上一个羟基取代一个甲基取代。用SMILES表示就是CC1CCCC(O)C1。同样的道理,C1和C1相连,然后跟在某个环内的C后面有个(O),表示这里有个分支。脑子里想象一下,这串SMILES是可以动的,然后C1跟C1接一下,是不是就是上面的图?这里有点复杂了,多给两个例子,自己看看吧。

CC1CCCCC1(N)CC1CCCCC1(N)CC1CCC(CC1)C(C)=OCC1CCC(CC1)C(C)=O

苯环然后我们开看看苯环,你想写成C1=CC=CC=C1,这个也太傻了,太烦了,创造SMILES的那帮牛人们不喜欢,于是他们这样写c1ccccc1。用小写字母表示共轭结构,这样更接近分子的真实结构。(虽然我们习惯上还是使用Kekule式)芳环的问题解决了,接下来我们看一下比较考验你脑筋的。

C1CCc2cnccc2(C1)考验你脑筋的时候到了,它的SMILES表示是C1CCc2cnccc2(C1),看明白了吗?看明白就看明白了,没看明白就算了,因为你手里有一个鼠标,还去理这种80年的输入方法干啥?下面就谈到了SMILES的意义了。虽然SMILES设计的时候是用作输入的,因为它便于人类理解,但是现在SMILES常常用于在计算机中储存分子结构,因为它简单,它基于字符。至于输入的活,既然我们已经有了鼠标,那就点点画画吧,直观、方便。但是了解SMILES是很有意义的哦,当然它的意义不仅仅和(你看你就会用Windows,我还会点DOS命令)一样。

另外要说的是,除了SMILES之外,线性编码还有WLN、InChi等,但是现在就不做介绍了,因为它们现在远远没有SMILES应用广泛,WLN已经快老死了,InChi还没有长大。

计算机里的分子 – 1a篇到此完结,下面进行节目预告:

计算机里的分子 – 1b将介绍如何用JChemPaint画分子结构、生成SMILES,以及一点Java,用CDK来读取SMILES的一点Java代码。

EOF

Tags:

27 三 09 《操蛋的化学信息学》-化学信息学,一门古老的交叉学科

科学家们说(以下来源于百度百科,实际还是来自G老的《化学信息学教程》)

化学信息学是一个广义性的名词,它将包含化学信息的设计,制造,组织,处理,检索,分析,传播,和使用。

——G.Paris (美国化学会 1999年8月会议)

应用信息技术和信息处理方法已成为药物发现过程中的一个很重要的部分。化学信息学实际上是一种信息源的混合体。它可将数据转换为信息,再由信息转换为知识,从而使我们在药物先导化合物的识别和组织过程的决策变得更有效。

——Brown,Medicinal Chemistry, 1998

用废话来说,所谓的化学信息学就是研究化学信息的学问。kluge01在计算机刚刚被发明的那个时代,计算机的作用主要就是算算弹道啊,算算核弹爆炸啊之类的,真正拿计算机来处理信息,那已经是计算机民用化之后的事情了。在1964年,我们正在忙于阶级斗争的时候,MIT的Cyrus Levinthal已经开始搞出来了右面这么一套玩意了。这个是什么东西呢,这是世界上第一个基于计算机的分子结构模型,在Project MAC提供的强大性能(虽然还不及现在的手机性能强大)的帮助下,这个叫做“晶体球”东西诞生了。它有什么作用呢,似乎只能显示一个蛋白质3D模型。在那个时候,这已经足够引起轰动了,要知道那个所谓的显示器其实是一个示波器。就这么一套显示分子结构模型的系统花掉了美国纳税人2000000美元,然而现在呢,一台随便什么样子的电脑(500美元)再加上Jmol(0美元),都可以做的比晶体球好的多。可惜Cyrus Levinthal并没有活到今天,1990年,他不幸逝世了。在他走之前,留下了一段手稿,详细讲述了当时那段光辉历程。

上面只是一个故事,把它放在这并不是说这就是化学信息学“蛋生”的标志,只是它长得比较像蛋罢了。没法精确的说化学信息学到底是什么时候产生的,一个大概的数字是,上个世纪60年代,分子结构数据库、定量结构与活性关系(QSAR)、分子结构可视化、自动图谱解析、计算机辅助合成设计这些化学信息学的主要研究领域就已经产生了。化学信息学几乎和现代计算机于同一时间开端,所以我说它是一门古老的交叉学科。

现在我们所说化学信息学这个名词,覆盖的范围非常的广,从化学结构的表征到化学数据库,再到分子力学、量子力学,再到化学计量学、化学数据分析,一直到化合物性质预测、反应设计、药物设计,化学信息学这个名词覆盖了化学研究的各个领域。除了化学信息学之外,还有另外一个名词叫做生物信息学。从习惯上来说,一般把小分子的研究归于化学信息学,而对蛋白质、DNA、RNA等的研究则归于生物信息学。实际上,化学信息学和生物信息学之间并没有明确的界限。就拿现在最赚钱的一个领域来说吧,药物的研究,这个领域的研究非常关注小分子和大分子的相互作用,那你说这个应该归于化学信息学还是生物信息学?不知道。于是人们发明了一个词,就叫Bio(Chemo)informatics.

To be continued.

Tags:

15 三 09 《操蛋的化学信息学》-Coming Soon~

 

很早以前就有个想法,把我对于化学信息学的理解写出来。国内化学信息学的教科书已经够多了,但是它们实在太操蛋了。不是写的让人看不懂(其实我是说某些人啊,比如Gasteiger的书还是不错的),就是翻译让人看不懂(其实啊,我是觉得梁逸曾老师的学生翻译的还是很有问题的)。

我倒是挺想跟着这些书一起操蛋一下,可是又总有这样那样的借口不去动手(还是怕水平太低了被人骂)。直到把ChemHack的中英文版给分离了,我决定从今天开始(主要是吧,今天去抽风了一圈。),每天一点,没有计划,没有期限,写多少是多少。我会尽我的努力不出现数学公式和符号,尽可能多画一些图(对我这样的懒人有点要命),让这个所谓的《操蛋的化学信息学》更操蛋些。

《操蛋的化学信息学》的目标:

  1. 绝对不让人一头雾水,绝对不冒充知识分子,尽可能浅显易懂的操蛋中文。
  2. 绝对不让人读了之后不知道这些东西有什么作用。因此《操蛋的化学信息学》决定以化学信息学基本概念和程序代码两条线进行。代码呢主要要靠CDK了(不好意思这么快我就引入了一个缩写,稍后解释),我假设你能看懂一点C或者Java,但是我不期望你会写代码。
  3. 我希望读完(但是我不保证我能写完)《操蛋的化学信息学》之后,你能偶尔自己写写程序处理处理数据,要是能自己写写数据库系统之类就更好不过了。

鉴于本人驾驭长篇的能力极差,如有跑题行为,请留言提醒。

鉴于本人虎头蛇尾的能力较强,如有太监行为,请邮件提醒。

以上。

Tags: