1

非常に大きな fasta ファイルが 2 つあり、どちらも約 2GB です。いくつかのシーケンスが同じ名前を共有しているため、次のようになります。

R1.fasta で:

">ABC001 ACTGTGTCGTG

">ABC003 ACTGTGTCGTG

">ABC005 ACTGTGTCGTG

">ABC010 ACTGTGTCGTG

そしてR2.fastaで

">ABC002 ACTGTGTCGTG

">ABC003 ACTGTGTCGTG

">ABC005 ACTGTGTCGTG

">ABC009 ACTGTGTCGTG

2 つのファイル間で共有されているシーケンスを見つけて、新しい fasta ファイルに書き込み、2 つのシーケンスをギャップで結合できるようにしたいので、新しいファイルは次のようになります。

">ABC003 ACTGTGTCGTG-----ACTGTGTCGTG

">ABC005 ACTGTGTCGTG-----ACTGTGTCGTG

このジョブを実行するための Python スクリプトを作成しましたが、実行速度が非常に遅くなりました。これを行うためのより速い方法があるかどうか疑問に思います。ありがとう!コードは次のようになります。

from Bio import SeqIO
from Bio.Seq import Seq

R1 = 'L008_R1.forward.trim.fasta' #input R1 file
R2 = 'L008_R2.reverse.trim.fasta' # input R2 file
R  = 'Gap20.L008.R1.fasta' #output joined fasta

n1 = 0
n2 = 0

for rec1 in SeqIO.parse(R1, 'fasta'): #exam every record in R1 file one by one
    n1 = int(rec1.id[5:]) 
    r = rec1 
    for rec2 in SeqIO.parse(R2,'fasta'): 
        n2 = int(rec2.id[5:]) 
        if n1 == n2: 
            seq = rec1.seq+'--------------------'+rec2.seq 
            r.seq = seq 
            output =  open(R, 'aw') # write to a new fasta file
            SeqIO.write(r, output, 'fasta')
            break
        elif n1 < n2: 
    else: pass
4

1 に答える 1