Building Fmat and Tmat. Obtaining final alignment from traceback walkback
This commit is contained in:
parent
e297e98c04
commit
6e7a55ea6d
@ -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.
Loading…
x
Reference in New Issue
Block a user