簡體   English   中英

為什么我的代碼在小文件上能很好地工作而在大文件上卻不能?

[英]why my code works well on small files but not large ones?

我是編程的初學者,並且嘗試使用python進行數據分析。 我有一些配對末端測序的fastq文件,其中每個讀取(數據)都有一個互補的讀取,這是分析需要的。

我編寫了以下代碼,以選擇質量得分超過30的讀取。它在小型文件(我已測試高達1 GB)上運行良好,但是當我嘗試在30 GB的實際大小數據上使用它時,給我空文件作為結果。 有人可以告訴我問題是什么嗎? 謝謝!

PS代碼中提到的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()

感謝大家的意見! 我使用readline()而不是readlines()[s:p]進行迭代,並且效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM