人类基因组大概就像一首mp3那么大

Posted by livepine on 6月 26, 2008

全部的人类基因组序列大致可以放下一张音乐CD(700MB的那种)。这是怎么计算的呢?

人类基因组由23对染色体构成,组成它们的物质是脱氧核糖核酸(DNA)。DNA呈双螺旋结构,由通过氢键相连的碱基对(base pair)链接而成。每条染色体都是这样的碱基对序列,当中包含有遗传信息的片段,称作基因(gene),也包含仅支持蛋白质合成或目前尚未发现功能的片段。DNA中的碱基(nucleotide base)有四种──A(腺嘌呤,adenine),T(胸腺嘧啶,thymine),G(鸟嘌呤,guanine),C(胞嘧啶, cytosine)。由此,碱基对构成染色体,23对染色体构成人类基因组。

碱基对的构成方式是固定的:嘌呤(purine)只和嘧啶(pyrimidine)成对。它们都是有机化合物。嘌呤-嘌呤对在热力学上不合适因为它们的分子距离太远无法形成氢键;嘧啶-嘧啶对也不合适因为它们的分子距离太近会形成静电排斥。因此除了最常见的AT和GC对,只有GT和AC对。但这两者事实上是错误配对,因为氢键的受体和给体模式不匹配。

我们可以如下计算表示人类基因组所需要的信息量:

  • 由于DNA中只有四种碱基,而22 = 4,所以只需要2比特(bit)的信息来表示碱基:00、01、10、11。
  • 人类基因组由3080400000(大约30亿)个碱基构成23对染色体。[1]
  • 8个比特为一个字节(byte)。
  • 1兆字节(megabyte,MB)为210 × 210 = 1048576字节。

所以一条人类基因组可以用2 × 3080400000 / 8 / 1048576 ≈ 734.42MB的信息量来表示。这当中有大量重复的信息,稍加压缩就可以放下一张700MB的CD,一般压缩可以去掉一半。更进一步压缩,这篇文章说他可以把这些信息压缩成大约10MB,差不多是一首稍长些的MP3歌曲的大小。

也许生命的信息本来就是谱成一首歌来传唱的,就像《生命之歌》

你可以在这个页面下载完整的人类基因组序列。

[1] Stewart Scherer. 2008. A Short Guide to the Human Genome. Cold Spring Harbor Laboratory Press.

请更新本站的地址和订阅

Posted by livepine on 3月 05, 2008

最终还是不得不放弃用Rails做blog(Typo)。虽说自己写一个proxy很复杂,但毕竟是可以完成的事,然而mongrel server在bluehost上的性能我就无能为力了。不知道是本站的spam过于猖獗还是spider(例如,百度)过于疯狂,这些垃圾访问量十分庞大,导致mongrel的开销很大,经常出现500错误,具体为“Too many open files”问题,只有重启mongrel才能解决。Google了一番,似乎解决只有提高系统的file handler数目。Bluehost定下的是100(ulimit -n),但这个似乎远远不够。询问客服能不能增到比如2048,被拒。我不可能经常去重启mongrel,也暂时不能脱离Bluehost(还有差不多一年),所以只能妥协了,重新回到古老稳定的PHP中。不过等到Bluehost期满后决定转到Amazon S3EC2中,按需付费,而且拥有整个(虚拟)服务器。

所以现在这个blog使用强大的Wordpress,域名仍然是weblog.livepine.org,如果你仍然用以前的链接会自动转到现在的地址。

另外请修改本站的订阅(RSS、syndicate、feed,或者无论叫什么):http://feed.feedsky.com/livepine。当然你也可以用这个站上的,但用 feedsky更利于我的统计,大概也没有被和谐的风险。

此外,本站使用了Spam Karma 2.3来防御垃圾评论。这是一种基于机器学习的方法,比CAPTCHA对用户更友好,当然也有误把你的评论当成垃圾的风险。有好心人帮我测试下么:) 如果你发现不能评论,请发邮件告诉我:livepine _at_ hotmail 点儿 com。

