390 likes | 511 Views
Suffix Trees and Their Uses. Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU. Suffix tree. S= xabxac = abxac = bxac = xac = ac = c. 1 2 3 4 5 6. S= xabxac. Suffix tree. S= xabxa = abxa = bxa = xa = a. 1 2 3 4 5. S= xabxa. x. a.
E N D
Suffix Trees and Their Uses Presented By Dr. ShazzadHosain Asst. Prof. EECS, NSU
Suffix tree S=xabxac = abxac = bxac = xac = ac = c 1 2 3 4 5 6 S=xabxac
Suffix tree S=xabxa = abxa = bxa = xa = a 1 2 3 4 5 S=xabxa x a a b b x b x x a a a
Suffix tree (Example) Let s=abab,a suffix tree of scontains all the suffixes of s=abab$ $ { $ b$ ab$ bab$ abab$ } a b b $ a a $ b b $ $
Trivial algorithm to build a Suffix tree s=abab$ a b a Put the largest suffix in b $ a b b a Put the suffix bab$ in a b b $ $
{ abab$ bab$ } a b b a a b b $ $ Put the suffix ab$ in a b b a b $ a $ b $
a b { abab$ bab$ ab$ } b a b $ a $ b $ Put the suffix b$ in a b b $ a a $ b b $ $
{ abab$ bab$ ab$ b$ } a b b $ a a $ b b $ $ $ Put the suffix $ in a b b $ a a $ b b $ $
{ abab$ bab$ ab$ b$ $ } $ a b b $ a a $ b b $ $ We will also label each leaf with the starting point of the corres. suffix. $ a b 5 b $ a a $ b 4 b $ $ 3 2 1
Analysis Takes O(n2) time to build. We will see how to do it in O(n) time
What can we do with it ? 7.1. APL1: Exact string matching Given a Text T, |T| = n, preprocess it such that when a pattern P, |P|=m, arrives you can quickly decide when it occurs in T. W e may also want to find all occurrences of P in T
Exact string matching In preprocessing we just build a suffix tree in O(n) time $ a b 12345 5 b T=abab$ $ a a $ b 4 b $ $ 3 2 1 Given a pattern P = abwe traverse the tree according to the pattern.
$ a b 5 b $ a a $ b 4 b $ $ 3 2 1 If we did not get stuck traversing the pattern then the pattern occurs in the text. Each leaf in the subtree below the node we reach corresponds to an occurrence. By traversing this subtree we get all k occurrences in O(n+k) time
Generalized suffix tree Given a set of strings S a generalized suffix tree of Scontains all suffixes of s S To make these suffixes prefix-free we add a special char, say $, at the end of s To associate each suffix with a unique string in S add a different special char to each s
Generalized suffix tree (Example) Let s1=ababand s2=aab here is a generalized suffix tree for s1 and s2 S = s1$s1# = abab$aab# # $ { $ # b$ b# ab$ ab# bab$ aab# abab$ } a b 4 5 # $ a b a 3 b b 4 $ # # a $ 2 1 b $ 3 2 1
What can we do with it ? 7.5. APL5: Recognizing DNA Contamination • We isolate, purify, clone, copy, maintain, probe or sequence DNA string • Often unwanted DNA is inserted into the desired DNA sequence • DNA sequence extracted form dinosaur, more similar to mammal (human) than to bird or crockodilian DNA
7.5 DNA Contamination Problem • Let string S1 is newly isolated/sequenced DNA • We know S2 the possible contaminated DNA • Problem is to find all substrings of S2 that occur in S1 and that are longer than some given length l. • Solution: Generate generalized suffix tree of S1 and S2.
7.4: Longest common substring (of two strings) Every node with a leaf descendant from string s1 and a leaf descendant from string s2 represents a maximal common substring and vice versa. # $ a b 4 5 # $ a b a 3 b b 4 $ Find such node with largest “string depth” # # a $ 2 1 b $ 3 2 1
7.11.1 Repetitive Structures in Biological Strings • One of the most striking features of DNA is that there are many repeated substrings • This is specially true for eukaryotes • Most of the Y chromosome consists of repeated substrings • One third of human genome is from repeated family • Prokaryotes have less repeats
7.11.1 Repetitive Structures in Biological Strings • Three types of repeats • Local : small scale repeated strings whose function or origin is at least partially understood • Simple repeats: both local and interspersed, whose function is less clear • Complex interspersed repeats: whose function is even more in doubt
7.11.1 Repetitive Structures in Biological Strings • Palindrome is a string that reads the same backwards as forwards • xyaayx is a palindrome • “Was it a cat I saw” is a palindrome ignoring space
7.11.1 Repetitive Structures in Biological Strings • Complemented palindrome of DNA or RNA • A – T/U and C – G are complements in DNA/RNA • AGCTCGCGAGCT is a complemented palindrome • Complemented palindromes in both DNA/RNA regulates DNA transcription • Folds to form a “hairpin loop” • Many more functionalities
7.11.1 Repetitive Structures in Biological Strings • Restriction enzyme recognizes a specific substring in DNA of both prokaryotes and eukaryotes and cuts the DNA every place where the pattern occurs • Restriction Enzyme Cutting Sites are interesting examples of repeats because they tend to be complemented palindromic repeats • For example EcoRI(restriction enzyme) recognizes GAATTCand cuts between the G and the adjoining A • BglIrecognizes GCCNNNNNGGC, where N stands for any nucleotide. The enzyme cuts between the last two Ns.
Lowest common ancestors A lot more can be gained from the suffix tree if we preprocess it so that we can answer LCA queries on it
Why? The LCA of two leaves represents the longest common prefix (LCP) of these 2 suffixes # $ a b 4 5 # $ a b a 3 b b 4 $ # # a $ 2 1 b $ 3 2 1
Finding maximal palindromes • A palindrome: caabaac, cbaabc • Want to find all maximal palindromes in a string s Let s = cbaaba The maximal palindrome with center between i-1 and i is the LCP of the suffix at position i of s and the suffix at position m-i+1 of sr
Maximal palindromes algorithm Prepare a generalized suffix tree for s = cbaaba$ and sr = abaabc# For every i find the LCA of suffix i of s and suffix m-i+1 of sr
Let s = cbaaba$ then sr = abaabc# a # b $ c 7 7 a b $ b a c # baaba$ c # 6 c # a $ a b 6 a $ 4 abc # 5 5 $ 3 3 c # a $ 4 1 2 2 1
Analysis O(n) time to identify all palindromes
Drawbacks • Suffix trees consume a lot of space • It is O(n) but the constant is quite big • Notice that if we indeed want to traverse an edge in O(1) time then we need an array of ptrs. of size |Σ| in each node
7.14.1 Suffix array • We loose some of the functionality but we save space. Let s = abab Sort the suffixes lexicographically: ab, abab, b, bab The suffix array gives the indices of the suffixes in lexically sorted order 3 1 4 2
11 8 5 2 1 10 9 7 4 6 3 Example Let T = mississippi i L ippi issippi Let P = issa ississippi mississippi Suffix starting at position Pos(1) of T is the lexically smallest suffix In general suffix Pos(i) of T is lexically smaller than suffix Pos(i+1) pi M ppi sippi sisippi ssippi ssissippi R
How do we build it ? • Build a suffix tree • Traverse the tree in DFS, lexicographically picking edges outgoing from each node and fill the suffix array. • O(n) time # $ a b 4 5 # $ a b a 3 b b 4 $ # # a $ 2 1 b $ 3 2 1
How do we search for a pattern ? • If P occurs in T then all its occurrences are consecutive in the suffix array. • Do a binary search on the suffix array • Takes O(mlogn) time
11 8 5 2 1 10 9 7 4 6 3 Example Let S = mississippi i L ippi issippi Let P = issi ississippi mississippi pi M ppi sippi sisippi ssippi ssissippi R
How do we accelerate the search ? Maintain l = LCP(P,L) l L Maintain r = LCP(P,R) If l =r then start comparing M to P at l+ 1 M R r
How do we accelerate the search ? l L If l >r then Suppose we know LCP(L,M) If LCP(L,M) <l we go left If LCP(L,M)>lwe go right If LCP(L,M) = lwe start comparing at l + 1 M R r
Analysis of the acceleration If we do more than a single comparison in an iteration then max(l, r ) grows by 1 for each comparison O(logn + m) time
Reference • Chapter 5, 7: Algorithms on Strings, Trees and Sequences