我有几个fastq文件,平均有500.000.000行(125000.000个序列)。有没有一种快速读取这些fastq文件的方法。
我想做的是,读取每个序列并使用前16个序列作为条形码。然后统计每个文件中的条形码数量。
以下是我的脚本,耗时数小时:import os, errno
from Bio import SeqIO
import gzip
files = os.listdir(".")
for file in files[:]:
if not file.endswith(".fastq.gz"):
files.remove(file)
maps = {}
for file in files:
print "Now Parsing file %s"%file
maps[file] = {}
with gzip.open(file,"r") as handle:
recs = SeqIO.parse(handle,"fastq")
for rec in recs:
tag = str(rec.seq)[0:16]
if tag not in map[file]:
maps[file][tag] = 1
else:
maps[file][tag] += 1
我有250 GB内存和20个CPU,可以用于多线程。。。
谢谢。