最后,本blog会保持至少一年,到时再折腾诸如EC2、Erlang之类 :)

本站将继续前进 4

Posted by livepine on 2月 23, 2008

前一阵bluehost(本网站的托管商)的ruby on rails突然升级到2.0。虽然也保留了老版本的rails(1.2.6),但不知什么原因原本的blog引擎Typo就是没法用了。正好新的Typo 5.0基于Rails 2.0,趁机转换到新的平台。原来rails的应用是部署在FastCGI+Apache 1.3上,但FastCGI的效率实在比较恐怖。Bluehost装了Mongrel server,于是目前Typo是运行在Mongrel上,看上去还行,除了占用巨大的内存(>250MB)。但愿bluehost不会因此给我造成任何麻烦。

但Mongrel使用的是非80端口,这样会给用户带来困扰(例如很多局域网封非80端口,而且非标准端口看上去很怪异,也不利于SEO),于是研究如何在Apache 2.2上用Mongrel+Typo。最方便的做法就是使用Apache的模块mod_proxy和mod_proxy_http。这种内部代理能够将外部的请求(例如,正常80端口的请求)映射到Mongrel的端口上,这样Apache就相当于一个代理服务,能够和Mongrel一起工作了。Bluehost的Apache 2.2默认mod_proxy没有打开,联系了几次客服,说是由于这个模块一贯有安全漏洞,他们不能支持。

