Python 全局对齐序列

Python 全局对齐序列,python,Python,我正在做DNA序列的全局比对。我已经使用预定义的规则准备了一个全局对齐矩阵“C” 假设Seq1=[1,1,4,4,1]和Seq3=[1,1,4,1] 路径的图像。 如果Seq 1和2的元素匹配,则在对角线上加2,如果不匹配,则减去1 因此,可能的对齐输出为s1=AACCA和s2=a-ACA,不打印。从字典中引用的值未包含在s1和s2中。如果我在控制台中键入,s1=dict[Seq1[4]]+s1,我就可以在s1中添加字符“C”。然而,在将其放入while循环之后,它不会被添加到s1或s2中 #

我正在做DNA序列的全局比对。我已经使用预定义的规则准备了一个全局对齐矩阵“C”

假设Seq1=[1,1,4,4,1]和Seq3=[1,1,4,1]

路径的图像。 如果Seq 1和2的元素匹配,则在对角线上加2,如果不匹配,则减去1

因此,可能的对齐输出为s1=AACCA和s2=a-ACA,不打印。从字典中引用的值未包含在s1和s2中。如果我在控制台中键入,
s1=dict[Seq1[4]]+s1
,我就可以在s1中添加字符“C”。然而,在将其放入while循环之后,它不会被添加到s1或s2中

# Global Alignment
import numpy as np
Set = [1,2,3,4]
#defining DNA characters as 1,2,3,4
dict = {1:'A', 2:'T', 3:'G', 4:'C'}
Seq1 = [1,1,4,4,1]
Seq3 = [1,1,4,1]

#Assigning values to Mismatch, Gap and Match
Mismatch = -1
Match = 2 
Gap = -1

#Global Alignment Matrix
m = len(Seq1)
n = len(Seq3)
C = np.array([[0 for j in range(n+1)] for i in range (m+1)]) # Creating a zero matrix
for i in range(0,m+1):
    C[i][0] = i * Gap
for i in range(0,n+1):
    C[0][i] = i * Gap

for i in range(0,m):
    for j in range(0,n):
        if Seq1[i] == Seq3[j]:
            C[i+1][j+1] = C[i][j] + Match
        else:
            C[i+1][j+1] = max(C[i][j] + Mismatch, C[i+1][j] + Gap, C[i][j+1] + Gap)

# From here values are not getting included in s1 and s2 after being referenced from dictionary
s1 = ""
s2 = ""
i = len(Seq1)
j = len(Seq3)

while (not(i != -1 or j != -1)):
    if (C[i][j] == C[i-1][j-1] + Match): 
        s1 = dict[Seq1[i-1]] + s1
        s2 = dict[Seq3[j-1]] + s2
        i=i-1
        j=j-1
    elif (C[i][j] == C[i-1][j-1] + Mismatch):
        s1 = dict[Seq1[i-1]] + s1
        s2 = dict[Seq2[j-1]] + s2
        i=i-1
        j=j-1
    elif (C[i][j] == C[i][j-1] + Gap):
        s1 = dict[Seq1[i-1]] + s1
        s2 = '-' + s2
        i=i-1   
    elif (C[i][j] == C[i-1][j] + Gap):
        s1 = '-' + s1
        s2 = dict[Seq3[j-1]] + s2
        j=j-1

在回溯的末尾更改了代码,但s1和S20中仍然没有包含值。您需要使用回溯来包含完整的错误消息。查看更多提示。