都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后需要时间进行文件压缩

当然除了参数问题,还有一个让人诟病的地方就是他只能单个线程,所以速度特别的慢。尽管相对于下游分析要分析好几天而言,这点时间还能能等的。但是能快一点总是好的,所以在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目前暂时没有选项可以调整,需要自己写个脚本解决。

ID

推荐阅读更多精彩内容

  • NCBI-SRA和EBI-ENA数据库 SRA数据库: Sequence Read Archive:隶属NCBI ...
    dulunar阅读 15,587评论 0 52
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 141,653评论 20 609
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 8,868评论 2 48
  • 经常会遇到奇葩顾客,真是又可气又无语啊! 因为我们是销售电子产品的,所卖产品的价格都比较高,端午节放假三天,遇到三...
    静怡和然阅读 757评论 19 17
  • 《亲子日记》第六天 3月23日 星期五 晴 昨天晚上二宝睡的早,今天早早起床了,我被闹钟惊醒,起来...
    程文颖阅读 24评论 0 0