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算法得到的,这个就不说了,要不我自己也得晕了。

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

13 三 11 再次惊闻被山寨

继废掉的路过的(luguode.com)被luguode.net山寨之后,惊闻本站又出现了.net山寨版。

08 三 11 在Amazon Linux(AWS)上安装R

R在linux上还是挺好装的,起码Ubuntu、Red Hat之类可以用apt-get, yum搞定,但是amazon linux上的yum库没有R包,直接装rpm还有一堆依赖。还得自己编译。

下载 R的源代码包

wget http://cran.at.r-project.org/src/base/R-2/R-2.12.1.tar.gz

解压,进入目录,configure
tar xf R-2.12.1.tar.gz
cd R-2.12.1
./configure

哇塞,一堆错误。Amazon Linux默认没有装C++、Fortran的编译器,好在yum上有,安装之。另外还需要一个readline-devel包,同时安装之
sudo yum install gcc-c++ gcc-gfortran readline-devel
./configure

还是有错误,因为Amazon Linux没有图形环境,所以缺少那些GUI组件。不过在Amazon Linux上也没法用GUI了,加上忽略X环境的参数。
./configure --with-x=no

然后你会看到一对yes,configure成功,编译之。
make
如果你是用的micro instance,建议你现在去喝n杯咖啡、上个大号神马的,编译不是一般的慢。
完成之后,
./bin/R
R命令行出现。