SLIDE 1
DNA ¡sequencing ¡applica0ons: ¡iden0fying ¡gene0c ¡varia0on ¡
Sequence from the reference genome Short sequencing reads from an individual
SLIDE 2 Short ¡read ¡alignment ¡problem ¡
– A ¡few ¡million ¡short ¡reads ¡(assume ¡no ¡errors ¡for ¡now) ¡ – A ¡reference ¡genome ¡
– Alignments ¡of ¡the ¡reads ¡to ¡the ¡reference ¡genome ¡
SLIDE 3 Brute ¡force ¡search ¡for ¡GATTACA ¡ ¡
- Where ¡is ¡GATTACA ¡in ¡the ¡human ¡genome? ¡ ¡
No match at offset 1 Match at offset 2 No match at offset 3...
SLIDE 4 Brute ¡force ¡search ¡for ¡GATTACA ¡ ¡
- Simple, ¡easy ¡to ¡understand ¡
- Analysis ¡
– ¡Genome ¡length ¡= ¡n ¡= ¡3,000,000,000 ¡ ¡– ¡Query ¡length ¡= ¡m ¡= ¡7 ¡ ¡ ¡– ¡Comparisons: ¡(n-‑m+1) ¡* ¡m ¡= ¡21,000,000,000 ¡
- Overall ¡run0me ¡O(nm) ¡
- What ¡is ¡the ¡expected ¡number ¡of ¡occurrences ¡of ¡a ¡word ¡of ¡size ¡m ¡in ¡a ¡
genome ¡of ¡size ¡n? ¡(assuming ¡equal ¡frequencies ¡of ¡A, ¡C, ¡G, ¡T) ¡ ¡
- 1 ¡in ¡4 ¡bases ¡are ¡G, ¡1 ¡in ¡16 ¡posi0ons ¡are ¡GA, ¡1 ¡in ¡64 ¡posi0ons ¡are ¡GAT… ¡
¡ ¡ ¡ ¡ ¡1 ¡in ¡16,384 ¡should ¡be ¡GATTACA ¡
- E=(n-‑m+1)/(4m) ¡ ¡…. ¡183,105 ¡expected ¡occurrences ¡ ¡
¡
SLIDE 5 Binary ¡search ¡and ¡suffix ¡arrays ¡
- Preprocess ¡the ¡genome ¡
Sort the suffixes alphabetically
- Then ¡use ¡binary ¡search ¡
Split the genome into suffixes Suffix array
SLIDE 6 Example ¡of ¡suffix ¡array ¡
- Search ¡got ¡the ¡substring ¡GATTACA ¡in ¡the ¡human ¡genome ¡ ¡
- Search ¡for ¡the ¡substring ¡ANA ¡in ¡the ¡string ¡BANANA ¡
SLIDE 7
Suffix ¡arrays ¡-‑ ¡search ¡for ¡GATTACA ¡ ¡
SLIDE 8
Suffix ¡arrays ¡-‑ ¡search ¡for ¡GATTACA ¡ ¡
Lo = 1; Hi = 15 Lo Hi Middle = Suffix[8] = CC Compare GATTACA to CC => Higher Lo = Mid + 1 Mid = (1+15)/2 = 8
SLIDE 9
Suffix ¡arrays ¡-‑ ¡search ¡for ¡GATTACA ¡ ¡
Lo = 9; Hi = 15 Lo Hi Middle = Suffix[12] = TACC Compare GATTACA to TACC => Lower Hi = Mid - 1 Mid = (9+15)/2 = 12
SLIDE 10
Suffix ¡arrays ¡-‑ ¡search ¡for ¡GATTACA ¡ ¡
Lo = 9; Hi = 11 Lo Hi Middle = Suffix[10] = GATTACC Compare GATTACA to GATTACC => Lower Hi = Mid - 1 Mid = (9+11)/2 = 10
SLIDE 11
Suffix ¡arrays ¡-‑ ¡search ¡for ¡GATTACA ¡ ¡
Lo = 9; Hi = 9 Lo Hi Middle = Suffix[9] = GATTACAG… Compare GATTACA to GATTACAG… => Match Return: match at position 2 Mid = (9+9)/2 = 9 What if there are multiple matches?
SLIDE 12 Suffix ¡arrays ¡-‑ ¡analysis ¡
- Space ¡complexity? ¡
- Word ¡(query) ¡of ¡size ¡m ¡
- Genome ¡of ¡size ¡n ¡
- Time ¡complexity ¡of ¡the ¡word ¡search: ¡
¡O(m ¡log ¡n) ¡ ¡
- Compared ¡to ¡O(mn) ¡for ¡brute ¡force ¡
- Looking ¡up ¡a ¡word ¡loops ¡32 ¡0mes ¡instead ¡of ¡3,000,000,000 ¡0mes ¡
- Time ¡to ¡construct ¡the ¡array? ¡
- n ¡suffixes ¡
- Time ¡complexity ¡of ¡sor0ng: ¡
- For ¡the ¡human ¡genome: ¡ ¡
¡4.5 ¡billion ¡billion ¡characters!!! ¡ ¡ ¡O(n ¡log ¡n) ¡(merge ¡sort) ¡… ¡ ¡ ¡~94 ¡billion ¡for ¡human ¡genome ¡
- Total ¡characters ¡in ¡all ¡suffixes ¡
combined: ¡ ¡1+2+3+…+n ¡= ¡O(n2) ¡
¡
SLIDE 13 Algorithms ¡for ¡exact ¡string ¡matching ¡
- Search ¡for ¡the ¡substring ¡ANA ¡in ¡the ¡string ¡BANANA ¡
Brute ¡force ¡ Binary ¡search/Suffix ¡array ¡ ¡
?