这样就非常麻烦了。没办法,只得自己写了个简单的Perl的proxy程序,模拟mod_proxy的功能,将所有80端口的请求映射到mongrel server的端口(4122)上。对于GET请求还比较简单,但POST(例如,评论功能)请求就有点复杂,需要用perl来模拟客户端行为,将POST上来的数据转换之后再POST到4122端口上。这个挺麻烦,偏偏需要模拟的是一个套Hash的Hash,总是搞不定。可能Perl的数据结构经过HTTP POST之后给Ruby接收就变了样。此外还有Apache ReWrite会丢弃内部锚符(#),这个可能会给现在的Ajax应用带来问题。看来一个好的proxy还是很复杂的,只能先放放了。

所以,这个blog的永久域名是weblog.livepine.org(livepine.org/weblog还能用,但会给自动转换成weblog.livepine.org),但目前你用这个域名来浏览本站还不能评论(会有出错信息)。如果你想评论,请将域名weblog.livepine.org替换成livepine.org:4122,其余的部分都一样。后面这个4122域名应该长期有效,但等评论功能恢复之后不建议使用,毕竟看上去比较丑么。

所以,是的,本站没有死,将继续前进。

MacBook Air七宗罪 2

Posted by livepine on 1月 16, 2008

  • 有且仅有一个USB口;
  • 没有光驱(当然,有一个烧包的高价外置光驱);
  • 没有以太网卡;
  • 电池不可更换;
  • 不能扩展内存;
  • 太薄,易断;
  • 低端配置,直追MacBook Pro的价格。

苹果自恋情节的再一次完美诠释。MacBook Air大概只适合手无缚鸡之力的“时尚”人士。

Powerset初试 4

Posted by livepine on 12月 07, 2007

Powerset是一个自然语言搜索引擎。它是一家位于美国旧金山的创业公司,今年早些时候获得了施乐帕洛阿尔托研究中心(PARC)所研发的自然语言处理技术,标榜能够理解人类所使用的自然语言。这同Google、百度、雅虎之类的搜索引擎有极大的不同。后者利用关键字搜索,因而检出的结果同使用者原本的意图可能有很大差别,而且也很难判断自然语言中大量存在的同字不同意等模糊情况。一个自然语言搜索引擎,如果真像其名称所指的那样,就可以克服这些困难,更加准确地达到使用者想要的信息。

然而我总是对这样的宣称持怀疑态度。事实上人工智能发展了半个多世纪,自然语言处理一直是研究热点之一──但主要成果都集中在语音识别上,即将输入的自然语言语音解读成准确的文字。据我所知,还没有任何技术进展能够完整地识别一门自然语言,例如英语。不过,简单的理解并没有不可逾越的困难,例如基于特定句式的单句理解已经有了颇多的成果,人们可以把不太复杂的单句用逐字分析的方法纳入特定的语法结构,然后根据解析出的语法结构来判断单字的意义,并转化成计算机所能够识别的查询条件。

Powerset的搜索技术应该大致基于此。你不可能指望输入──不要说长篇大论──即使是一个小片段,该引擎也能理解并返回相关的结果。这种输入即使能够被允许,目前“智能”的自然语言理解恐怕远没有聪明点的关键字匹配来的有效甚至准确。

Powerset公布已经很久了,可是到目前未知仍然没有开放(说是要到2008年初)。前两天收到了他们的实验网站Powerlabs的邀请(你可以到这里来注册),于是来体验一把。Powerlabs的页面做得不错,充分使用了AJAX(没有Flash!),用户体验很好。网站的功能之一是用户社区,你可以提出改进意见,并且有类似Slashdot的业值(Karma)系统来评价你的贡献。业值高了能够试用更多的功能作为奖励。看样子目前Powerset正处于集思广益阶段,非常倚重社区,希望通过用户的反馈来不断改进服务。

另一个重点就是自然语言搜索演示。与我原本期待的不同,这里你不能随意输入任意的句子,而只能在一大组提供的句式中填空,例如A说了B什么,X画了什么,之类。演示所采用的索引数据库不是整个互联网,而是英文wikipedia。这大概也是因为相对整个互联网散漫的语言而言,wikipedia更有组织,更能够正确建模的缘故。演示将句式分成引用、商业、艺术和体育四大类,这一来方便用户,二来我想wikipedia的内容也可以根据分类优化,从而结果更准确。我测试了下面几个例子:

1、商业。句式 Who works for ___ (谁为___工作?)填入 chinese government (中国政府)

结果(点击放大)
谁为中国政府工作?
结果看上去不错。黄色高亮标出的是搜索引擎认为相关的结果。第一条来自漫画“Supreme Power”,第一段高亮不太相关,第二段很正确。第二条结果也是第二段正确。

2、引用。句式 What did ___ say about ___ ? (___说___了什么?) 填入 google 和 microsoft(微软)

结果(点击放大)
Google说微软了什么?
没有返回搜索引擎认为相关的结果。在我看来列出的结果确实不太好。也许wikipedia里目前没有相关内容?Powerset大概还没智能到联想的地步,比如不能理解Google和Microsoft高官之间的唇枪舌剑就是高度相关的。看来句式复杂一点就会出问题。

3、引用。句式 What did ___ say? (___说了什么?) 填入 steve ballmer(微软CEO)

结果(点击放大)
Steve Ballmer说了什么?
句式简化一点结果就好多了。不过此公确实经常大放厥词。

此外演示还提供了一个powermouse功能,用图示的方法列出两个名词和一个关系(动词)的结构。例如你可以填写man和woman,然后引擎列出男人和女人之间所有可能的关系和动作。不过还不能智能到归纳所有男人和所有女人,例如结果里就不会田亮和郭晶晶的故事。我试了查询colonize(殖民)关系,其中一方是mars(火星)。结果(点击放大):

什么/谁殖民火星?
结果大致靠谱。也许这是个科幻的话题,结果所列出的关系多出自于科幻小说。有趣的是其中关于中国人殖民火星的结果很多啊 :)

总得来说Powerset初用感觉还行。总结下来优点如下:
1、对于英语能处理动词的变位,名字单复数,不过这应该是基本能力了吧。
2、界面体验不错,很漂亮。这年头这个很重要。
3、集思广益,充分利用网络的力量。而且自然语言毕竟是人类语言,不范式化的地方很多,所以要理出合理的关系,还要靠大量人工。

