admin on 六月 16th, 2011

首先下载并安装GO::TermFinder

perl -MCPAN -e shell

cpan> install GO::TermFinder

安装完成之后,至example下载GoView.conf, *.pl,以及examples.html文件。其实这些也已经安装在了本机,你也可以在安装目录下找到。

这里主要介绍使用batchGOView.pl来直接生成报告文件。我们先看一眼batchGoView.pl的原代码。

#读取配置文件
my $confFile = shift;
 
my $conf = &ReadConfFile($confFile);
 
#依据配置文件高置参数
my $ontology = GO::OntologyProvider::OboParser->new(ontologyFile => $conf->{'ontologyFile'},
						    aspect       => $conf->{'aspect'});
 
my $annotation = GO::AnnotationProvider::AnnotationParser->new(annotationFile=>$conf->{'annotationFile'});
 
……
 
my $termFinder = GO::TermFinder->new(annotationProvider=> $annotation,
				     ontologyProvider  => $ontology,
				     aspect            => $conf->{'aspect'},
				     @additionalArgs);
 
#生成报告文件
my $report  = GO::TermFinderReport::Html->new();
&GenerateFrameset;#报告文件规范
 
……
 
#依次读取文件并分析
foreach my $file (@ARGV){
 
    print "Analyzing $file\n";
 
    # 从文件中读取基因列表,从这个命令中我们可以看出,基因文件的格式必须是每行一个基因名这样的格式,中间无空行。
 
    my @genes = GenesFromFile($file);
 
    # 进行从基因名到GO名目的映射。
 
    my @pvalues = $termFinder->findTerms(genes        => \@genes,
					 calculateFDR => $conf->{'calculateFDR'});
 
    # 调用GO::View module来生成报告所需的图片。
 
    my $goView = GO::View->new(-ontologyProvider   => $ontology,
			       -annotationProvider => $annotation,
			       -termFinder         => \@pvalues,
			       -aspect             => $conf->{'aspect'},
			       -configFile         => $confFile,
			       -imageDir           => $conf->{'outDir'},
			       -imageLabel         => "Batch GO::View",
			       -nodeUrl            => $conf->{'goidUrl'},
			       -geneUrl            => $conf->{'geneUrl'},
			       -pvalueCutOff       => $conf->{'pvalueCutOff'});
 
    # 而后将这些结果整合到html中来,以便查看。
 
    my $imageFile;
 
    if ($goView->graph) {
 
	$imageFile = $goView->showGraph;
 
    }
 
    my $htmlFile = &GenerateHTMLFile($file, $goView->imageMap, \@pvalues,
				     scalar($termFinder->genesDatabaseIds), "Terms for $file"); 
 
    print $listFh a({-href   => $htmlFile,
		     -target => 'result'}, $htmlFile), br;
 
}
……

[......]

Read more

Tags: , , , ,

admin on 七月 31st, 2010

首先声明,这里并不是我用perl来写个算法。如果需要算法相关的东西,得去看文献。
这里,其实只是借对格兰氏阳性细菌蛋白质定位的预测为例,来说明如何利用他人提供的在线查询功能来实现批处理。

假设现在有一个完整的基因组需要您去预测它当中的每一个开放阅读框翻译出来的蛋白质可能的细胞内定位,怎么办呢?手工一个一个提交到网站上去?一共会有四五千个蛋白,等你提交完,你的手和大脑都会不工作了吧?要不自己下载个软件来本地预测吧?我试过去安装那些要求的软件环境,也许是我的系统过新吧,一个c语言库的版本,一个g77让我就头大得不知道该怎么继续下去。于是我还是下定决心,用perl的lwp来伪装成浏览器提交申请,自动批处理吧。也许一觉醒来,全部都做完了。

我们要用到的网站是http://www.psort.org/psortb/。据网站上宣传,Based on a study last performed in 2010, PSORTb v3.0.2 is the most precise bacterial localization prediction tool available. 第二个原因就是can currently submit one or more Gram-positive or Gram-negative bacterial sequences or archaeal sequences in FASTA format。这对于研究格兰氏阳性菌的我来说的确很不错的网站。

最基本的,用lwp来虚拟提交一份表单上去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla 8.0 beta");
 
