Hledání motivů
Transkript
Hledání motivů
Tomáš Oberhuber Hledání motivů Tomáš Oberhuber Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 23 Tomáš Oberhuber Hledání motivů Hledání motivů • biologové často potřebují najít často se opakující sekvence DNA • tyto sekvence bývají relativně krátké, ale nemusí se přesně shodovat • může jít o různé způsoby kódování stejného proteinu a nebo mohlo dojít k mutaci • jde o tzv. motivy (motifs) 2 / 23 Tomáš Oberhuber Hledání motivů Hledání motivů • mějme t sekvencí DNA o délcé n • hledáme motivy délky l (tzv. l-mery) • v každé sekvenci chceme najít jeden l-mer tak, aby si l-mery v různých sekvencí byly co nejvíce podobné • každý l-mer je jednoznačně určen svou pozicí si v i-té posloupnosti DNA, kde 1 ≤ si ≤ n − l + 1 • všech t l-merů lze jednoznačně určit vektorem ~s = (s1 , . . . , st ) 3 / 23 Tomáš Oberhuber Hledání motivů Hledání motivů • naším cílem nyní bude najít způsob, jak ohodnotit podobnost S mezi l-mery ~s čímž úlohu převedeme na problém ~s∗ = arg max S(~s). ∀~s • k tomu použijeme tzv. matici zarovnání (alignment • • • • • matrix) A(~s) to jsou všechny l-mery zapsané pod sebou, takže jde o matici o t-řádcích a l sloupcích z matice zarovnání odvodíme profilovou matici P(~s) ta udává, kolikrát se daný znak vyskytuje v určitém sloupci podle profilové matice vybereme konsensus C(~s), tj. v každém sloupci znak, který má nejvíce výskytů nakonec podle počtu výskytu jednotlivých znaků v konsensu napočítáme celkové skóre shody S(~s) 4 / 23 Tomáš Oberhuber Hledání motivů Hledání motivů Example 1 Mějme jednu pevně danou t-tici l-merů pro t A T C C A G G G C A A T G G A ~ A(s) A A G C A T T G G A A T G C C A T G G C A 5 1 0 0 5 P(~s) T 1 5 0 0 0 G 1 1 6 3 0 C 0 0 1 4 2 C(~s) A T G C A ~ maxi=1,...,t P(s)i . 5 5 6 4 5 = 7, l = 8 G C T A C T T C T A C C A C T A T T A C T 5 0 0 1 1 6 1 0 0 0 6 1 A C T 5 6 6 S(~s) = 5 + 5 + 6 + 4 + 5 + 5 + 6 + 6 = 42 5 / 23 Tomáš Oberhuber Hledání motivů Hledání motivů • nyní již stačí najít ~s ∗ = arg max~s S(~s ) • platí lt ≤ S(~s) ≤ lt 4 • maximum tedy existuje Remark 2 K této úloze existuje duální úloha. 6 / 23 Tomáš Oberhuber Mediánový řetězec Hledání motivů • mějme dva l-mery v a w Definition 3 Hammingova vzdálenost dvou řetězců v a w je definována jako počet pozic, na kterých se v a w liší. Example 4 v= w= "ATTGTC" "ACTCTC" dH (v , w) = 2 7 / 23 Tomáš Oberhuber Mediánový řetězec Hledání motivů • mějme vektor ~s = (s1 , . . . , sn ), který nám udává pozice t l-merů v zadaných sekvencích • mějme libovolný l-mer v • definujme dH (v , si ) jako Hammingovu vzdálenost l-meru v od l-meru začínajícím v i-té sekvenci na pozici si • definujme vzdálenost l-meru v od všech t ostatních l-merů jako dH (v , ~s) = t X dH (v , si ) i=1 8 / 23 Tomáš Oberhuber Hledání motivů Mediánový řetězec • definujme celkovou vzdálenost l-meru v od zadaných DNA sekvencí jako dH (v , DNA) = min dH (v , ~s) ~s • toto minum lze napočítat po složkách vektoru ~s • je totiž min dH (v , ~s) = min ~s ~s t X dH (v , si ) i=1 a jednotlivé členy sumy jsou nezávislé Definition 5 Mediánový řetězec je definovaný jako v ∗ = arg min dH (v , DNA). v 9 / 23 Tomáš Oberhuber Mediánový řetězec Hledání motivů Theorem 6 Úlohy hledání motivu a hledání mediánového řetězce jsou vzájemně duální. 10 / 23 Tomáš Oberhuber Hledání motivů Mediánový řetězec Proof. • snadno je vidět, že pro pevně daný vektor ~s a konsensus C(~s) platí dH (C(~s), ~s) = lt − S(~s), • dH (C(~s ), ~s ) počítá na jakých pozicích se konsensus C(~s) liší od řetězců daných vektorem ~s • skóre S(~s ) počítá na jakých pozicích se konsensus C(~s) shoduje s řetezci danými vektorem ~s • dohromady je těchto pozic lt • dále je snadno vidět, že v ∗ = arg min dH (C(~s), ~s) ~s a min dH (C(~s), ~s) = lt − max S(~s) ~s ~s 11 / 23 Tomáš Oberhuber Hledání motivů Kombinatorické optimalizace • tím jsme úlohu převedly na dvě různé (ale duální) úlohy z kombinatorické optimalizace (combinatorial optimization) • při hledání motivu počítáme arg max~s S(~s) → (n − l + 1)t • při hledání mediánového řetězce arg minv dH (v , DNA) → 4l • obecně musíme generovat všechny možné řetězce z určitého stavového stromu • při hledání motivu všechny možné vektory ~s o délce t a na každé pozici může být číslo 1 až n − l + 1 • při hledání mediánového řetězce všechny možné řetězce o délce l a na každé pozici může být jeden ze čtyř znaků • obecně chceme generovat všechny možné řetězce o délce L tvořené abecedou o k znacích 12 / 23 Tomáš Oberhuber Hledání motivů Kombinatorické optimalizace 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: procedure A LL L EAVES( L, k) a:=(1,. . . ,1) while true do vypiš a a:=NextLeaf( a, L, k ) if a = (1,. . . ,1) then return end if end while end procedure procedure N EXT L EAF( a, L, k) for i = L to 1 do if ai <k then ai := ai + 1 return end if ai := 1 end for return a end procedure 13 / 23 Tomáš Oberhuber Kombinatorické optimalizace Hledání motivů • takto lze generovat celou množinu řetězců, přes kterou hledáme optimální řešení • výpočet lze urychlit technikou zvanou branch-and-bound • generování řetězců si zorganizujeme do k -árního stromu, ve kterém na n-té úrovni máme fixováno prvních n − 1-znaků řetězce a zbytek je neznámý • pro každou větev pak uděláme odhad, jaké nejlepší skóre v ní můžeme dosáhnout • podle počtu nezafixovaných znaků potřebujeme odhadnout, o kolik maximálně se může změnit optimalizovaná funkce 14 / 23 Tomáš Oberhuber Kombinatorické optimalizace Hledání motivů • hledání motivu • generujeme postupně všechny možné složky vektoru ~s = (s1 , . . . , st ) • pokud je m posledních složek nezafixovaných, můžeme je teoreticky nastavit tak, že budou ukazovat na úplně stejné podřetězce DNA • mohu tak maximálně získat lm shod, víc ale ne • pokud je tedy nejlepší doposud dosažené skóre větší o více než lm v porovnání se současným skóre, nemá smysl za současného stavu hledat dál a celou větev stromu lze přeskočit 15 / 23 Tomáš Oberhuber Kombinatorické optimalizace Hledání motivů • mediánový řetězec • generujeme řetězec, ke kterému se snažíme najít v každé DNA sekvenci nejpodobnější podřetězec – počítáme tedy počet rozdílných znaků • máme-li m posledních znaků mediánového řetězce nezafixovaných, nejlepší teoretická možnost je, že tyto znaky nám už dH (v , DNA) nezvýší, ale v žádném případě je nemůžeme snížit • pokud je tedy současná částečná dH větší než nejlepší doposud nalezené řešení, nemá smysl pokračovat dál 16 / 23 Tomáš Oberhuber Hledání motivů Kombinatorické optimalizace • procházení stavového stromu upravíme na procházení jeho vrcholů, ne pouze listů 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: procedure N EXT V ERTEX( a, i, L, k) if i < L then ai+1 := 1 return (a, i + 1) else for j := L to 1 do if aj < k then aj := aj + 1 return ( a, j ) end if end for end if return ( a, 0 ) end procedure 17 / 23 Tomáš Oberhuber Kombinatorické optimalizace Hledání motivů • a dále potřebujeme proceduru pro přeskočení větve stavového stromu 1: 2: 3: 4: 5: 6: 7: 8: 9: procedure B YPASS( a, i, L, k) for j := i to 1 do if aj < k then aj := aj + 1 return ( a, j ) end if end for return ( a, 0 ) end procedure 18 / 23 Tomáš Oberhuber Hledání motivů Kombinatorické optimalizace • nyní můžeme napsat samotný algoritmus pro hledání motivů 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: procedure B RANCH A ND B OUND M OTIF S EARCH(DNA, t, n, l) ~s := (1, 1, . . . , 1) bestScore := 0 i := 1 while i > 0 do if i<t then optimisticScore := Score(~s, i, DNA) + (t − i)l if optimisticScore < bestScore then (~s, i) := Bypass(~s, i, t, n − l + 1) else (~s, i) := NextVertex(~s, i, t, n − l + 1) end if else if Score(~s, DNA) > bestScore then bestScore := Score(~s, DNA) bestMotif := ~s (~s, i) := NextVertex(~s, i, t, n − l + 1) end if end if end while return bestMotif end procedure 19 / 23 Tomáš Oberhuber Kombinatorické optimalizace • podobný algoritmus pro hledání medianového řetězce Hledání motivů 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: procedure B RANCH A ND B OUND M EDIAN S TRING S EARCH(DNA, t, n, l) ~s := (1, 1, . . . , 1) bestDistance := ∞ i := 1 while i > 0 do if i<l then prefix := nucleotid(~s, i) optimisticDistance := TotalDistance(prefix, DNA) if optimisticDistance > bestDistance then (~s, i) := Bypass(~s, i, l, 4) else (~s, i) := NextVertex(~s, i, l, 4) end if else word := nucleotid(~s, l) if TotalDistance(word, DNA) < bestDistance then 17: 18: 19: 20: 21: 22: 23: 24: TotalDistance := TotalDistance(word, DNA) bestWord := word (~s, i) := NextVertex(~s, i, l, 4) end if end if end while return bestWord end procedure 20 / 23 Tomáš Oberhuber Hledání motivů Hladový algoritmus pro hledání motivů • jde pouze o aproximační algoritmus, u kterého neznáme aproximační poměr • v praxi ale dává dobré výsledky a funguje rychle • algoritmus je součástí programu Consensus • Gary Stormo, Gerald Hertz, 1989 Gary Stormo 21 / 23 Tomáš Oberhuber Hledání motivů Hladový algoritmus pro hledání motivů • algoritmus nelprve vezme první dvě DNA sekvence a najde v nich dva nejbližší l-mery pomocí Hammingovy vzdálenosti • následně v každé z t zbyvajících sekvencí najde nejbližší motiv • program Consensus navíc v první fázi vybere více kandidátů na motif, řádově 1000 22 / 23 Tomáš Oberhuber Hledání motivů Hladový algoritmus pro hledání motivů 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: procedure G REEDY M OTIF S EARCH(DNA, t, n, l) bestMotif := (1, 1, . . . , 1) ~s := (1, 1 . . . , 1) for s1 := 1 to n − l + 1 do for s2 := 1 to n − l + 1 do if Score(~s, 2, DNA) > Score(bestMotif , 2, DNA) then bestMotif1 := s1 bestMotif2 := s2 end if end for end for s1 := bestMotif1 s2 := bestMotif2 for i := 3 to t do for si := 1 to n − l + 1 do if Score(~s, i, DNA) > Score(bestMotif , i, DNA) then bestMotifi := si end if end for si := bestMotifi end for return bestMotif end procedure 23 / 23
Podobné dokumenty
Poznámky k přednášce
výběru vzorků, či naopak při již zmı́něné analýze algoritmů při výběru vstupu z dané distribuce. Pravděpodobnost a jejı́ použitı́ je klı́čové ve von Neumannově teorii (maticovýc...
document [] - Vysoké učení technické v Brně
Modelářské regulátory nezajišťují přesné otáčky motoru, řídí pouze napětí na svém
výstupu (vstupní napětí motoru). Jde tak v podstatě o měnič řízený signálem. Tento signál je
stejný jako používají ...
Příručka pro dodavatele CZ - IMI Precision Engineering
očekávání a poskytuje přehled formálního postupu, jehož pomocí bude IMI Precision měřit
výkonnost dodavatelů a sdělovat výsledky měření.
Naším očekáváním je neustálý růst a úspěch jak na straně IMI...