工欲善其事必先利其器
SRA Toolkit 是由美国国家生物技术信息中心(NCBI)提供的一组工具,专门用于处理 Sequence Read Archive(SRA)中存储的高通量测序数据。这个工具包包含了一系列命令行工具,用于检索、转换、处理和分析来自 SRA 的数据。其具有以下特性:
SRA数据库: Sequence Read Archive:隶属NCBI (National Center for Biotechnology Information),它是一个保存高通量测序原始数据以及比对信息和元数据 (metadata) 的数据库,所有已发表的文献中高通量测序数据基本都上传至此,方便其他研究者下载及再研究。其中的数据则是通过压缩后以.sra文件格式来保存的。
官网:
prefetch
是SRA Toolkit中的工具包中提供的一个专门用来下载SRR数据的工具
fasterq-dump
从 SRA 下载数据并将其转换为 FASTQ 格式的工具,比 fastq-dump
速度更快
一般我们推荐是从conda来安装管理软件,但是对于这个软件采用conda安装时,需要注意软件名是 sra-tools
,而不是 sratoolkit
不要安装错了。sratoolkit 也能安装上,但是版本是2.5.7,没有3.0版的 fasterq-dump
子命令
## 注意软件名也不是prefetch
conda install -y sra-tools
## conda install -c daler sratoolkit
最新版
版本较低
当然它也有二进制版本,安装也很简单
## 下载二进制安装
wget -c https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/3.0.7/sratoolkit.3.0.7-ubuntu64.tar.gz
tar -xf sratoolkit.3.0.2-ubuntu64.tar.gz
## 添加到环境变量
echo 'export PATH=/home/username/software/sratoolkit.3.0.7-ubuntu64/bin:$PATH ' >> ~/.bashrc
##下载数据
prefetch SRR000001
##提交后台下载(example)
nohup prefetch -O ~/project/b_rawdata SRR24304118 --max-size 50G 1>prefetch.log 2>&1 &
##转换sra文件为fastq
fasterq-dump SRR000001
##提交后台转换(example)
nohup fasterq-dump -O ~/project/b_rawdata/SRR24304118/ --split-files -e 8 --include-technical SRR24304118.sra 1>dump.log 2>&1 &
注意:执行提取前需要估计一下硬盘空间,最终转换的fastq文件会是 .sra
文件的7~8 倍左右。同时,转换过程中需要的临时空间大约是fastq文件的 1.5倍。所以整个转换过程,大概需要sra文件的17倍左右的空间。
可以通过下面的例子对比查看一下:
## example
### sra文件
9.1G 12月 4 17:42 SRR19904954.sra
##转换为 fastq 文件后
79G 12月 4 23:57 SRR19904954.fastq
关于转换后reads拆分的输出设置
--split-spot
: 将双端测序分为两份,但是都放在同一个文件中--split-files
: 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads直接丢弃--split-3
: 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads会单独放在一个文件夹里 其中 fasterq-dump
reads拆分默认是 split-3split-3
split-spot
split-files
prefetch 可选参数
--max-size 设置最大下载文件大小,默认所20G
--max-size u 设置为u,则下载大小不设限制
-T:指定要下载的文件类型,默认为 sra
-t:指定传输方式,默认是both ;可以选择 http(传统的HTTP下载)、fasp(高速传输协议) 或 both(优先尝试fasp,如果无法使用fasp则使用http)。其中,fasp 使用 aspera connect(ascp)进行快速传输
-f:强制对象下载的选项,可以选择 no、yes、all 或 ALL ,(默认为no);
no:跳过已存在的对象;
yes:即使已存在也强制下载
-r:是否允许断点续传,可以选择 yes 或 no(默认为 yes)
-C:下载后验证文件的完整性,可以选择 yes 或 no(默认为yes)
-a:指定 ascp 程序和私钥文件的路径
--ascp-options <value>:传递给 ascp 命令行的任意选项
-o:指定输出文件的名称
-O:指定输出目录
fasterq-dump 可选参数
-F:指定输出格式。默认为FASTQ。可以选择特殊格式(special)或FASTQ格式
-f:强制覆盖现有文件
-o:指定输出文件的名称
-O:指定输出目录
-t:指定临时文件的位置,默认为当前目录。
-e:指定线程数量,默认为6个线程。
-p:显示进度。
-x:打印详细信息。
-s|--split-spot:见上文
-S|--split-files:见上文
-3|--split-3:见上文
--include-technical:包含技术性reads(如果不加这个参数是不会分解出来index和barcode文件)
--fasta:生成FASTA格式的输出
--fasta-unsorted:生成未排序的FASTA输出。
fastq-dump 可选参数
-O:指定输出位置
-Q:质量转换偏移量,默认为33
--gzip:使用gzip压缩输出
--bzip2:使用bzip2压缩输出
--split-spot: 见上文
--split-files: 见上文
--split-3 : 见上文
--skip-technical:多标签序列,如果你原来建库测序使用了多个标签来区分序列, 默认不会输出这个标签。但是如果不输出标签,我们怎么区分呢? 所以一定要显示声明
--fasta:指定解压成fasta格式,默认是fastq格式
有两个子命令可以实现 sra 转换为 fastq,分别是fastq-dump
和 fasterq-dump
, 但是fastq-dump 拆分非常慢,一般不建议使用
我们简单来对比一下fastq-dump和fasterq-dump的速度差异
##下载
prefetch SRR19904954 --max-size u
#下载耗时(m:ss):24:03.53
##转换sra文件为fastq
fasterq-dump -S SRR19904954/SRR19904954.sra -O ./fasterq_out/
#faster-dump转换耗时(m:ss):4:42.89
##设定多线程转换
fasterq-dump -O ~/project/b_rawdata/SRR24304118/ --split-files -e 8 --include-technical SRR24304118.sra
##旧版本,速度很慢
fastq-dump --split-files SRR19904954/SRR19904954.sra
#fastq-dump转换耗时(m:ss):20:02.63
##转换同时采用gzip压缩输出
fastq-dump --gzip --split-files -O ./gz_out/ ./SRR19904954/SRR19904954.sra
##耗时(h:mm:ss): 2:23:06
可以明显看到 fastq-dump
的速度是远远慢于 fasterq-dump
的,而且fasterq-dump
还可以自定义多线程(不过需要注意,一次性不要提交太多任务,避免把服务器IO占完)
## 直接下载fastq
###查询 SRR 预存路径
srapath SRR19904954
# https://sra-download.ncbi.nlm.nih.gov/srapub/SRR000001
fasterq-dump -S SRR19904954
##或者
fastq-dump --split-files SRR19904954
测试过程中,直接下载fastq速度也是非常慢(同样的文件,8~9个小时还没处理完),不如采用先下载再转换来的快。
#方法一:
##首先要创建一个SRR号的列表文件,也可以直接下载
$cat srr_acc_list.txt
SRR11182006
SRR11182007
SRR11182008
SRR11182009
SRR11182010
SRR11182011
SRR11182012
##批量循环下载
prefetch -O /home/project/b_rawdate4 --option-file /home/project/b_rawdate4/srr_acc_list.txt --max-size u 1>down.log 2>&1
##批量后台循环下载(因为下载时间比较久,建议放后台下载)
nohup prefetch -O /home/project/b_rawdate4 --option-file /home/project/b_rawdate4/srr_acc_list.txt --max-size u 1>down.log 2>&1 &
##方法二:并行下载
cat srr.list |while read id;do ( nohup prefetch --max-size u $id & );done
##循环转换
ls SRR*/*sra|while read id ; do (fasterq-dump -O /home/sc_learn/b_rawdata/ --split-files -e 8 --include-technical ${id} );done
参考: