NCBI批量下载SRA文件并用SRA Toolkit提取Fastq文件

准备工作:先下载安装IDM(百度:internet download manager,收费软件,有绿色汉化版),IDM支持断点续传和多线程,并且可以自建下载队列批量下载,非常适合高通量数据下载:

通过NCBI搜索关键词查询自己感兴趣的bioproject
下载.png
打开感兴趣的project选择SRA链接打开
下载2.png
打开SRA的详细信息,选择sendto file 然后选run_info 下载csv格式的相关信息
下载3.png
下图是CSV文件可以用excel打开,选取里面的download path 一列复制
下载4.png
在IDM(internet download manager),点击开始菜单==>从剪切板导入==>自动打开如下窗口,红框根据自己修改
下载5.png
可以专门自定义下载队列,点击加号创建,点击开始执行队列即可
下载6.png
可以在左侧列表选择队列点击右键开始或者点击上面的菜单都可以。如果序列较多网速不够快可以睡觉去了。
下载7.png
建议:带宽有限的情况下不要同时下载太多SRA文件,一次下载一个就可以。

SRA Toolkit提取Fastq

sra toolkit是ncbi上将 .sra文件转换为 .fstaq.gz文件的工具。
1.下载/调用 SRA Toolkit
可以直接在linux里在线下载,要根据自己的系统选择合适的安装版本。我查看了一下主机的linux为redhat类型,没找到这个类型的版本,又去服务器看了一下其他人的sratoolkit版本,都是centos_linux,因而选择这个版本应该是合适的。

wget  https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/2.9.2/sratoolkit.2.9.2-centos_linux64.tar.gz

下载好之后解压:

 tar xzvf sratoolkit.2.9.2-centos_linux64.tar.gz
#注意设置环境变量

fastq-dump 为该toolkit的一个子程序
虽然[fastq-dump】参数很多,而且一直被吐槽参数说明写的太差,但是如果真的要用起来其实也就是一行代码


fastq-dump  --gzip --split-3  --defline-qual '+'  --defline-seq '@$ac-$si/$ri' SRRXXXXX| SRRXXXX.sra

 ##### 加上--gzip后需要时间进行文件压缩

当然除了参数问题,还有一个让人诟病的地方就是他只能单个线程,所以速度特别的慢。尽管相对于下游分析要分析好几天而言,这点时间还能能等的。但是能快一点总是好的,所以在2018年的6月份,sra-tools更新了一个新的sra解压工具,[fasterq-dump] a faster fastq-dump,它能利用临时文件和多线程加速从SRA文件提取FASTQ。

fasterq-dump的用法和fastq-dump一样,如下所示


fasterq-dump  --split-3 SRR5318040.sra -t /mnt/d/temp -e 24;
### -t 是临时文件夹位置,-e 24 是24线程

此外还有建立了GitHub Wiki提供使用教程,参见https://github.com/ncbi/sra-tools/wiki/HowTo:-fasterq-dump。

重点参数是-e|threads, 用于选择使用多少线程进行运行,默认是6个线程。 同时考虑到有些人容易着急,还提供了-p选项用于显示当前进度。

我用一个9G大小的SRA文件,分别以fastq-dumpfasterq-dump进行了测试。

fastq-dump  --split-3  -O test SRR5318040.sra 
# 558.76s user 41.36s system 101% cpu 9:51.82 total
fasterq-dump  --split-3 SRR5318040.sra -e 20  -o SRR5318040
# 582.70s user 121.06s system 1130% cpu 1:02.25 total

下载8.png

硬盘吞吐速度是多线程运行时的限制因素,强烈建议使用两块SSD,将读写进程分开可以极大提高速度。从运行情况看,多线程应该是将sra文件分成多块读入内存利用多线程并行处理。
从用户模式(user mode)来看, 两者的总CPU使用时间都差不多是560秒,从内核模式来看(Kernel Mode)来看,fasterq-dump花了更多时间在调用底层硬件上,例如分配内存地址。fastq-dump基本上稳定在一个线程,而fasterq-dump尽管指定了20个线程,但平均只用了11.5个线程吧。

对于我们而言,我们只要看最后的total部分,也就是实际花了多少时间。fastq-dump花了快10分钟,而fasterq-dump只需要1分钟,快了9倍多。

你可能感兴趣的:(NCBI批量下载SRA文件并用SRA Toolkit提取Fastq文件)