前几天学习了KEGG API之后,感觉这个数据虽然好,但是还是有些局限性,比如它比较重视代谢途径而会遗漏其它信息。为了找到更完整的基因注解信息,同学为我介绍了GO(the Gene Ontology)数据库。如果想快速了解这个数据库能提供些什么有用的信息,可以去http://www.geneontology.org/GO.teaching.resources.shtml?all下载一些它的PPT来看,我想你就可以快速入门这个数据库了。
我还是想借一个例子,这样可以学习得更快些。于是我找到同学正规化后的microarray的数据文件,数据文件结构如下:
6.52141 | 5.97012 | 4.713238 | 5.817952 | 5.273331 | 5.403344 | S. cerevisiae YAL068C DB_XREF=GI:6319249 SEG=NC_001133:-1807,2169 DEF=Hypothetical ORF NOTE=Yal068cp; go_component: cellular_component unknown [goid GO:0008372] [evidence ND]; go_function: molecular_function unknown [goid GO:0005554] [evidence ND]; go_process: biological_process unknown [goid GO:0000004] [evidence ND] |
2.576794 | 1.040928 | 2.99017 | 2.238229 | 1.156611 | -0.97394 | S. cerevisiae YAL067W-A DB_XREF=GI:33438754 SEG=NC_001133:+2480,2707 DEF=Identified by gene-trapping, microarray-based expression analysis, and genome-wide homology searching NOTE=Yal067w-ap; go_component: cellular_component unknown [goid GO:0008372] [evidence ND]; go_function: molecular_function unknown [goid GO:0005554] [evidence ND]; go_process: biological_process unknown [goid GO:0000004] [evidence ND] |
5.342398 | 3.893389 | 3.8628 | 4.812341 | 3.613805 | 5.167153 | S. cerevisiae YAL067C GEN=SEO1 DB_XREF=GI:6319250 SEG=NC_001133:-7236,9017 DEF=Putative permease, member of the allantoate transporter subfamily of the major facilitator superfamily; mutation confers resistance to ethionine sulfoxide NOTE=Seo1p; go_component: membrane [goid GO:0016020] [evidence ISS] [pmid 9348664]; go_function: transporter activity [goid GO:0005215] [evidence ISS] [pmid 9348664]; go_process: transport [goid GO:0006810] [evidence ISS] [pmid 9348664] |
1.042855 | 2.059001 | 2.746642 | 2.529637 | 2.384792 | 4.155811 | S. cerevisiae YAL065C GEN=SEO1 DB_XREF=GI:6319252 SEG=NC_001133:-11566,11952 DEF=Hypothetical ORF NOTE=Yal065cp; go_component: cellular_component unknown [goid GO:0008372] [evidence ND]; go_function: molecular_function unknown [goid GO:0005554] [evidence ND]; go_process: biological_process unknown [goid GO:0000004] [evidence ND] |
这个表格前面有六组数据,后面有一组对于这些数据的注释。这分别是六次实验结果处理后的整合。可以看到,在注释列当中,有[goid GO:xxxxxxx]的字样,这个就是Affymetrix公司提供的软件生成的带有GO数据库信息的注释。这个数据对于我们来说很有用。
这次的作业就是全面了解与掌握GO数据库的访问。首先对任意两个需要比较的列自动比较表达差异,对于差异在两倍以上的基因提取出来进行统计分析,并计算p_value。这个p_value的计算方法是依据文献:
Systematic determination of genetic network architecture.
Tavazoie S, Hughes JD, Campbell MJ, Cho RJ, Church GM.
Nat Genet. 1999 Jul;22(3):281-5.
大约就这样。
首先是了解如何能够连接到GO数据库。要连接到GO数据库需要mysql的支持,所以先安装mysql。先从http://dev.mysql.com/downloads/下载mysql的windows下安装文件,然后完成安装。安装完成之后它会要求你进行一些设置,这些设置其实设置不设置都不影响我们联接到GO数据库,但是我们必须把mysql的安装目录增加到系统PATH当中去。
完成了这些工作之后,我们可以测试联接了。打开一个cmd(DOS命令)窗口,输入
mysql -h mysql.ebi.ac.uk -u go_select -P 4085 -p
回车后会要求你输入密码amigo
Enter password: amigo
输入后会显示
mysql>
的提示符。在提示符后输入
use go_latest
回车后显示Database changed。基本上这就连接OK了。我们来测试一下是否可以正确的返回数据。在提示符后输入:
select count(*) from term;
注意这里最后要输入一个分号。回车后会显示在term这个列表中一共有多少行记录。我们可以看到返回的结果是
+———-+
| count(*) |
+———-+
| 29309 |
+———-+
1 row in set (0.30 sec)
我们知道,在term这个列表当中一共有29309条记录。基本上这个测试就成功了。我们接下来就是需要为perl安装DBD::mysql驱动了。
mysql>quit
Bye
在DOS下输入ppm就可以掉用perl的软件包安装管理器。从此以后我们一般使用ppm来安装软件。按Ctrl+1,查看所有安装包,(也可以点击那个灰色带钥匙的图标),找到DBD-mysql安装上。之所以要用ppm安装,其实是因为使用前面提到过的安装方式都没有办法正确安装之后才想到的。看来ppm是个好东西。安装完成之后,我们先来写个测试程序,
#!/usr/bin/perl use DBI; $username = 'go_select';$password = 'amigo';$database = 'go_latest'; $hostname = 'mysql.ebi.ac.uk';$port='4085'; $dbh = DBI->connect("dbi:mysql:database=$database;" . "host=$hostname;port=$port", $username, $password) or exit(1); $SQL= "SELECT * FROM term WHERE term.acc='GO:0016298'"; $sth = $dbh->prepare($SQL); $sth->execute(); while(@ary=$sth->fetchrow_array()) { print join("\t",@ary),"\n"; } $sth->finish(); $dbh->disconnect(); print "\nthis is the END"; exit(0); |
运行后返回结果如下:
10291 lipase activity molecular_function GO:0016298 0 0 0
this is the END
OK,我们得到结果了。说明联接没有问题。返回的这个结果是什么意思呢?数据从左到右分别为:
id name term_type acc is_obsolete is_root is_relation UNIOUE(acc)
好了,这些东西具体是什么,具体可以查GO的主页。
为了更好的了解GO数据库,必须了解其数据结构,下面的图有助于我们对整个库了解:
今天的作业就到此为止,改日继续。