二代测序fastq文件太大,解压,压缩很浪费时间。
常规:使用gzip gunzip单线程压缩
进阶1:python调用threading,多线程压缩,相当于开了N个窗口进行解压和压缩,略。
进阶2:使用pigz,unpigz调用多核cpu压缩和解压。
实测:import os
import time
a= time.time()
#os.system('gunzip 1-Input_sequence_R2.fastq.gz') # 89s
#os.system('./unpigz -p 4 1-Input_sequence_R2.fastq.gz') #37s
#os.system('gzip 1-Input_sequence_R2.fastq') # 1200s
#os.system('./pigz -p 4 1-Input_sequence_R2.fastq') # 292s
b=time.time()
print b-a
调用4核,一个10g的fastq文件,gzip压缩用了1200s,而pigz用了292s,3倍多
gzip解压用了89s,unpigz解压用了37s,接近3倍
终极版:python的threading+pigz的-p,把cpu全用了。
对于6个文件的压缩,可以调用6*4=24核,应该能快个3倍多,节省时间。
A parallel implementation of gzip for modern multi-processor, multi-core machines
PS:为什么不用各种专门压缩软件?
例如,这里的一大堆:
1,专用软件,安装麻烦
2,客户还得安装
3,参数太复杂,没有pigz 方便
转载本文请联系原作者获取授权,同时请注明本文来自陈明杰科学网博客。
链接地址:http://wap.sciencenet.cn/blog-707141-1176120.html
上一篇:[转载]python解压压缩包的几种方法
下一篇:[转载]chromedriver与chrome版本映射表