SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Поиск
                   Последовательностей
                              Николай Вяххи
                           vyahhi@bioinf.spbau.ru

                           Computer Science клуб
                            Екатеринбург, 2012


суббота, 6 октября 12 г.
Задача
                                   Поиск подстроки в строке:


                           Дано:
                              текст T
                              шаблон P


                           Найти: позиции вхождения P в T
суббота, 6 октября 12 г.
Наивный алгоритм

                           ATCA
                           ATATGAACTGAGATCAAT




суббота, 6 октября 12 г.
Наивный алгоритм

                            ATCA
                           ATATGAACTGAGATCAAT




суббота, 6 октября 12 г.
Наивный алгоритм

                             ATCA
                           ATATGAACTGAGATCAAT




суббота, 6 октября 12 г.
Наивный алгоритм

                              ATCA
                           ATATGAACTGAGATCAAT




суббота, 6 октября 12 г.
Наивный алгоритм

                                       ATCA
                           ATATGAACTGAGATCAAT




суббота, 6 октября 12 г.
Наивный алгоритм

                                       ATCA
                           ATATGAACTGAGATCAAT


                           O(NM)




суббота, 6 октября 12 г.
Чуть посложнее

                           Кнут-Моррис-Пратт: O(N+M)
                           Бойер-Мурр: O(N+M)




суббота, 6 октября 12 г.
Чуть посложнее

                           Кнут-Моррис-Пратт: O(N+M)
                           Бойер-Мурр: O(N+M)
                           Быстрее?




суббота, 6 октября 12 г.
Новая задача
                           Дано:
                              текст T
                              шаблон P


                           Можно: предварительно обработать Т


                           Найти: позиции вхождения P в T
суббота, 6 октября 12 г.
Хэш-таблица
                           K-мер — слово длины K
                           Алфавит {A, C, G, T} → {0, 1, 2, 3}




суббота, 6 октября 12 г.
Хэш-таблица
                           K-мер — слово длины K
                           Алфавит {A, C, G, T} → {0, 1, 2, 3}


                           hash(10-мер) = s0 * 49 + s1 * 48 + ... + s9 * 40




суббота, 6 октября 12 г.
Хэш-таблица
                           K-мер — слово длины K
                           Алфавит {A, C, G, T} → {0, 1, 2, 3}


                           hash(10-мер) = s0 * 49 + s1 * 48 + ... + s9 * 40
                           Максимальное значение hash?
                           Минимальное значение hash?


суббота, 6 октября 12 г.
Хэш-таблица




суббота, 6 октября 12 г.
Хэш-таблица




                                         O(M)
суббота, 6 октября 12 г.
Бор (Trie)
                           A
                           IN
                           THERE
                           IS
                           THE
                           TAVERN
                           TOWN


суббота, 6 октября 12 г.
Бор (Trie)




суббота, 6 октября 12 г.
Суффиксное дерево




суббота, 6 октября 12 г.
Суффиксное дерево




суббота, 6 октября 12 г.
Суффиксное дерево




                                          O(M)
суббота, 6 октября 12 г.
Суффиксный массив




суббота, 6 октября 12 г.
Суффиксный массив




                                          O(MlogN)
суббота, 6 октября 12 г.
Поиск с ошибками
                           Дано:
                             текст T
                             шаблон P
                             целое число K


                           Найти: позиции вхождения P в T с
                           максимум К ошибками (несовпадениями)
суббота, 6 октября 12 г.
Решение

                           Разобьём шаблон на K+1 фрагментов.




                           Одна из подстрок должна встречается в
                           тексте точно.

суббота, 6 октября 12 г.
Решение

                           Разобьём шаблон на K+1 фрагментов.




                           Один из фрагментов должен встречается в
                           тексте точно.

суббота, 6 октября 12 г.
Решение
                           Найдём вхождения всех K+1 фрагментов с
                           помощью любого точного алгоритма.




                           Расширим все вхождения и проверим
                           количество ошибок.
суббота, 6 октября 12 г.
Решение
                           Найдём вхождения всех K+1 фрагментов с
                           помощью любого точного алгоритма.




                           Расширим все вхождения и проверим
                           количество ошибок.
суббота, 6 октября 12 г.
Сложность
                           Найти фрагменты:
                             O(K • (N + M/K)) = O(KN + M)
                             O(N + K • M/K) = O(N + M)


                           Проверить одно вхождение: O(M)


                           Чем больше K, тем больше ложных
                           вхождений нам проверять...
