使用ensembl的API下载数据

来源:互联网 发布:c语言打印标准杨辉三角 编辑:程序博客网 时间:2024/05/19 05:37

Ensembl 是一项生物信息学研究计划,旨在开发一种能够对真核生物基因组进行自动诠释(automatic annotation)并加以维护的软件。该计划由英国Sanger研究所Wellcome基金会及欧洲分子生物学实验室所属分部欧洲生物信息学研究所共同协作运营(http://zh.wikipedia.org/wiki/Ensembl)。

Ensembl数据库本身提供了非常人性话的操作界面,可以很容易的通过Ensemble筛选到目标数据。但是当数据量比较大时,直接通过网页手动筛选变得不显示。为此Ensembl也提供了强大的perl API接口。通过API接口可以实现对数据的大批量处理。

----------------------------------------------

1)Perl API的安装(http://asia.ensembl.org/info/docs/api/api_installation.html)
   window下安装比较方便,直接下载4个需要的模块
  • ensembl
  • ensembl-compara
  • ensembl-variation
  • ensembl-functgenomics
   解压到本地目录,如:C:/src/
2)安装DBD::MySQL 包
   通过PPM搜索DBD-MySQL,安装
3)API模块的使用
   因为下载的ensembl包不在perl的标准库中,所以在使用这4个模块时需要特别声明:
   第一种方法就是在程序中加入 use lib "模块路径";第二种方法是在CMD中输入
     set PERL5LIB=C:srcbioperl-live;C:srcensemblmodules;C:srcensembl-comparamodules;C:srcensembl-variationmodules;C:srcensembl-functgenomicsmodules然后执行perl程序4)连接ensembl库(http://asia.ensembl.org/info/docs/api/core/core_tutorial.html)    use Bio::EnsEMBL::Registry;    print "link to DB...n";    Bio::EnsEMBL::Registry->load_registry_from_db(    -host => 'ensembldb.ensembl.org',    -user => 'anonymous',    -port => 5306);---------------------------------------------------5)从ensembl上获得ensembl ID     在ensembl上进行的许多搜索都需要ensembl ID,这个ID是ensembl给每个基因(序列)提供的类似access number之类的号。而一般情况下我们手里有的只是一个基因的名称,如COG6,那么怎么通过COG6基因名称获得ensembl ID。    use Bio::EnsEMBL::Registry;    print "link to DB...n";    Bio::EnsEMBL::Registry->load_registry_from_db(    -host => 'ensembldb.ensembl.org',    -user => 'anonymous',    -port => 5306);     my $gene_adaptor = $registry->get_adaptor( 'Human', 'Core', 'Gene' );   print “get data...n”;   my $gene = $gene_adaptor->fetch_by_display_label('COG6');   print $gene->stable_id(),"n";  6)搜索同源序列    ensembl提供了一整套判断直系和并系同源序列的方法,这里我们并不关心这种算法。我们关心的是提交一个序列后,怎么得到它的直系和并系同源序列。ensembl提供的模块是:Bio::EnsEMBL::Compara::DBSQL::DBAdaptor(http://asia.ensembl.org/info/docs/api/compara/compara_tutorial.html)代码如下:use Bio::EnsEMBL::Registry;use strict;use warnings;use ForkManager;                 #多进程下载my $pm = new Parallel::ForkManager(30);  #最大进程数30,极耗系统资源。CPU:50%,RAM:800M;print "Link to DB, Waiting...n";Bio::EnsEMBL::Registry->load_registry_from_db(    -host => 'ensembldb.ensembl.org',    -user => 'anonymous',    -port => 5306);    my $member_adaptor = Bio::EnsEMBL::Registry->get_adaptor('Multi', 'compara', 'Member');my $homology_adaptor = Bio::EnsEMBL::Registry->get_adaptor('Multi', 'compara', 'Homology');print "Download data from DB...n";open(F,"ens.txt");while(my $ID=<F>){    chomp $ID;    my($ID1,$ID2)=split(/t/,$ID);    $pm->start and next;                         #创建进程;    &GETSEQ($ID2);    $pm->finish;}$pm->wait_all_children;close(F);sub GETSEQ{    my($ID2)=@_;    my $fh;    my $member = $member_adaptor->fetch_by_source_stable_id('ENSEMBLGENE',$ID2);    my $homologies = $homology_adaptor->fetch_all_by_Member($member);    if(defined($homologies))    {    open($fh,">>$ID2.txt");        foreach my $homology(@{$homologies})        {    if($homology->description=~/one2one/)            {    my $member_attribute=$homology->get_all_Member_Attribute->[1];                my ($member, $attribute) = @{$member_attribute};                my $taxon=$member->taxon;                my $species= $taxon->binomial;$species=~s/ /_/;                my $slice_adaptor = Bio::EnsEMBL::Registry->get_adaptor($species, 'Core', 'Slice' );    #连接序列库;                my $slice = $slice_adaptor->fetch_by_gene_stable_id($member->stable_id);    #获得同源序列;                print $fh $member->stable_id,"t",$slice->seq(),"n";            }        }    }        my $slice_adaptor = Bio::EnsEMBL::Registry->get_adaptor('Human', 'Core', 'Slice' );    my $slice = $slice_adaptor->fetch_by_gene_stable_id($ID2);    print $fh $ID2,"t",$slice->seq(),"n";                    close($fh);    print $ID2,"n";}7)抛砖引玉,其他模块的方法就不演示了。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 户口地址变了驾照怎么办 拿了驾照没开车怎么办 免检的车在外地怎么办 2018年b2证扣3分怎么办 科一考试没去怎么办 上海房子卖了户口怎么办 贷款买房买房人不是贷款人怎么办 行驶证驾驶证都遗失了怎么办 c1增驾b2没考过怎么办 没驾照买车怎么办行驶证 广州车辆年审加装踏板怎么办 租车感觉违章了 怎么办 武汉驾照扣12分怎么办 驾驶证照片泡水不清楚怎么办 驾驶证过了180天怎么办 天津有公司执照怎么办落户 温州车在上海年审手续怎么办 广东小高考考了d怎么办 深圳开摩托抓到怎么办 深圳车卖了车牌怎么办 a1驾照时期过了怎么办 b1驾照扣了12分怎么办 北京的驾照换证怎么办 b2汽车驾驶证年审过期几天怎么办 上海驾照到期人在外地怎么办 交警开的罚单交不了怎么办 珠海交警微信交罚单扣分怎么办 驾驶证违法罚款单子没有了怎么办 转账密码输错3次怎么办 汽车违章扣6分怎么办 汽车扣了72分年检怎么办 汽车扣了50分怎么办 汽车扣了15分怎么办 汽车扣了27分怎么办 汽车扣了40分怎么办 行驶证掉了怎么办 异地 高速上没带驾驶证行驶证怎么办 身份证驾驶证行驶证都丢了怎么办 驾驶证年审过期一个月怎么办 柴油车辆年检尾气不合格怎么办 驾驶证过期了5天怎么办