高通量的原始数据通常情况下会上传到NCBI的SRA(Sequence Read Archive)数据库。当我们需要用到这些数据的时候,就需要合适的方法来下载。
常见的下载方法:
很多教程建议使用 aspera 来实现高速下载,但是很多时候折腾配置了很久,结果下载并不稳定或者由于端口或者网络代理等原因没有能成功下载,并提示如下的错误:
ascp: Failed to open TCP connection for SSH, exiting.Session Stop (Error: Failed to open TCP connection for SSH)
NCBI也做出了如下声明:
As of early 2019, the SRA is starting to make use of additional forms of storage media, which are less useful over Aspera's fasp
protocol. Files stored in these media may not be accessible via ascp
and have triggered creation of some issues to report the problem.
即2019开始,SRA数据库的数据存储方式做出了改变,使用ascp来下载数据可能会带来其他的一些问题。
wget 等命令也是非常方便的下载工具。用它们来下载小数据是十分合适的,但是对于动辄以GB 甚至TB来计数的高通量数据,wget的优势就并不明显了。如果程序中断,或者网络原因下载中断,你又得重新下载。
同样,NCBI也指出了wget可能存在不能完整下载全部数据的问题。
There are several reasons why direct use of ascp
(or curl, wget, etc) is not recommended. The main reason is that they are likely to only retrieve a portion of the data required.
所以,最稳定最安心的方法是使用SRA Toolkit中的 prefect来下载。
下载安装SRA Toolkit:
https://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?view=software
下载二进制(binaries)版本,下载下来即可使用,不需要编译安装。
解压后加入环境变量。
使用 prefect 下载数据:
方法一:
直接指定Run编号进行下载,如:SRR1482462
prefetch SRR1482462
方法二:
批量下载一个Project的所有Run/Sample :
先进入其中一个run的页面,点击“All run”
然后点击“Accession List”,会下载一个名为“SRR_Acc_List.txt”的文件,这个文件里面有所有run的编号。
使用如下命令批量下载 (放入后台不中断下载:nohup cmd &
):
nohup prefetch -O . $(<SRR_Acc_List.txt) &
Note:
1. aspera 在下载其他数据库(如EBI)的数据时,仍然是十分不错的工具
2. 下载完之后,可以用如下命令批量解压:
for f in *.sra
do
nohup fastq-dump --split-3 $f &
done
3. 如果你有其他的更好的下载方法,欢迎留言或者私信后台交流~
参考:
https://github.com/ncbi/sra-tools
https://github.com/ncbi/sra-tools/wiki/HowTo:-Access-SRA-Data