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)抛砖引玉,其他模块的方法就不演示了。

使用ensembl的API下载数据相关推荐

  1. 如何安装kaggle API下载数据 及报错OSError: Could not find kaggle.json. Make sure it‘s located in /home/user/解决办法

    如何安装kaggle API下载数据 及报错OSError: Could not find kaggle.json. Make sure it's located /解决办法 C:\Users\pc& ...

  2. python调用ECMWF欧洲中心api下载数据

    这里只做简单介绍,详细步骤见https://software.ecmwf.int/wiki/display/WEBAPI/Access+ECMWF+Public+Datasets 1.安装欧洲中心py ...

  3. python--从入门到实践--chapter 15 16 17 生成数据/下载数据/web API

    1.随机漫步 random_walk.py from random import choice class RandomWalk():def __init__(self, num_points=500 ...

  4. json里面的list数据取不出来_[工具]用kaggle API下载数据集

    操作平台:colab 由于是在colab,需要先mount google drive from google.colab import drive drive.mount('/content/gdri ...

  5. python ASF API下载Sentine-1数据

    说明:采用ASF API查询哨兵一号数据,后续仿照ASF网页中批量下载数据的脚本构建下载链接和下载数据,下载最好开VPN,网速慢和网络中断会导致下载未完成就结束或者压缩包无法解压,建议下载完成后自行利 ...

  6. 【Python】使用CDS API下载ECMWF气候数据

    [Python]使用CDS API下载ECMWF气候数据 数据集简介 最近需要气象数据算东西,找到EC的数据~ECMWF是欧洲中期天气预报中心,他们的ERA模型提供全球的气象再分析和预报数据,最新的数 ...

  7. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

  8. 利用Python调用ECMWF欧洲中心API批量下载数据

    前段时间由于需要下载ECMWF(欧洲中期天气预报中心)的再分析数据,学习了如何利用Python调用ECMWF欧洲中心API进行批量下载.这种下载ECMWF数据的方法在官网上有非常详细的介绍.我只是对这 ...

  9. 利用ECMWF的api批量下载数据,及下载效率问题(已解决)

    利用ECMWF的api批量下载气象数据,及下载效率问题(已解决) 最近在下载数据,遇到并解决了一些问题,比如如何利用api批量下载数据,以及关于下载的速度等等. 以S2S数据为例进行说明. 下载S2S ...

  10. 具有外部Zookeeper集成并使用SOLRJ API访问数据的SOLR cloud 7.4集群配置

    SOLR是最流行且高度可扩展的搜索引擎之一,它基于分布式索引技术运行. Solr索引几乎可以基于任何类型的数据源(CSV数据或XML数据或从RDBMS数据库或标准文件系统中提取的数据)构建. 对于以R ...

最新文章

  1. Blender终极角色创造:从初学者到专业人士
  2. 第十六届全国大学生智能车竞赛线上赛点赛道审核 - 浙江赛区
  3. nodejs常用指令
  4. 【笔记】 感受野与权值共享 摄像头标定 相机坐标与世界坐标
  5. LeetCode Find the Duplicate Number 找重复出现的数(技巧)
  6. 介绍Android 与 GPhone的书籍
  7. 高效的SQLSERVER分页查询
  8. 数据中心网络架构的问题与演进 — 传统路由交换技术与三层网络架构
  9. Win10系统怎么看隐藏文件夹
  10. foundation 数组NSArray学习
  11. CNN 卷积神经网络结构转载
  12. Android PackageManagerService(三)pm命令安装流程详解
  13. 利用vbs脚本实现自动发送微信消息
  14. EXCEL表格将两列数据进行排列组合
  15. c++设计某小型公司的 employee(人员)类
  16. 人的肢体语言个人总结
  17. hdu 4311 4312 Meeting point 曼哈顿距离之和最小
  18. 新生代公链再攻「不可能三角」
  19. linux学习教程-硬盘介绍和磁盘管理v11
  20. vs2017和vs2019专业版和企业版

热门文章

  1. 40行代码的Python爬虫案例:虎牙-王者荣耀主播的人气排行
  2. 办公环境计算机配置参数,联想昭阳e43a配置参数大揭秘
  3. 如何用计算机做大爆炸模拟,法国完成首个宇宙结构计算机模型 模拟大爆炸至今...
  4. uniapp h5 腾讯地图根据经纬度显示位置,并打开手机导航
  5. springboot项目运行错误‘com.wei.service.UserService‘ in your configuration
  6. 一个优秀的网站首页是如何设计的?
  7. Excise_day04Array
  8. 电商搜索里都有啥?详解闲鱼搜索系统(长文)
  9. 真正优秀的人,更懂得尊重别人
  10. Joomla 一个实例建站过程