아핀 갭 패널티 함수를 사용하여 로컬 시퀀스 정렬을위한 Smith-Waterman 알고리즘을 구현하려고합니다. 나는 정렬 점수를 계산하는 데 필요한 행렬을 시작하고 계산하는 방법을 이해하지만 정렬을 찾기 위해 역 추적하는 방법을 알지 못한다고 생각합니다. 필요한 3 행렬을 생성하려면 다음 코드를 사용하십시오.아핀 갭 페널티가있는 Smith-Wateman 알고리즘의 추적
for j in range(1, len2):
for i in range(1, len1):
fxOpen = F[i][j-1] + gap
xExtend = Ix[i][j-1] + extend
Ix[i][j] = max(fxOpen, xExtend)
fyOpen = F[i-1][j] + gap
yExtend = Iy[i-1][j] + extend
Iy[i][j] = max(fyOpen, yExtend)
matchScore = (F[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]])
xScore = Ix[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
yScore = Iy[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
F[i][j] = max(0, matchScore, xScore, yScore)
역 추적을위한 단일 행렬이 필요한지 확실하지 않습니까? F에서 최대 점수를 추적하는 방법에 대한 명확한 설명을 주시면 감사하겠습니다.
연습으로 알고리즘을 구현하려고합니까? Python 구현을 온라인에서 찾을 수 있습니다. 예 : [one] (https://github.com/alevchuk/pairwise-alignment-in-python), [two] (https://pypi.python.org/pypi/swalign/0.2), [three] (https://github.com/kevinakwok/bioinfo/tree/master/Smith-Waterman), [four] (http://forrestbao.blogspot.com/2007/09/smith-waterman-algorithm-in-process.html). –
답장을 보내 주셔서 감사 합니다만 그 중 하나 (2 개) 중 하나만이 제가 아는 affine gap penalty 기능을 포함하고 있습니다. 불행히도 그 코드는 저를 넘어서 조금 있습니다. 단지 2 개월 정도만있었습니다. – jonwells