use HTTP::Request::Common qw(POST);
my $req = (POST 'http://www.psort.org/psortb/results.pl',
		["seq" => ">$genes{name}\n$genes{translation}",
		"organism" => "bacteria",
                "gram"=>"positive",
                "advancedgram"=>"none",
                "format"=>"long",
                 "sendresults"=>"display");
 
$request = $ua->request($req);
print $request->as_string;

结果得到的,怎么都是500 Internal Server Error。于是在网上狂google,也没有找到直接的答案。半夜两点,突然想起,为什么不自己想法来解决问题。于是开始用tcpdump抓包,对比从firefox发送出去的包和perl发送出去的包,具体看看有什么不同。[......]

Read more

Tags: , , , , , ,

BioJava和BioPerl, BioRuby, BioPython都是比较常见生物类使用的类库。使用BioJava,首先要去www.biojava.org上去下载最新的压缩包。现在最新的版本是1.7.1。下载完全压缩包(大约27兆),把它放在/Library/Java/Extensions/目录下,在terminal里解压缩。

50f32c63fc52e227f6760c33129cff57[......]

Read more

Tags: , , ,

首先需要搞定的问题是在Mac OS X上安装一个java的代码工具,命令行虽然好,但是对于复杂的编程来讲,排错工作就太不方便。

当前最流行的而且免费的就属由apple公司提供的Eclipse了,但是它并不那么容易起步。这里就一步一步地先来实现一个hello world吧。

Eclipse下载页面下载适合你的机器的最新的eclipse的版本,我下载的是64位的eclipse IDE f[......]

Read more

Tags: , , ,

admin on 六月 4th, 2010

人的智慧是一个奇迹。

1)英雄牌蒸气机。蒸气机是瓦特改良的,那么它是谁发明的呢?有人说是名叫萨弗里的发明的。但其实考古起来,应该是这个叫hero,或者heron的人搞出来的。他应该算是发明家,工程师,教育家,或者说是科学家。他发明的这个东西叫风光管,有人评论说它只是个玩具。但其实它已经被应用于一些简单的工作了,比如说舞台幕布的拉起和放下。我们来看一眼这个东西是个什么样子的吧,就是水蒸汽推动曲管转动而已。

[......]

Read more

Tags: ,

admin on 五月 5th, 2010

我们平常所谓的糖,主要是指庶糖(红糖、白糖、砂糖、黄糖)。但其实粮还分很多种,比如说葡萄糖、果糖、半乳糖、乳糖、麦芽糖、淀粉、糊精等等。有很多糖,比如说三氯庶糖,天冬氨酰苯丙氨酸甲酯,糖精,玉米粉等,因为它们低卡路里,往往被用来替代食糖。但是,它们并没有想象的销售量那么好。人们似乎对这些打着健康名义的糖信不过。下面就列表当前市场上主要的一些糖:

名称

卡路里
碳水化合物[......]

Read more

Tags: , ,

美国副总统拜登于2010年4月29日在白宫宣布了37项基于振兴基金(总计1亿6百万美金)的平净能源研究项目。负责这笔投资的能源部前沿研究工程局-能源分局(Advanced Research Projects Agency – Energy, ARPA-E)集中了这些比太阳能更有效的可再生电力的生物燃料,价格合理的机动车新型电池,以及降低甚至去除温室气体排放的干净能源研究计划, 希望这37项非常具体竞争力的研究项目从根本上解决日益尖锐的源能问题。同时这有利于美国境加国际竞争力和就业。

美国副总统拜登说:“感谢振兴法案,这些非常前沿的有价值的研究可以开展。我们在能源研究上花钱,不但可以激励美国人的创新精神,而且可以提供持续有效就业机会,提高美国的国际竞争力。”

“美国正在引领一场新的干净能源的工业革命。这对于创造就业,刺激创新,恢复经济,减少二氧化碳排放量都将起到巨大的推动作用。”

“在二战以来的GDP战争中,我们的科学家及工程师在推动美国的发展上取得了巨大的成绩。这批新能源的研究计划必然会让美国在下一个50年保持很强的国际竞争力。”

[......]

Read more

Tags: , , ,

什么是正则(Regex)?

正则是一种用于搜索字符的表示标准。Regex就是Regular Expression的缩写,即正则表达式,在计算机科学中,用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。举个例子:

有字符串:NSString *str = @”son father grandfather”;

我们现在想从中找到和father有关的词,正则表达式可以写成:/(grand)?father/  这一表达式就可以匹配father和grandfather。

再有一例,我们想匹配gray或者grey这两个相同意义,但欧美不同拼写的词,可以使用/gray|grey/或者/gr(a|e)y/这两个正则表达式。

