我正在研究蛋白質序列的匹配算法。我從一個對齊的蛋白質序列開始,我試圖將一個錯誤排列的序列轉換成正確對齊的序列。下面是一個例子:蛋白質序列模式匹配python
原始對齊序列:---- AB - CD -----
未對齊的序列:--a - BC --- D-
預期的輸出應該是這樣的:
原來的排列順序:---- AB - CD -----
未對齊的序列:---- AB - CD ---- - (都是現在一樣)
我被告知是非常具體關於我的問題,但我想匹配的序列長度> 4000個字符,並且在粘貼時看起來很荒謬。不過,我會發布代表我的問題的兩個序列,而且應該這樣做。
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 -----
我似乎無法得到循環正確刪除字符之間不需要的破折號不止一次,因爲其餘的循環迭代被使用在添加短劃線/刪除短劃線對。
這是這裏問題的一個好開始。
我怎樣才能成功寫入該循環,以獲得期望的我的輸出(兩個相同的序列)
沒有環路在此代碼示例 –
感謝您指出了這一點!我想我在混洗中丟失了循環命令。 – AHuck