Advertisement
Guest User

Untitled

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