SRA数据下载
0.简介
主要讲如何通过利用aspera快速下载sra数据。
1.数据搜寻
一般大多数还是习惯在NCBI上检索数据,比如我随便搜索一个拟南芥的SRA数据。
SRR627952:
但是一般下载还是在EBI上下,EBI和NCBI SRA号是通用的。EBI下载界面比NCBI人性化很多,(2023年更新:NCBI现在也进化了很多),但重点是EBI可以直接通过Aspera快速下载。
最后还要判断是单端数据还是双端数据,这点很重要。单端是single。
2.Aspera
首先是要获取这个fastq数据在EBI的存储地址,一个perl脚本搞定:
perl get_sra_address.pl
-i SRA号
-l SRA号 list
-s 单端数据要加 -s
-a 下载数据目标地址,默认是当前目录(.)
两种使用方法
1.第一种你只下一个数据,只有一个SRA号,以单端数据SRR627952为例:
perl get_sra_address.pl -i SRR627952 -s
2.你有很多SRA号,这样一个一个输入就不方便,那么你可以将所有SRA号写入一个list文件
perl get_sra_address.pl -l list.txt
注意这个list只能都是单端数据或者都是双端数据,都是单端加 -s,双端不用加
具体脚本如下,如果Aspera的安装地址不是默认,那么要自行修改代码的$key部分
#get_sra_address.pl
#get_sra_address.pl
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my ($in,$list,$help);
my $address=".";
our $single;
GetOptions(
"in=s" =>\$in,
"list=s" =>\$list,
'single!' => \$single,
'address=s' =>\$address,
"help|h" =>\&USAGE,
)or USAGE();
sub USAGE{
my $usage=<<"USAGE";
USAGE:
$0
输入sra号获得ascp下载地址
-i 单独输入一个sra号
-l 输入sra号列表
-a 数据下载地址 (.)
-s single 输入的是单端测序数据
USAGE
print $usage;
exit;
}
if($in){
getaddress($in);
}
if($list){
open LI,"$list"or die "Cannot find the specified list file";
while(my $line =<LI>){
chomp($line);
getaddress($line)
}
}
sub getaddress{
my $id=$_[0];
my $key='~/.aspera/connect/etc/asperaweb_id_dsa.openssh';
my $len=length($id);
my $six=substr($id,0,6);
my $sub=$len-9;
my $n=substr($id,-$sub,$sub);
my $m=3-$sub;
my $a='0' x $m;
if($single){
if($len == 9){
print "ascp -QT -l 200m -P 33001 -k1 -i $key era-fasp\@fasp.sra.ebi.ac.uk:/vol1/fastq/$six/$id/$id.fastq.gz $address\n";
}elsif($len >9){
print "ascp -QT -l 200m -P 33001 -k1 -i $key era-fasp\@fasp.sra.ebi.ac.uk:/vol1/fastq/$six/$a$n/$id/$id.fastq.gz $address\n";
}
}else{
if($len == 9){
print "ascp -QT -l 200m -P 33001 -k1 -i $key era-fasp\@fasp.sra.ebi.ac.uk:/vol1/fastq/$six/$id/$id\_1.fastq.gz $address\n";
print "ascp -QT -l 200m -P 33001 -k1 -i $key era-fasp\@fasp.sra.ebi.ac.uk:/vol1/fastq/$six/$id/$id\_2.fastq.gz $address\n";
}elsif($len >9){
print "ascp -QT -l 200m -P 33001 -k1 -i $key era-fasp\@fasp.sra.ebi.ac.uk:/vol1/fastq/$six/$a$n/$id/$id\_1.fastq.gz $address\n";
print "ascp -QT -l 200m -P 33001 -k1 -i $key era-fasp\@fasp.sra.ebi.ac.uk:/vol1/fastq/$six/$a$n/$id/$id\_2.fastq.gz $address\n";
}
}
}