Pairwise sequence alignment (simple)

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)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top