Linux_learning生信分析流程

你真的知道如何下载生物信息学公众数据吗

2019-06-15  本文已影响11人  lakeseafly

随着测序技术的发展,每天都会有不少的测试数据上传到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
上一篇下一篇

猜你喜欢

热点阅读