Alignment score matrix 계산을 위한 code 입니다.
서열 입력
s = "ACGC"
t = "GACTAC"
서열 길이 계산
m = len(s)
n = len(t)
빈 score matrix 만들기
# Create an empty alignment score matrix
sc_mat = []
for i in range(m+1):
sc_mat.append([])
for j in range(n+1):
sc_mat[-1].append(0)
첫 열 및 행의 값 계산하기
# First row
for j in range(n):
sc_mat[0][j+1] = sc_mat[0][j] - 1
# First column
for i in range(m):
sc_mat[i+1][0] = sc_mat[i][0] - 1
나머지 노드 값 계산하기
# remaining entries
for i in range(m):
for j in range(n):
# diagonal part
c1 = s[i]
c2 = t[j]
if c1 == c2:
sc_diag = sc_mat[i][j] + 1
else:
sc_diag = sc_mat[i][j]
# row (indel)
sc_r = sc_mat[i][j+1] - 1
# column (indel)
sc_c = sc_mat[i+1][j] - 1
# select the largest score
sc = max([sc_diag, sc_r, sc_c])
sc_mat[i+1][j+1] = sc
score matrix 출력하기
print(sc_mat)