都8102年了,还用fastq-dump,快换fasterq-dump吧-阿里云开发者社区

开发者社区> 云计算> 正文

都8102年了,还用fastq-dump,快换fasterq-dump吧

简介: 之前写过一篇文章Fastq-dump: 一个神奇的软件, 详细介绍了fastq-dump的用法。 虽然fastq-dump参数很多,而且一直被吐槽参数说明写的太差,但是如果真的要用起来其实也就是一行代码 fastq-dump --gzip --split-3 --defline-qual '+' --defline-seq '@$ac-$si/$ri' SRRXXXXX| SRRXXXX.sra # 加上--gzip后需要时间进行文件压缩 当然除了参数问题,还有一个让人诟病的地方就是他只能单个线程,所以速度特别的慢。

之前写过一篇文章Fastq-dump: 一个神奇的软件, 详细介绍了fastq-dump的用法。
虽然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 

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

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

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

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

从用户模式(user mode)来看, 两者的总CPU使用时间都差不多是560秒,从内核模式来看(Kernel Mode)来看,fasterq-dump花了更多时间在调用底层硬件上,例如分配内存地址。fastq-dump基本上稳定在一个线程,而fasterq-dump尽管指定了20个线程,但平均只用了11.5个线程吧。

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

最后还有一点不足之处:输出的fastq的ID目前暂时没有选项可以调整,需要自己写个脚本解决。

img_5bd8249a58f3fa7fd04726b1787af2ae.png
ID

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章