缺点:
1、最核心的,这只是自然句式处理。当然人工智能没有重大突破前真正的自然语言理解不可能实现。
2、虽然是这样,还是希望最后的产品能够允许用户自由地输入句子,而不是像现在这样选择并填空。
3、演示中没有更复杂的句式,例如三个以上空的。也许他们已经有了更强大的功能,我业值不高还不能试用?
4、不能联想啊……不过这是不是要求太高了。
5、目前速度很慢。尽管索引限于wikipedia,用户也很少,速度跟Google比还是差了一大截。这样会带来很不好的用户体验──现在人们已经被惯坏了,谁会愿意等半天只看到一堆无用的结果?

Powerset去年底得到默多克新闻集团和几个硅谷投资公司1250万美元的风险投资,风头正盛。它所标榜的技术是非常能够吸引人的,想要超过或者成为另一个Google,也许只需要做的稍好一点。不管怎样,这将是第一个“传统”的人工智能课题得到大规模应用的例子,如果能够顺利开展,一定会为这方面的研究带来巨大促动。

亚马逊英国的客服 2

Posted by livepine on 11月 27, 2007

这几天在亚马逊英国买东西,第一次碰到发货好久都没收到。到网站写信给客服,回信很快,态度诚恳。过几天又来信,诚挚道歉,因为他们调查发现快递公司把货放错发货站了。承诺马上改正缺点,态度没得说,可是等了一个礼拜仍然没收到……于是晚上发信去质问,没想到两个小时后,凌晨三点就收到回信了──表示您要是真的不满意,我们可以重新发货,或者我们退还所有费用。看看署名是英国的客服,于是十分惊异他们的快速反应和,呃,服务时间。照理在英国这种地方不要说24小时,就是夜间服务也是很少见的,可亚马逊英国的客服竟然凌晨还在上班。总结下这件事情应该有三种解释:1、客服在其它地方,例如美国或者亚洲,那么这个时间差不多;2、他们真有人24小时上班──连机场也没这么勤快啊;3、这是自动回复信件。第三点有些科幻了,因为虽然回信内容可以格式化,完全可以根据不容的情况组合内容,但要看懂我的信的内容应该是个人类。要么,亚马逊已经掌握了如此先进的技术,能够准确识别自然语言的内容了?

Colin McRae: DiRT太酷了

Posted by livepine on 6月 09, 2007

一直都是拉力赛类游戏的爱好者。第一次玩的此类游戏是《International Rally Championship》,1998年的老游戏了。当时一上手就欲罢不能──想想看,一位孤独的赛手在黑色的雨夜中疾驰,穿过漆黑的森林,周围就只有轰鸣的发动机忠实相伴。我几乎是立刻就被这意境迷住了,现在仍然记得那个时候夜夜为此痴狂的景象。

从此几乎每款拉力赛游戏我都不会拉下。Colin McRae(CMR)系列应当是目前拉力赛游戏中最好的。我的PSP中常驻的只有CMR05。如今这一系列就要推出最新的DiRT。下了demo试玩,感觉相当震撼。画面极其精美,大概是命名“DiRT”的缘故,赛车所到之处都是飞沙走石,烟尘滚滚的感觉。不过操控感有点不爽,感觉很“漂”,但愿在正式版中有所改善吧。我的机器看来还不够强悍,在最高档画质的设定下开800×600还凑合,1024×768就难以接受了。来看看游戏截图:(来自GameSpot,点击放大。更多图片

MacBook Pro入手

Posted by livepine on 5月 13, 2007

我的那台Compaq再过一个月就满四年了。两年半以前换了块更大更快的硬盘,最近一个月终于貌似要归位了──读盘速度大幅下降,怪异声音不断。于是下决心换机。看中苹果的机器很久,主要是为的Mac OS X──最易用的UNIX变种。另一个原因还归功于苹果的市场策划──最初吸引我的就是MacBook Pro网页上电脑屏幕中的那张照片,第一次看到它我其实就决定了。把不太相关的事情用神秘的关系连起来,就是宗教 :)

原本打算等到Leopard出来之后再出手,没想到给延到了十月份,等不及了。4月21日在网上下单,遭遇银行大宗支付保护机制拦截,只得打电话给银行放行,成功。等到4月25日终于发货,但订购系统说要等到5月7日才能到。这效率真是……早知道就亲自去店里买了。苦苦等到5月7日,没来,打电话给苹果客服,一通废话。次日终于入手(发现其实5月4日才发货),心情大好。我也来赶时髦秀些开箱照──

