私はタンパク質配列のマッチングアルゴリズムに取り組んでいます。私は整列したタンパク質配列から始めており、誤って整列した配列を正しく整列した配列に変換しようとしています。次に例を示します。
元の整列されたシーケンス:---- AB--CD -----
シーケンスのずれ:-A--BC --- D-
期待される出力は次のようになります。
元の整列されたシーケンス:---- AB--CD -----
シーケンスのずれ:---- AB--CD -----(両方とも同じになりました)
問題について非常に具体的に言われていますが、一致させようとしているシーケンスは4000文字を超えており、ここに貼り付けるとばかげているように見えます。ただし、私の問題を表す2つのシーケンスを投稿しますが、それで十分です。
seq="---A-A--AA---A--"
newseq="AA---A--A-----A-----"
seq=list(seq) #changing maaster sequence from string to list
newseq=list(newseq) #changing new sequence from string to list
n=len(seq) #obtaining length of master sequence
newseq.extend('.') #adding a tag to end of new sequence to account for terminal gaps
print(seq, newseq,n) #verification of sequences in list form and length
for i in range(n)
if seq[i]!=newseq[i]:
if seq[i] != '-': #gap deletion
del newseq[i]
elif newseq[i] != '-':
newseq.insert(i,'-') #gap insertion
elif newseq[i] == '-':
del newseq[i]
old=''.join(seq) #changing list to string
new=''.join(newseq) #changing list to string
new=new.strip('.') #removing tag
print(old) #verification of master-sequence fidelity
print(new) #verification of matching sequence
この特定のコードとシーケンスのセットから得られる出力は次のとおりです。
--- AA--AA --- A--
--- AA--A ---- A ----- A -----
ループの残りの反復はダッシュの追加とダッシュの削除のペアで使用されるため、文字の間にある不要なダッシュを複数回正しく削除するループを取得できないようです。
これは、ここでの問題の良いスタートです。
このループを正常に記述して、目的の出力(2つの同一のシーケンス)を取得するにはどうすればよいですか?