> T
[1] "g" "c" "a" "c" "c" "c"
> sortedM
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] "$" "g" "c" "a" "c" "c" "c"
[2,] "a" "c" "c" "c" "$" "g" "c"
[3,] "c" "$" "g" "c" "a" "c" "c"
[4,] "c" "a" "c" "c" "c" "$" "g"
[5,] "c" "c" "$" "g" "c" "a" "c"
[6,] "c" "c" "c" "$" "g" "c" "a"
[7,] "g" "c" "a" "c" "c" "c" "$"
> L
[1] "$" "a" "c" "c" "c" "c" "g"
> R
[1] "c" "c" "c" "g" "c" "a" "$"
- 元の配列の末尾は、必ず、BW行列の最右列の第1行の文字
- これをスタートに、以下のプロセスで復元する
- 最右列のある文字を、元の文字列に当てはめた。この文字は、最右列の中にある同じ文字の中で、上から何番目にあるかを確認する
- 確認したら、i番目とする。最左の列にある、その文字のうち、上からi番目の文字の行に着目し、その行の最右列の文字を確認し、それを、復元中の文字列の末尾から一つ前に据える
- 以下、繰り返し
locR<-1
locL<-0
reT<-c()
for(i in 1:n){
reT<-c(R[locR],reT)
current<-reT[1]
print(reT)
tmpR<-which(R==current)
print(tmpR)
tmporder<-which(tmpR==locR)
print(tmporder)
tmpL<-which(L==current)
locR<-tmpL[tmporder]
}
reT
T
> reT
[1] "g" "c" "a" "c" "c" "c"
> T
[1] "g" "c" "a" "c" "c" "c"