The Nussinov algorithm is a nucleic acid structure prediction algorithm used in computational biology to predict the folding of an RNA molecule that makes use of dynamic programming principles. The algorithm was developed by Ruth Nussinov in the late 1970s.
Background RNA origami occurs when an RNA molecule "folds" and binds to itself. This folding often determines the function of the RNA molecule. RNA folds at different levels, this algorithm predicts the secondary structure of the RNA.
Algorithm
Scoring We score a solution by counting the total number of paired bases. Thus, attempting to maximize the score that maximizes the total number of bonds between bases.
Motivation Consider an RNA sequence S {\displaystyle S} whose elements are taken from the set { A , U , C , G } {\displaystyle \{A,U,C,G\}} . Let us imagine we have an optimal solution to the subproblem of folding S i {\displaystyle S_{i}} to S j − 1 {\displaystyle S_{j-1}} , and an optimal solution for folding S u {\displaystyle S_{u}} to S v {\displaystyle S_{v}} i ≤ u ≤ v ≤ j − 1 {\displaystyle i\leq u\leq v\leq j-1} . Now, to align S i {\displaystyle S_{i}} to S j {\displaystyle S_{j}} , we have two options:
Leave S j {\displaystyle S_{j}} unpaired, and keep the structure of S i {\displaystyle S_{i}} to S j − 1 {\displaystyle S_{j-1}} . The score for this alignment will be equal to the score of the alignment of S i {\displaystyle S_{i}} to S j − 1 {\displaystyle S_{j-1}} , as no new base pairs were created. Pair S j {\displaystyle S_{j}} with S k {\displaystyle S_{k}} , where i ≤ k < j {\displaystyle i\leq k<j} . The score for this alignment will be the score of the base pairing, plus the score of the best alignment of S i {\displaystyle S_{i}} to S k − 1 {\displaystyle S_{k-1}} and S k + 1 {\displaystyle S_{k+1}} to S j − 1 {\displaystyle S_{j-1}} .
Algorithm Consider an RNA sequence S {\displaystyle S} of length n {\displaystyle n} such that S i ∈ { A , U , C , G } {\displaystyle S_{i}\in \{A,U,C,G\}} . Construct an n × n {\displaystyle n\times n} matrix M {\displaystyle M} . Initialize M {\displaystyle M} such that
M ( i , i ) = 0 {\displaystyle M(i,i)=0}
M ( i , i − 1 ) = 0 {\displaystyle M(i,i-1)=0}
for 1 ≤ i ≤ n {\displaystyle 1\leq i\leq n} .
M ( i , j ) {\displaystyle M(i,j)} will contain the maximum score for the subsequence S i . . . S j {\displaystyle S_{i}...S_{j}} . Now, fill in entries of M {\displaystyle M} up and to the right, so that
… excerpt ends here. Continue reading the full article.
