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中。如果我在控制台中键入,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中 #
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中仍然没有包含值。您需要使用回溯来包含完整的错误消息。查看更多提示。