在现在的应用当中,我们有时候需要匹配更多的复杂的语句,比如说整数,我们就可以写成:/[+\-]?[0-9]+/;比如说浮点数:/[+\-]?(?:[0-9]*\.[0-9]+|[0-9]+\.)/;比如说包含科学计数法的数:/([+\-]?(?:[0-9]*\.[0-9]+|[0-9]+\.)(?:[eE][+\-]?[0-9]+)?)/;比如说url:/\b(https?)://(?:(\S+?)(?::(\S+?))?@)?([a-zA-Z0-9\-.]+)(?::(\d+))?((?:/[a-zA-Z0-9\-._?,'+\&%$=~*!():@\\]*)+)?/ ……

什么是RegexKitLite?

这是一个在Xcode编写cocoa应用程序当中为NSString类提供了小量化的正则方法的工具。它的好处就是只需要在编辑的工程中导入RegexKitLite.h和RegexKitLite.m两个文件,然后设置动态链接至/usr/lib/libicucore.dylib即可使用。小量化,但只对NSString起作用。

使用RegexKitLite:

首先下载原文件。

将RegexKitLite.h及RegexKitLite.m两个文件导入到工程当中去:Add->Existing Files…

注意要勾选“Copy items into Destination’s Group Folder(if needed)”

将RegexKitLite.h及RegexKitLite.m两个文件导入到工程当中去

将RegexKitLite.h及RegexKitLite.m两个文件导入到工程当中去

[......]

Read more

Tags: , , , , ,

admin on 一月 23rd, 2010

胚胎干细胞研究虽然只有十二年的历史,但是它从出现开始就倍受争议。它不单单是科学本身的事情,它还涉及到政治,宗教,和伦理。它虽然至今为止没有任何人接受过胚胎干细胞的治疗,但是科学家还是对它的前景充满了信心。胚胎干细胞的研究的道路也是曲折的,这其中有振奋人心的发现,也有让人可惜的做弊案。就让我们一起来回顾一眼胚胎干细胞的研究史吧。

胚胎细胞基因注射

胚胎细胞基因注射

[......]

Read more

Tags: , ,

admin on 一月 10th, 2010

这是一个新的时代,是充满资讯的时代。我们通过个人电脑连接internet,从而去了解世界发生了些什么。其实,电脑与网络只是我们了解资讯的一个媒介,其实我们对它们并不关心,我们更关心的还是身边的实事,或者说是八卦。但是电脑商们总是会关心这些东西的,他们需要把电脑和网络做得更好,以适应我们对信息获取的需要。

有人说,下一个十年,互联网最大的变化就是从实体电脑走向无线终端,比如说手机。这方面的应用,在日本和非洲已经比较流行。看过《电车男》的人都会对日本手机互联网有深刻的印象。而在非洲,国为电脑并不普及,于是手机上网成为了更为流行的方式。也就是说,在七大洲里,非洲在这方面走在了前面。下一步的问题是如何减少资费吧。

在日本,手机上都会整合一个扫描二维码的功能。二维码是一个小块的四方的可以为特定程序识别的印刷在平面介质上的信息。一个拇指块大小的二维码,就可以存贮大约1M的数字信息。这些信息可以是任意的文本,也可以是特定元标记的文本,当手机扫描了二维码之后,它就可以显示这些文本,并捕获其中的网址,并引导你通过访问手机互联网获取相关的资讯。于是你拿着超市里的任何物品,你就可以通过手机扫描二维码,去制造商的网站上去了解该商品的相关信息。

然而,这一功能显然是被动的,我们扫描了二维码之后,获得的引导链接是制造商提供的。有些时候,我们需要的是该产品的用户评论,同类产品的横向比较,或者说生活区附近哪家最便宜之类的信息。这对于现在还是没有普及的一项应用。但是在不久的将来,它一定可以。在中国广州创业的黄老板就在着力于这方面服务的开发。

这个星期,由mailOnlineTED发布的消息尤其令人振奋。交互式投影仪,顾名思义,首先它可以投影,这是输出的部分。它还可以输入才可以称得上交互。如何完成输入呢?一般是通过摄像头。一家英国名为亮蓝光学Light Blue Optics的科技公司生产了一种名为Light Touch的交互式投影仪,它可以在任何一个平面上投影出一个10英寸左右的触摸屏。它的触摸输入的实现,通过的是红外扫描功能。

Light Touch可以很轻松的实现人机互动,实现包括各类twitter,facebook,skype等网络服务

Light Touch可以很轻松的实现人机互动,实现包括各类twitter,facebook,skype等网络服务

[......]

Read more

Tags: , , ,