Ich versuche, den Smith-Waterman-Algorithmus für die lokale Sequenzausrichtung mit der affinen Gap Penalty-Funktion zu implementieren. Ich denke, ich verstehe, wie man die Matrizen einleitet und berechnet, die für die Berechnung der Ausrichtungswerte benötigt werden, aber ich weiß nicht, wie ich dann zurückverfolgen soll, um die Ausrichtung zu finden. Zur Erzeugung der drei Matrizen erforderlich Ich habe den folgenden CodeTraceback im Smith-Wateman-Algorithmus mit affiner Gap-Strafe
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)
Ich bin nicht sicher, ob ich eine einzelne Matrix für Zurückverfolgungs benötigen oder nur 1? Jede Klärung darüber, wie man von der Höchstpunktzahl in F zurückgeht, würde sehr geschätzt werden.
Versuchen Sie, den Algorithmus nur als Übung zu implementieren? Sie können Python-Implementierungen online finden. Beispiele: [1] (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), [vier] (http://forrestbao.blogspot.com/2007/09/smith-waterman-algorithm-in-process.html). –
danke für die Antwort, aber nur einer von diesen (zwei) enthält die affine Gap Penalty-Funktion, die ich wirklich bin. Leider liegt der Code darin ein wenig über mir, erst seit ein paar Monaten. – jonwells