非常に大きな 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