Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1.  
  2.  
  3. # FORWARD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.  
  5. # Symbols = c("A","T","C","G")
  6. # initProb = c(.65,.35)
  7. # transMatrix = matrix(c(.68,.55,.32,.45),2)
  8. # emissionMatrices=matrix(c(.25,.45,.11,.19,.14,.24,.47,.15),2)
  9. #
  10. States = c("1","2")
  11. Symbols = c("A","T","C","G")
  12. initProb = c(.72,.28)
  13. transMatrix = matrix(c(.57,.43,.56,.44),2)
  14. emissionMatrices=matrix(c(.37,.13,.21,.44,.22,.17,.20,.26),2)
  15. names(initProb) = States
  16. dimnames(transMatrix)= list(from=States,to=States)
  17. dimnames(emissionMatrices)= list(states=States,symbols=Symbols)
  18.  
  19.  
  20. hmm = list(States=States,Symbols=symbols,startProbs=initProb,transProbs=transMatrix,
  21. emissionProbs=emissionMatrices)
  22.  
  23. observation = c("G","T","T","C","G","A","T","G")
  24.  
  25. hmm$transProbs[is.na(hmm$transProbs)] = 0
  26. hmm$emissionProbs[is.na(hmm$emissionProbs)] = 0
  27. nObservations = length(observation)
  28. nStates = length(hmm$States)
  29. f = array(NA,c(nStates,nObservations))
  30. dimnames(f)= list(states=hmm$States,index=1:nObservations)
  31. # Init
  32. for(state in hmm$States)
  33. {
  34. f[state,1] =hmm$startProbs[state] * hmm$emissionProbs[state,observation[1]]
  35. }
  36. # Iteration
  37. for(k in 2:nObservations)
  38. {
  39. for(state in hmm$States)
  40. {
  41. temp2 = 0
  42. for(previousState in hmm$States)
  43. {
  44. temp = f[previousState,k-1] * hmm$transProbs[previousState,state]
  45. temp2 = temp2 + temp
  46. }
  47. f[state,k] = (hmm$emissionProbs[state,observation[k]]) * temp2
  48. }
  49. }
  50.  
  51.  
  52. observations = c("A","T","G","C","C","A","T","G")
  53. # Calculate forward probablities
  54. forwardProbabilities=f
  55. finalAnswer = sum(forwardProbabilities[,4])
  56. print(finalAnswer)
  57.  
  58. print(f)
  59. # final = sum(f[,4])
  60. # print(final)
  61. ###############################################################################
  62.  
  63. # BACKWARD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  64.  
  65. States = c("1","2")
  66. Symbols = c("A","T","C","G")
  67. initProb = c(.72,.28)
  68. transMatrix = matrix(c(.57,.43,.56,.44),2)
  69. emissionMatrices=matrix(c(.37,.13,.21,.44,.22,.17,.20,.26),2)
  70.  
  71.  
  72. names(initProb) = States
  73. dimnames(transMatrix)= list(from=States,to=States)
  74. dimnames(emissionMatrices)= list(states=States,symbols=Symbols)
  75.  
  76.  
  77. hmm = list(States=States,Symbols=symbols,startProbs=initProb,transProbs=transMatrix,
  78. emissionProbs=emissionMatrices)
  79.  
  80. observation = c("G","T","T","C","G","A","T","G")
  81.  
  82.  
  83. hmm$transProbs[is.na(hmm$transProbs)] = 0
  84. hmm$emissionProbs[is.na(hmm$emissionProbs)] = 0
  85. nObservations = length(observation)
  86. nStates = length(hmm$States)
  87. b = array(NA,c(nStates,nObservations))
  88. dimnames(b)= list(states=hmm$States,index=1:nObservations)
  89. # Init
  90. for(state in hmm$States)
  91. {
  92. b[state,nObservations] = hmm$startProbs[state] * hmm$emissionProbs[state,observation[1]]
  93. }
  94. # Iteration
  95. for(k in (nObservations-1):1)
  96. {
  97. for(state in hmm$States)
  98. {
  99.  
  100. temp2 = 0
  101. for(nextState in hmm$States)
  102. {
  103. temp = b[nextState,k+1] * hmm$transProbs[state,nextState]*hmm$emissionProbs[nextState,observation[k+1]]
  104. temp2 = temp2 + temp
  105.  
  106. }
  107. b[state,k] = temp2
  108. }
  109. }
  110.  
  111. print(b)
  112. backwardProbabilities=b
  113. finalAnswer = sum(backwardProbabilities[,4])
  114. print(finalAnswer)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement