Mapowanie sekwencji na genom (Ultrafast and memory-efficient alignment of short DNA sequences to the human gemone) Uniwersytet Warszawski 1 kwietnia 2010
Referowana praca Problem
Problem Wstęp Referowana praca Problem
Problem Wstęp Referowana praca Problem Nowoczesne metody sekwencjonowania zwracają krótkie odcinki sekwencji Jak to poskładać? Bez żadnych dodatkowych informacji Jak wiemy co ma z grubsza wyjść - to dzisiaj
Cóż to? Kompresja?
Cóż to? Wstęp Cóż to? Kompresja? Wymyślona przez Michaela Burrowsa i Davida Wheelera w 1994 do polepszenia kompresji Używana np. w bzip2 BWT(T) - ostatnia kolumna z macierzy zawierającej wszystkie cykliczne rotacje T+ w porządku leksykograficznym, gdzie + jest najmniejsze
Cóż to? Wstęp Cóż to? Kompresja? Wymyślona przez Michaela Burrowsa i Davida Wheelera w 1994 do polepszenia kompresji Używana np. w bzip2 BWT(T) - ostatnia kolumna z macierzy zawierającej wszystkie cykliczne rotacje T+ w porządku leksykograficznym, gdzie + jest najmniejsze BWT(ROWER): ROWER+ OWER+R WER+RO ER+ROW R+ROWE +ROWER
Cóż to? Wstęp Cóż to? Kompresja? Wymyślona przez Michaela Burrowsa i Davida Wheelera w 1994 do polepszenia kompresji Używana np. w bzip2 BWT(T) - ostatnia kolumna z macierzy zawierającej wszystkie cykliczne rotacje T+ w porządku leksykograficznym, gdzie + jest najmniejsze BWT(ROWER): ROWER+ OWER+R WER+RO ER+ROW R+ROWE +ROWER +ROWE R ER+RO W OWER+ R R+ROW E ROWER + WER+R O
Kompresja? Wstęp Cóż to? Kompresja? Zobaczmy co wyjdzie dla BWT(AGZEAGZJAGZ): +AGZEAGZJAG Z AGZ+AGZEAGZ J AGZEAGZJAGZ + AGZJAGZ+AGZ E EAGZJAGZ+AG Z GZ+AGZEAGZJ A GZEAGZJAGZ+ A GZJAGZ+AGZE A JAGZ+AGZEAG Z Z+AGZEAGZJA G ZEAGZJAGZ+A G ZJAGZ+AGZEA G
Kompresja? Wstęp Cóż to? Kompresja? Zobaczmy co wyjdzie dla BWT(AGZEAGZJAGZ): +AGZEAGZJAG Z AGZ+AGZEAGZ J AGZEAGZJAGZ + AGZJAGZ+AGZ E EAGZJAGZ+AG Z GZ+AGZEAGZJ A GZEAGZJAGZ+ A GZJAGZ+AGZE A JAGZ+AGZEAG Z Z+AGZEAGZJA G ZEAGZJAGZ+A G ZJAGZ+AGZEA G W macierzy rotacje zaczynjące się od danych sufiksów powtarzających się podsłów występują obok siebie Tworzy to ciągi złożone z ostatniej litery odpowiadających im prefiksów
Kompresja? Wstęp Cóż to? Kompresja? Zobaczmy co wyjdzie dla BWT(AGZEAGZJAGZ): +AGZEAGZJAG Z AGZ+AGZEAGZ J AGZEAGZJAGZ + AGZJAGZ+AGZ E EAGZJAGZ+AG Z GZ+AGZEAGZJ A GZEAGZJAGZ+ A GZJAGZ+AGZE A JAGZ+AGZEAG Z Z+AGZEAGZJA G ZEAGZJAGZ+A G ZJAGZ+AGZEA G W macierzy rotacje zaczynjące się od danych sufiksów powtarzających się podsłów występują obok siebie Tworzy to ciągi złożone z ostatniej litery odpowiadających im prefiksów Na pewno?
Kompresja? Wstęp Cóż to? Kompresja? Zobaczmy co wyjdzie dla BWT(AGZEAGZJAGZ): +AGZEAGZJAG Z AGZ+AGZEAGZ J AGZEAGZJAGZ + AGZJAGZ+AGZ E EAGZJAGZ+AG Z GZ+AGZEAGZJ A GZEAGZJAGZ+ A GZJAGZ+AGZE A JAGZ+AGZEAG Z Z+AGZEAGZJA G ZEAGZJAGZ+A G ZJAGZ+AGZEA G W macierzy rotacje zaczynjące się od danych sufiksów powtarzających się podsłów występują obok siebie Tworzy to ciągi złożone z ostatniej litery odpowiadających im prefiksów Na pewno? Np. "BGZF" trochę by popsuło, ale nie tak bardzo
Cóż to? Kompresja? Jak to rozszryfować???????????????????????????????????? S + O B G O L I T I S
Cóż to? Kompresja? Jak to rozszryfować? + B G I I L O O S S T??????????????????????????????????? S + O B G O L I T I S
Cóż to? Kompresja? Jak to rozszryfować? + B G I I L O O S S T??????????????????????????????????? S + O B G O L I T I S
Algorytm Wstęp Cóż to? Kompresja? C[c] - ilość wystąpień znaków mniejszych od c w T - szybkie! Occ(c, r) - ilość wystąpień c w BWT do pozycji r - wolne?
Algorytm Wstęp Cóż to? Kompresja? C[c] - ilość wystąpień znaków mniejszych od c w T - szybkie! Occ(c, r) - ilość wystąpień c w BWT do pozycji r - wolne? Niekoniecznie! Occ możemy wcześniej przeliczyć dla co n-tej pozycji
Cóż to? Kompresja? Jak znaleźć GCAC w: + TACACGCA C A C+TACACG C A CACGCAC+ T A CGCAC+TA C C +TACACGC A C AC+TACAC G C ACGCAC+T A C GCAC+TAC A G CAC+TACA C T ACACGCAC +
Cóż to? Kompresja? Jak znaleźć GCAC w: + TACACGCA C A C+TACACG C A CACGCAC+ T A CGCAC+TA C C +TACACGC A C AC+TACAC G C ACGCAC+T A C GCAC+TAC A G CAC+TACA C T ACACGCAC +
Cóż to? Kompresja? Jak znaleźć GCAC w: + TACACGCA C A C+TACACG C A CACGCAC+ T A CGCAC+TA C C +TACACGC A C AC+TACAC G C ACGCAC+T A C GCAC+TAC A G CAC+TACA C T ACACGCAC + Ale jak z przedziału dostać indeks w tekście?
Cóż to? Kompresja? Jak znaleźć GCAC w: + TACACGCA C A C+TACACG C A CACGCAC+ T A CGCAC+TA C C +TACACGC A C AC+TACAC G C ACGCAC+T A C GCAC+TAC A G CAC+TACA C T ACACGCAC + Ale jak z przedziału dostać indeks w tekście? STEPLEFT + taki sam trik jak z Occ tylko pamiętamy indeksy w tekście
Wstęp Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze
Mapowanie (INEXACTMATCH) Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze EXACTMATCH + backtracking (DFS prawie bruteforce)
Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Czemu prawie a nie całkiem bruteforce? Odczyty niosą ze sobą jakość dla każdej pozycji Przy wielu możliwościach wybieramy pozycję z najgorszą jakością
Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Czemu prawie a nie całkiem bruteforce? Odczyty niosą ze sobą jakość dla każdej pozycji Przy wielu możliwościach wybieramy pozycję z najgorszą jakością Limit na znalezione dopasowania (domyślnie 1) Pierwsze znalezione nie musi być najlepsze Można go zmusić do szukania k (albo wszystkich) dopasowań Jak znajdzie więcej niż k to zwraca k losowych Limit na ilość prób podmian (domyślnie 125)
Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Czemu prawie a nie całkiem bruteforce? Odczyty niosą ze sobą jakość dla każdej pozycji Przy wielu możliwościach wybieramy pozycję z najgorszą jakością Limit na znalezione dopasowania (domyślnie 1) Pierwsze znalezione nie musi być najlepsze Można go zmusić do szukania k (albo wszystkich) dopasowań Jak znajdzie więcej niż k to zwraca k losowych Limit na ilość prób podmian (domyślnie 125) Dodatkowy indeks dla odwróconego tekstu (bez komplementarności) Szukamy z obu stron, zabraniając podmian w pierwszej połowie
Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Czemu prawie a nie całkiem bruteforce? Odczyty niosą ze sobą jakość dla każdej pozycji Przy wielu możliwościach wybieramy pozycję z najgorszą jakością Limit na znalezione dopasowania (domyślnie 1) Pierwsze znalezione nie musi być najlepsze Można go zmusić do szukania k (albo wszystkich) dopasowań Jak znajdzie więcej niż k to zwraca k losowych Limit na ilość prób podmian (domyślnie 125) Dodatkowy indeks dla odwróconego tekstu (bez komplementarności) Szukamy z obu stron, zabraniając podmian w pierwszej połowie Ale to działa tylko dla pojedyńczych błędów...
Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Czemu prawie a nie całkiem bruteforce? Limit na ilość podmian w części HQ (domyślnie pierwsze 24bp) odczytu (domyślnie 2) Dla 2 można kombinować z 2 indeksami Faza 1: 0 błedów i 1 lub 2 błędy w lo-half Faza 2: 1 lub 2 błędy w hi-half Faza 3: dokończenie z fazy 2 i po 1 błędzie w hi-half i lo-half
Wyniki Wstęp Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze 8.84 M odczytów z bazy 1000 Genmoes project przyciętych do 35bp
Wyniki Wstęp Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Odczyty przefiltrowane narzędziem Maq, które usuwa poly-a
Wyniki Wstęp Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Po 2 M odczytów z bazy 1000 Genmoes project
Wyniki Wstęp Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze Cały ludzki genom
Budowanie indeksu Wstęp Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze BWT [i] = T [SUF [i] 1] lub + dlasuf [i] = 0 Można więc trywialnie wykorzystać algorytmy do budowania SUF Istnieje algorytm budujący SUF w blokach co daje możliwość kontrolowania zużycia pamięci
Nie tylko na papierze Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze http://bowtie-bio.sourceforge.net/ Ciągle rozwijany, ostatnia wersja z 17 lutego 2010
Nie tylko na papierze Mapowanie (INEXACTMATCH) Wyniki Budowanie indeksu Nie tylko na papierze http://bowtie-bio.sourceforge.net/ Ciągle rozwijany, ostatnia wersja z 17 lutego 2010 DEMO