Advertisement
Guest User

Untitled

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