Я работаю над алгоритмом соответствия для последовательности белка. Я начинаю с выровненной последовательности белка, и я пытаюсь преобразовать неправильно выровненную последовательность в правильно выровненную. Ниже приведен пример:Пит-код для сопоставления последовательности белков
оригинал выровнен последовательности: ---- АВ - CD -----
неправильно выравненные последовательности: -А - БК --- 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
Выход я получаю от этого конкретного кода и множество последовательностей:
--- АА - АА --- A--
--- АА - А- --- A ----- A -----
Я не могу заставить цикл правильно удалить ненужные штрихи между буквами более одного раза, поскольку остальные итерации цикла используются в паре штрих-кода добавьте тире/удалить.
Это хорошее начало здесь.
Как можно написать эту петлю, чтобы успешно получить свой желаемый результат (две идентичные последовательности)
Там нет петли в этом код образца –
Спасибо, что указали это! Я думаю, что я потерял команду цикла в тасовании. – AHuck