суббота, 6 октября 12 г.
BLAST

                           Basic Local Alignment Search Tool
                           (самая цитируемая статья 1990х)


                              http://blast.ncbi.nlm.nih.gov




суббота, 6 октября 12 г.
BLAST




суббота, 6 октября 12 г.
BLAST
                       Sequences producing significant alignments:                             Score     E

                                                                                               (bits)   Value

                gi|18858329|ref|NP_571095.1| ba1 globin [Danio rerio] >gi|147757...             171     3e-44

                gi|18858331|ref|NP_571096.1| ba2 globin; SI:dZ118J2.3 [Danio rer...             170     7e-44

                gi|37606100|emb|CAE48992.1| SI:bY187G17.6 (novel beta globin) [D...             170     7e-44

                gi|31419195|gb|AAH53176.1| Ba1 protein [Danio rerio]                            168     3e-43



                ALIGNMENTS

                >gi|18858329|ref|NP_571095.1| ba1 globin [Danio rerio]

                Length = 148



                  Score = 171 bits (434), Expect = 3e-44

                  Identities = 76/148 (51%), Positives = 106/148 (71%), Gaps = 1/148 (0%)



                Query: 1 MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPK 60

                           MV   T   E++A+   LWGK+N+DE+G +AL R L+VYPWTQR+F +FG+LS+P A+MGNPK

                Sbjct: 1 MVEWTDAERTAILGLWGKLNIDEIGPQALSRCLIVYPWTQRYFATFGNLSSPAAIMGNPK 60



                Query: 61 VKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG 120

                             V AHG+ V+G       + ++DN+K T+A LS +H +KLHVDP+NFRLL + +    A   FG
суббота, 6 октября 12 г.
Сжатые структуры




                            FM-index = BWT + Suffix Array

суббота, 6 октября 12 г.
Что мы узнали

                     • Поиск подстроки в строке
                     • Таблица К-меров
                     • Суффиксное дерево, массив
                     • BLAST

суббота, 6 октября 12 г.
Домашнее задание

                                       http://rosalind.info
                                        • SUFF
                                        • SUBS
                                        • MREP

                     http://rosalind.info/classes/enroll/
              171da3d314a0b07e00883287cd2b6ddeeeba225b/
суббота, 6 октября 12 г.

Contenu connexe

Plus de Computer Science Club

20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 
20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrison20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrisonComputer Science Club
 

Plus de Computer Science Club (20)

20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 
20130922 h10 lecture1_matiyasevich
20130922 h10 lecture1_matiyasevich20130922 h10 lecture1_matiyasevich
20130922 h10 lecture1_matiyasevich
 
20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrison20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrison
 

20121006 algorithmsinbioinformatics vyahhi_lecture03

  • 1. Поиск Последовательностей Николай Вяххи vyahhi@bioinf.spbau.ru Computer Science клуб Екатеринбург, 2012 суббота, 6 октября 12 г.
  • 2. Задача Поиск подстроки в строке: Дано: текст T шаблон P Найти: позиции вхождения P в T суббота, 6 октября 12 г.
  • 3. Наивный алгоритм ATCA ATATGAACTGAGATCAAT суббота, 6 октября 12 г.
  • 4. Наивный алгоритм ATCA ATATGAACTGAGATCAAT суббота, 6 октября 12 г.
  • 5. Наивный алгоритм ATCA ATATGAACTGAGATCAAT суббота, 6 октября 12 г.
  • 6. Наивный алгоритм ATCA ATATGAACTGAGATCAAT суббота, 6 октября 12 г.
  • 7. Наивный алгоритм ATCA ATATGAACTGAGATCAAT суббота, 6 октября 12 г.
  • 8. Наивный алгоритм ATCA ATATGAACTGAGATCAAT O(NM) суббота, 6 октября 12 г.
  • 9. Чуть посложнее Кнут-Моррис-Пратт: O(N+M) Бойер-Мурр: O(N+M) суббота, 6 октября 12 г.
  • 10. Чуть посложнее Кнут-Моррис-Пратт: O(N+M) Бойер-Мурр: O(N+M) Быстрее? суббота, 6 октября 12 г.
  • 11. Новая задача Дано: текст T шаблон P Можно: предварительно обработать Т Найти: позиции вхождения P в T суббота, 6 октября 12 г.
  • 12. Хэш-таблица K-мер — слово длины K Алфавит {A, C, G, T} → {0, 1, 2, 3} суббота, 6 октября 12 г.
  • 13. Хэш-таблица K-мер — слово длины K Алфавит {A, C, G, T} → {0, 1, 2, 3} hash(10-мер) = s0 * 49 + s1 * 48 + ... + s9 * 40 суббота, 6 октября 12 г.
  • 14. Хэш-таблица K-мер — слово длины K Алфавит {A, C, G, T} → {0, 1, 2, 3} hash(10-мер) = s0 * 49 + s1 * 48 + ... + s9 * 40 Максимальное значение hash? Минимальное значение hash? суббота, 6 октября 12 г.
  • 16. Хэш-таблица O(M) суббота, 6 октября 12 г.
  • 17. Бор (Trie) A IN THERE IS THE TAVERN TOWN суббота, 6 октября 12 г.
  • 18. Бор (Trie) суббота, 6 октября 12 г.
  • 21. Суффиксное дерево O(M) суббота, 6 октября 12 г.
  • 23. Суффиксный массив O(MlogN) суббота, 6 октября 12 г.
  • 24. Поиск с ошибками Дано: текст T шаблон P целое число K Найти: позиции вхождения P в T с максимум К ошибками (несовпадениями) суббота, 6 октября 12 г.
  • 25. Решение Разобьём шаблон на K+1 фрагментов. Одна из подстрок должна встречается в тексте точно. суббота, 6 октября 12 г.
  • 26. Решение Разобьём шаблон на K+1 фрагментов. Один из фрагментов должен встречается в тексте точно. суббота, 6 октября 12 г.
  • 27. Решение Найдём вхождения всех K+1 фрагментов с помощью любого точного алгоритма. Расширим все вхождения и проверим количество ошибок. суббота, 6 октября 12 г.
  • 28. Решение Найдём вхождения всех K+1 фрагментов с помощью любого точного алгоритма. Расширим все вхождения и проверим количество ошибок. суббота, 6 октября 12 г.
  • 29. Сложность Найти фрагменты: O(K • (N + M/K)) = O(KN + M) O(N + K • M/K) = O(N + M) Проверить одно вхождение: O(M) Чем больше K, тем больше ложных вхождений нам проверять... суббота, 6 октября 12 г.
  • 30. BLAST Basic Local Alignment Search Tool (самая цитируемая статья 1990х) http://blast.ncbi.nlm.nih.gov суббота, 6 октября 12 г.
  • 32. BLAST Sequences producing significant alignments: Score E (bits) Value gi|18858329|ref|NP_571095.1| ba1 globin [Danio rerio] >gi|147757... 171 3e-44 gi|18858331|ref|NP_571096.1| ba2 globin; SI:dZ118J2.3 [Danio rer... 170 7e-44 gi|37606100|emb|CAE48992.1| SI:bY187G17.6 (novel beta globin) [D... 170 7e-44 gi|31419195|gb|AAH53176.1| Ba1 protein [Danio rerio] 168 3e-43 ALIGNMENTS >gi|18858329|ref|NP_571095.1| ba1 globin [Danio rerio] Length = 148 Score = 171 bits (434), Expect = 3e-44 Identities = 76/148 (51%), Positives = 106/148 (71%), Gaps = 1/148 (0%) Query: 1 MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPK 60 MV T E++A+ LWGK+N+DE+G +AL R L+VYPWTQR+F +FG+LS+P A+MGNPK Sbjct: 1 MVEWTDAERTAILGLWGKLNIDEIGPQALSRCLIVYPWTQRYFATFGNLSSPAAIMGNPK 60 Query: 61 VKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG 120 V AHG+ V+G + ++DN+K T+A LS +H +KLHVDP+NFRLL + + A FG суббота, 6 октября 12 г.
  • 33. Сжатые структуры FM-index = BWT + Suffix Array суббота, 6 октября 12 г.
  • 34. Что мы узнали • Поиск подстроки в строке • Таблица К-меров • Суффиксное дерево, массив • BLAST суббота, 6 октября 12 г.
  • 35. Домашнее задание http://rosalind.info • SUFF • SUBS • MREP http://rosalind.info/classes/enroll/ 171da3d314a0b07e00883287cd2b6ddeeeba225b/ суббота, 6 октября 12 г.