UPS的箱子
快递的箱子 / UPS box

黑色的盒子
盒子 / the box

缓冲泡沫也很有艺术感
打开盒子 / unboxing...

打开之后,所有的东西
所有的东西一目了然 / everything is here

底下还有一个小盒子,”Designed by Apple in California”,里面是说明书和系统盘
机器下面的小盒子 / the small box under the machine

揭开此封,新的旅程开始
揭开此封 / open this seal

当当当当~~~
外貌 / the appearance

还蒙着一层纱
内部 / interior

揭开它!
揭开那层面纱 / unveil the mask

键盘
机身近看 / closer look at the machine

第一次启动,完成初始化配置之后
第一次启动配置画面 / initialization screen

说起来Mac OS X的界面对我还是全新的,不过上手很快。最喜欢这硕大的屏幕,初看还不太习惯,觉得很扁,可是很快就爱上这1440×900的空间了。Mac OS X好像没有Windows/GNOME/KDE那种任务栏面板,但Exposé似乎更有效率一些,而且更酷。用了Mac之后才发现原来GNOME从中偷师不少,如今类似Beryl的界面也实现了类Exposé的效果。Mac OS X的内核Darwin基于FreeBSD服务层,也可以使用x11应用,所以从命令行到许多GUI软件看上去都和FreeBSD一致。于是许多事情可以通过终端的命令行来做,也可以vi了。真是不错。

这台机器也有许多SB的地方。例如只有两个USB接口。作为卖得这么贵的玩意儿竟然只有这么少的USB口,真是不厚道。剩下的空间放什么了呢?原来还有两个火线口──我大概永远也用不到的东西。看来苹果还是很矜持自己参与制定,尽管已经式微的标准。最可怕的是键盘,许多键都同标准的或者不标准的PC键盘不一样,尤其是那个回车键好像被虐待似的还没shift键大。最受不了的是,竟然没有delete键──Google一番后才知道原来人苹果压根就没这个,一般退格键就足够了么。看样子我只能被迫适应。此外还有输入法,原配的智能ABC同PC上的智能ABC有一拼──一点儿也不好用。装了一个当下很火的Fun Input Toy,虽然仍差强人意但还凑合。也许搜狗输入法或者谷歌拼音谁可以兼容下Mac?

机器的底部有一行小字:”Designed by Apple in California Assembled in China”。很好地诠释了上游设计,下游制造的市场关系,很直白,也很赤裸裸。要等多少年,衷心希望那时这种高附加值产品能够把这关系倒过来,至少也是”Designed in China”!

Designed by Apple in California Assembled in China
Designed by Apple in California  Assembled in China

Ubuntu Linux 7.04试用

Posted by livepine on 4月 25, 2007

上一次在自家的机器上用Linux还是Redhat 7.2,算起来我不用Linux已经五年多了。当初离开Linux投奔FreeBSD怀抱的原因很多,比如Linux的配置文件凌乱,发行版太多,软件安装方法各异,不喜欢GPL,等等。最近硬盘快挂了,于是将另一块硬盘换上。想到这两天Ubuntu 7.04(代号“Feisty Fawn”)刚刚新鲜出炉,索性装一把试试。

Linux这么许多年来虽然发行版越来越多,配置文件的管理依旧凌乱,但毕竟业界大厂支持越来越到位,开发人员众多社区庞大,还是有长足的进步。Ubuntu号称最人性化的Linux,在桌面上下的功夫真是不少。安装没费什么劲,反而令我惊讶的是安装过程中自动发现了硬盘上Windows XP的分区,并提示是否需要把Firefox,Thunderbird,IE Favorites等的用户配置文件(就是Documents and Settings下面那些东东)导入到Linux里。个人以为这个设计对刚从Windows转过来的用户很贴心。安装完毕进入系统,我选的是中文,觉得默认的界面不错,不过字体貌似有些别扭,一看之下果然是“文鼎上海宋”。文泉驿点阵字体我一直在FreeBSD下用,于是安装下,没有配置XWindow就已经全变成文泉驿的中文字了,不错,赞一个。

