Upload
computer-science-club
View
279
Download
1
Embed Size (px)
Citation preview
ПоискПоследовательностей
Николай Вяххи[email protected]
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 г.
BLASTSequences 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 г.