随着测序技术的发展,每天都会有不少的测试数据上传到NCBI SRA等的数据库上,但是如果快速稳定的下载上传好的数据其实也是一门学问,今天就给大家总结一下,wget
的使用和SRA里面相关数据下载的方法,
wget的使用总结
如果你要下载一个文件,wget最简单的用法,当然就是:
wget http://xxx.xxx/filename
嗯简单得没有什么好说的,但是如果你要将整个文件夹里面的文件全部下载下来,这样的用法就不够用了。
那么我们可以怎么解决这个问题呢?这里给大家提供了两种解决办法,你可以为文件指定正则表达式,也可以在URL本身中放置正则表达式。当目录中存在大量文件但是,你只想获取特定格式的文件时(例如,fasta格式的文件),第一个方法会更加合适:
wget -r --no-parent -A 'bar.*.tar.gz' http://url/dir/
如果您有许多具有相同名称但位于不同目录中的文件,则第二个方法会更加适用:
wget -r --no-parent accept-regex=/pub/current_fasta/*/dna/*dna.toplevel.fa.gz ftp://ftp.ensembl.org
有时,如果您要下载一系列文件(并相应编号),则可以使用UNIX内置的扩展方式来下载:
wget http://xxxx/file_{1..10}.txt
# 这将会下载一系列的文件 file_1.txt, file_2.txt, file_3.txt, file_4.txt and file_5.txt
一些可能会用到的options:
-limit-rate=20k 速度限制为20KiB/s
##限制数据速率以避免影响其他用户访问服务器。
-spider 检查文件是否存在 ###如果你不想保存文件但只想知道它是否仍然存在。
-w 在此适用该option之后,在每个请求之间添加等待的秒数
###使用这个参数的原因是,不要使服务器过载。
-user= 设置用户名 ###wget将尝试使用提供的用户名登录。
-password= 使用密码 ####wget将使用此密码和您的用户名进行身份验证。
使用Linux命令进行SRA文件下载
如果你无法运行SRA工具包或任何其他程序来下载文件,你仍然可以使用Linux的内置命令,例如wget和curl。
使用wget:
wget http://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?cmd=dload&run_list=SRRNNNNNN&format=fastq
要么 curl:
curl -O http://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?cmd=dload&run_list=SRRNNNNNN&format=fastq
如果你有一个含有很多id的列表,你可以使用while循环简单地循环它:
while read line; do
wget http://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?cmd=dload&run_list=${line}&format=fastq;
done<list_of_ids
SRA文件下载的总结
介绍完比较基础的wget之后,就是该推文的重头戏,如何高速下载SRA文件?咱们日常用到的各种已经发表的测序数据,大部分都存储于NCBI SRA数据中。掌握该技能是所有生信工作者最基础的技能。
首先我们要将sra-tools下载好,
###点击下载网站,下载好你所需要的对应版本的sra-tools
https://github.com/ncbi/sra-tools/wiki/Downloads
fastq-dump 可以用来直接下载文件并生成fastq文件,使用方法也比较简单:
###直接fastq-dump加上你所需要下载的SRR序列号就好了
fastq-dump SRR1234567
但某些程序可能会抛出错误,说它无法处理这些fastq文件。为避免这种情况,我们可以采用原始格式(--origfmt)。另请注意,如果你批量下载文件,则可以通过以gzip格式(--gzip)压缩文件来节省大量空间。
使用Aspera Connect(ascp),高速下载文件
Aspera使用高速文件传输在现有WAN基础设施上快速传输大型文件和数据集。
首先要把ascp文件安装好:
## 点击下载网页,检查最新版的ascp,并进行下载 http://downloads.asperasoft.com/en/downloads/8?list
wget -qO- https://download.asperasoft.com/download/sw/connect/3.8.1/ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.tar.gz | tar xvz
## 安装
chmod +x ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.sh
./ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.sh
接着可以使用sra-tools中prefetch开始高速下载文件了:
prefetch --max-size 100G --transport ascp --ascp-path "/path/to/aspera/3.6.2/bin/ascp|/path/to/aspera/3.6.2/etc/asperaweb_id_dsa.openssh" SRRNNNNNN
如果你需要下载大批量的SRA文件你可以将SRR的ID存储于一个ID.list中,然后通过参数--option-file
,来通过指定文件来下载SRR文件。
这里prefetch会默认将SRA文件存到HOME directory中的ncbi文件夹中。一般来说HOME directory存储空间都是有限的,我们可能需要创建另一个目录和然后将软链接放到HOME中:
cd ~
mkdir -p /project/storage/your_dir/ncbi
ln -s /project/storage/your_dir/ncbi
当你运行它时,你将有一个ncbi在你HOME directory中,但数据实际存储在/project/storage/your_dir/ncbi
这里下载好的格式都是sra文件,可以使用fastq-dump命令将SRA文件转换成fastq格式。
for sra file in ~/ncbi/public/sra/*; do
fastq-dump --split-files --origfmt --gzip ${sra};
done