这里得说下Ubuntu的软件安装方式。感觉上Linux下最普遍的安装方法还是二进制包,比如Redhat的RPM和Debian的DEB,这同FreeBSD基于源文件编译的ports系统很是不同。Ubuntu就是基于Debian的,所以也用apt-get——这个工具非常强大,可以自动从远程服务器上寻找合适的软件包下载。更为可贵的是,如果你输入了未知的命令,系统自动从软件源中寻找可能的匹配,并提出建议,例如:

livepine@PEREGRIN:~$ epiphany
The program ‘epiphany’ is currently not installed. You can install it by typing:
sudo apt-get install epiphany-browser
bash: epiphany:找不到命令

这个功能非常棒!再赞一个。 我想Ubuntu的“对用户友善”的口号名至实归,应了“细节是魔鬼”的概念。

说到这里,我对于Ubuntu 7.04的基础应用非常满意。Ubuntu在桌面方面还是比FreeBSD要技高一筹,至少Flash有官方支持的9.0可以使用,Acrobat Reader、Google Earth(以及我必备的MATLAB)不需要通过Linux服务层来运行。再加上用户友好的apt-get系统、完善的中文配置和一大堆的预装实用软件,绝对是个“生产力系统”。

而更令我兴奋的是那眩目的三维桌面和增强效果。Ubuntu 7.04预置了Compiz引擎,打开可以看到阴影菜单和三维桌面等效果。不过在我的机器上有问题,不是很实用。而在装上了Beryl之后(安装方法见这里),发现原本认为需要很高配置的桌面特效在我这四年的老机器上(P4 2.0,768MB RAM,ATI Radeon 7500 32MB)仍能够顺畅运行,CPU占用很低,想来比那Windows Vista的AERO也不差吧,却要经济得多。眼见为实,请看桌面截图:

Ubuntu 7.04 三维旋转桌面
三维旋转桌面

Ubuntu 7.04 真的透明窗口和阴影
真的透明窗口和阴影

Ubuntu 7.04 桌面切换效果1
桌面切换效果1

Ubuntu 7.04 桌面切换效果2
桌面切换效果2

Ubuntu 7.04 “黏性”的窗口效果
“黏性”的窗口效果

Ubuntu 7.04 窗口预览
窗口预览

总结:Ubuntu Linux 7.04是个适合大多数人使用的实用高效经济的桌面操作系统。

开源OCR项目OCRopus 1

Posted by livepine on 4月 13, 2007

IT新闻里想要没有Google真是很难。Google资助了一个项目OCRopus,这个说白了就是古老的OCR的开源项目。OCR(光学字符识别)是模式识别领域的一个传统项目,基本已经有了很成熟的成果,相关的商业软件(例如中文的有汉王)也早已广泛应用。不过这一技术,同许多其它模式识别/人工智能领域的成果一样,非常复杂,不是仍在实验室研究阶段,就是只被一些商业公司掌握。此次Google赞助的OCRopus是基于两个核心-一个字符识别模块和一个页面布局分析模块。前者来自惠普1995年就已经停止开发的一个高性能OCR软件Tesseract,现在HP把它捐献了出来(Google说是前HP雇员从垃圾堆里找出来的),后者没有提及。Tesseract本身也被开源了(地址)。目前Tesseract是作为OCRopus的一个英文字符识别插件,以后还会有其它语言的插件。

我想Google又做了一件好事,虽然Google说他们的野心是“我们已经记录了几乎所有网上的数据,现在是开始记录纸上数据的时候了”,有一些人可能不喜欢。OCR作为技术藩篱存在了近十年,而且它已经不再是模式识别领域研究的热点。十年来这项技术几乎没什么发展。相信Google此次的开源行为会重新激起这方面的热点,让更多的人参与进来,会带来更好的技术。

Google既然已经行动了,很多事情便有压力和机遇了。