Building Fmat and Tmat. Obtaining final alignment from traceback walkback

This commit is contained in:
Noah L. Schrick 2022-11-17 01:31:38 -06:00
parent e297e98c04
commit 6e7a55ea6d
2 changed files with 38 additions and 0 deletions

View File

@ -49,3 +49,41 @@ Fmat[1,]<- seq(from=0,len=y.len+1,by=-abs(gap_penalty))
Tmat[,1]<- rep(2,x.len+1) # 2 means align with a gap in the upper seq Tmat[,1]<- rep(2,x.len+1) # 2 means align with a gap in the upper seq
Tmat[1,]<- rep(3,y.len+1) # 3 means align with a gap in the side seq Tmat[1,]<- rep(3,y.len+1) # 3 means align with a gap in the side seq
#### Part C: Building Fmat and Tmat
## Building Fmat and Tmat
for (i in 2:nrow(Fmat)){
for (j in 2:ncol(Fmat)){ # use F recursive rules
test_three_cases <- c(Fmat[i-1, j-1] + S[rownames(Fmat)[i], colnames(Fmat)[j]], # 1 mis/match
Fmat[i-1, j] + gap_penalty, # 2 up-gap
Fmat[i, j-1] + gap_penalty) # 3 left-gap
Fmat[i,j]=max(test_three_cases)
Tmat[i,j]=which.max(test_three_cases)
}
}
final_score <- Fmat[nrow(Fmat),ncol(Fmat)]
## Aligning from Tmat
n <- nrow(Tmat)
m <- ncol(Tmat)
seq_align <- character()
while( (n+m)!=2 ){
if (Tmat[n,m]==1){
curr_align_col <- rbind(x[n-1],y[m-1])
seq_align <- cbind(curr_align_col,seq_align)
n <- n-1
m <- m-1
}else if(Tmat[n,m]==2){
curr_align_col <- rbind(x[n-1],"-")
seq_align <- cbind(curr_align_col,seq_align)
n <- n-1
}else{
curr_align_col <- rbind("-",y[m-1])
seq_align <- cbind(curr_align_col,seq_align)
m <- m-1
}
} # end while
seq_align

Binary file not shown.