문제의 Markov chain 표현을 사용하여 특정 하위 시퀀스의 정확한 확률을 얻을 수 있습니다. 체인을 구성하는 방법에 대한 세부 사항은 관심있는 특정 하위 시퀀스에 따라 다르지만이 작업을 수행하는 방법에 대한 몇 가지 예를 제공합니다.
A,T,C,GknWHaaa<kk+1 가능한 관심 국가 :
State 0State 1State 2State 3⋮State k−1State kW¯∩H0, W¯∩H1, W¯∩H2, W¯∩H3, ⋮W¯∩Hk−1,W.
θA+θT+θC+θG=1State 0n=0(k+1)×(k+1)위의 상태를 사용한 전이 확률을 나타내는 행렬. 관심있는 하위 문자열에 도달하지 않은 경우 각 전환으로 인해 한 단계 씩 하위 문자열에 더 가까이 가거나 특정 하위 문자열에 의존하는 이전 상태로 다시 설정할 수 있습니다. 부분 문자열에 도달하면 이는 체인의 흡수 상태이며, 관심있는 이벤트가 발생했음을 나타냅니다.
AAAAAA
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA1−θA1−θA1−θA1−θA0θA0000000θA0000000θA0000000θA0000000θA0000000θA1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
ACTAGC
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA−θC1−θA−θT1−θA1−θA−θC−θG1−θA−θC0θAθAθA0θAθA00θC00θC0000θT0000000θA0000000θG000000θC1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
nP(W|n)={Pn}0,kn<k
R
n
#Create function to give n-step transition matrix for n = 1...N
#We will use the example of the substring of interest "AAAAAA"
#a is the probability of A
#t is the probability of T
#c is the probability of C
#g is the probability of G
#N is the last value of n
PROB <- function(N,a,t,c,g) { TOT <- a+t+c+g;
a <- a/TOT;
t <- t/TOT;
c <- c/TOT;
g <- g/TOT;
P <- matrix(c(1-a, a, 0, 0, 0, 0, 0,
1-a, 0, a, 0, 0, 0, 0,
1-a, 0, 0, a, 0, 0, 0,
1-a, 0, 0, 0, a, 0, 0,
1-a, 0, 0, 0, 0, a, 0,
1-a, 0, 0, 0, 0, 0, a,
0, 0, 0, 0, 0, 0, 1),
nrow = 7, ncol = 7,
byrow = TRUE);
PPP <- array(0, dim = c(7,7,N));
PPP[,,1] <- P;
for (n in 2:N) { PPP[,,n] <- PPP[,,n-1] %*% P; }
PPP }
#Calculate probability for N = 100 for equiprobable outcomes
N <- 100;
a <- 1/4;
t <- 1/4;
c <- 1/4;
g <- 1/4;
PROB(N,a,t,c,g)[1,7,N];
[1] 0.01732435
AAAAAAn=1000.01732435