我是编程的初学者,并尝试使用python进行数据分析。我有一些配对末端测序的fastq文件,其中每个读数(数据)都有一个补充读数,这是它进行分析所必需的。
我编写了以下代码来选择质量得分超过30的读取。它适用于小文件(我测试过1 GB)但是当我尝试在实际大小的数据上使用时,30 GB,它给我空文件作为结果。谁能告诉我这是什么问题?谢谢!
P.S。代码中提到的average()函数非常有效。我只是为了这个空间而在这里跳过它。
#enter name of the forward source file here
y=open("file1", "r")
lenght=0
for line in y:
lenght+=1
y.close()
import re
s=0
p=4
#enter name of the forward destination file here
h=open("result1", "w")
#enter name of the reverse destination file here
k=open("result1_complementary", "w")
for turn in range(lenght/4):
#enter name of the forward source file here
a=open("file1", "r")
c=a.readlines()[s:p]
#enter name of the reverse source file here
d=open("file1_complementary", "r")
g=d.readlines()[s:p]
for line in c:
#enter the begining of the index line here
if re.search(r"^@ABC",line):
#enter the cutting Phred score here
if average(c[c.index(line)+3])<30:
del c[0:4]
del g[0:4]
for line in g:
if re.search(r"^@HWI-", line):
if average(g[g.index(line)+3])<30:
del g[0:4]
del c[0:4]
for line in c:
h.write(line)
for line in g:
k.write(line)
s+=4
p+=4
a.close()
d.close()
h.close()
k.close()
答案 0 :(得分:0)
感谢大家的评论!我使用了 readline()的迭代而不是 readlines()[s:p] ,并且它运行得很好。