新浪博客

JGI批量下载基因组数据

2016-10-16 21:43阅读:
参考资料:http://genome.jgi.doe.gov/help/download.jsf
类似下载JGI数据的python脚本: https://github.com/glarue/jgi-query
0、背景
JGI本身提供API接口,但是对于一般物种,你很难直接获取API接口需要的organism信息,本人在下载基因组数据的过程中发现organism和基因组 ID之间存在对应关系,如一个物种的genome ID是2512564028,那么它的organism应该是IMG_2512564028,本文中批量下载就是利用这个对应关系而实现的。注:并不是所有genome ID都能下载到数据的。
1、首先注册JGI账号,用于下载数据。
请自行注册
2、下载你想下载物种的genome ID
比如可以通过https://img.jgi.doe.gov/cgi-bin/w/main.cgi 搜索Vibrio属下的细菌基因组,在搜索结果界面勾选想下载的物种或者株系,然后exprot 导出保存为xls格式的如Vibrio.xls
3、用下面的脚本执行下载
perl down_genome_from_jgi.pl Vibrio.xls
###### 代码如下#####
#!/usr/bin/env perl
#script name: down_genome_from_jgi.pl
use strict;
use warnings;
use Getopt::Long;
die 'perl $0 -cookies yes|no $0 ' if $#ARGV<0;
my($cookies);
Get
Options('cookies=s'=>\$cookies);
my $user='你的JGI用户名“;#替换用户名
my $passwd='你的JGI密码“;#替换密码
`curl 'https://signon.jgi.doe.gov/signon/create' --data-urlencode 'login=$user' --data-urlencode 'password=$passwd' -c cookies > login.log` unless $cookies eq 'no';
while(<>){
chomp;
next if /taxon_oid/;
next if /^$/;
my @line=split /\t+/;
my $specie_name='IMG_'.$line[6];
`curl 'http://genome.jgi.doe.gov/ext-api/downloads/get-directory?organism=$specie_name' -b cookies > xml 2>/dev/null`;
my($specie,$url)=&xml2url('xml',$specie_name);
`curl 'http://genome.jgi.doe.gov/ext-api/downloads/get_tape_file?blocking=true&url=$url' -b cookies -m 600 > $specie.tgz 2>/dev/null` if $url;
}
sub xml2url{
my ($xml,$spe)=@_;
open XML,$xml or die 'Failed to open xml: $!';
my $input=join('','<'XML'>'); # 排版问题,请把单引号去掉
if($input=~/label='(.+?)'.+?url=(\/IMG.+?tar\.gz).+?md5/m){
my $label=$1;
my $url=$2;
$label=~s/\s+/_/g;
$label=~s/[\(\)]/_/g;
`mv $xml $label.xml`;
return $label,$url;
}else{
`cp $xml $spe.xml` ;
}
}
##End##

我的更多文章

下载客户端阅读体验更佳

APP专享