Dynamic programming Dynamické programování je obsaženo v těchto programech: BLS FS lustalw HMMER enscan MFold Phylip Historie 9s matematik Richard Bellman při optimalizaci rozhodovacích procesů chtěl zmást ministra obrany harlese Wilsona, o kterém bylo známo, že nemá rád matematický výzkum (a matematiky samotné). Dynamické (časové řady) programování (ve smyslu plánování). ěžko lze použít dynamický v pejorativním smyslu. Příklad: chceme optimálně přiložit dvě sekvence lobální přiložení dle Needleman - Wunsch Máme dvě sekvence a. hceme co nejlépe přiložit jednu ke druhé. Jsou homologní? Jaké je podobnostní skóre? Počet možných přiložení sekvencí o délce N: dvě sekvence o délce : 9 přiložení není praktické srovnávat všechna přiložení. N πn -- -- -- --- - Matematická formalizace:. sekvence Sekvence x o délce M Na i-té pozici sekvence x je nukleotid x i Např.: M=, i=( až ) x x x x x x Matematická formalizace:. sekvence Sekvence y o délce N Na j-té pozici sekvence y je nukleotid y j Např.: N=, j=( až ) y y y y y y y y
Matematická formalizace: skórovací matice σ jako (pod)skóre σ(a,b) pro přiložení dvou nukleotidů x i a y j jeden ke druhému, např.: pro shodu+, pro neshodu -, pro mezeru -, pokuta, značka γ. Důležitý pojem: řešení podproblémů Při přiložení se díváme na lokální hodnoty skóre Přiložení Přiložení k je ukončeno, pokud při procházení sekvencí dojdeme od začátku na konec nebo od konce na začátek pokud poslední nukleotid sekvence x má přiložen odpovídající nukleotid (mezeru) sekvence y a poslední nukleotid sekvence y má přiložen odpovídající nukleotid (mezeru) sekvence x. Ukončená přiložení -- -- -- --- - elkové skóre Skóre posledního nukleotidu v přiložení je skóre celého přiložení. Části dynamického programování ) Rekurzivní (návratová) definice optimálního skóre. ) Matice pro uložení optimálních skóre podproblémů. ) Vyplnění matice od základů. ) Zpětný průchod maticí.
) Rekurzivní definice optimálního skóre neb: jak se odvoláváme na předchozí Podíváme se na pravý konec sekvence. Přiložení může končit třemi způsoby: a) nukleotidy x M (x ) a y N (y ) jsou zarovnané... definice optimálního skóre b) nukleotid x M (x ) je zarovnaný oproti mezeře, y N (y ) je na předposledním (nebo ještě dřívějším) místě přiložení.... definice optimálního skóre c) nukleotid y N (y ) je zarovnaný oproti mezeře; x M (x ) je na předposledním (nebo ještě dřívějším) místě. Výpočet skóre S(i, j) je skóre optimálního přiložení sekvence s nukleotidy x x i k sekvenci s nukleotidy y y j Př.: S(,) pro sekvenci x až x k sekvenci y až y Optimální přiložení je ten ze tří způsobů, který dává nejvyšší skóre. a) S(M, N)= σ(x M, y N ) + S(M-, N-) K výpočtu skóre při zarovnání posledního nukleotidu sekvence x s posledním nukleotidem sekvence y potřebuji znát nejenom skóre pro poslední dvojici nukleotidů σ(x M, y N ), ale i skóre pro zarovnání předposledního (M-) nukleotidu sekvence x spředposledním (N-) nukleotidem sekvence y. Př.: S(, )=σ(x, y )+S(,) b) S(M, N)= γ + S(M-, N) K výpočtu skóre při posledním nukleotidu sekvence x přesahujícím poslední nukleotid sekvence y potřebuji znát nejenom pokutu za vložení mezery za poslední nukleotid sekvence y, ale i skórovací matici pro předposlední nukleotid sekvence x zarovnaný s posledním nukleotidem sekvence y. Př.: S(,)=γ + S(, )
c) S(M, N)= γ + S(M, N-) K výpočtu skóre při posledním nukleotidu sekvence y přesahujícím poslední nukleotid sekvence x potřebuji znát nejenom pokutu za vložení mezery za poslední nukleotid sekvence x, ale i skórovací matici pro předposlední nukleotid sekvence y zarovnaný s posledním nukleotidem sekvence x. Př.: S(,)=γ + S(, ) Čili k výpočtu S(M,N) potřebuji znát a) S(M-, N-) b) S(M-, N) c) S(M, N-) k jejich výpočtu zase potřebuji znát: a) S(M-, N-), S(M-, N-), S(M-, N-), b) S(M-, N-), S(M-, N), S(M-, N-), c) S(M-, N-), S(M-, N-), S(M, N-). Př.: k výpočtu S(,) potřebuji znát a) S(, ) b) S(, ) c) S(, ) k jejich výpočtu zase potřebuji znát: a) S(, ), S(, ), S(, ), b) S(, ), S(, ), S(, ), c) S(, ), S(, ), S(, ). znát řešení podproblémů a jejich podproblémů, až skončíme u skóre S(, ) pro přiložení nultého nukleotidu k nultému nukleotidu, S(, ) = (až skončíme před prvním nukleotidem obou sekvencí). Obecná definice rekurzivního algoritmu: S(i-, j-)+σ(x i, y j ) S(i, j)= max S(i-, j)+ γ { S(i, j-)+ γ ) Matice dynamického programování Některé podproblémy potřebujeme řešit opakovaně. S(M-, N-), S(M-, N-), S(M-, N-), S(M-, N-), S(M-, N), S(M-, N-), S(M-, N-), S(M-, N-), S(M, N-). Stojí za to si průběžné výsledky zapsat (do matice). Začneme u nultého nukleotidu v sekvenci (nejvíc vlevo). Matice Vytváříme tabulku pro naše dvě sekvence: Při našem skórování, -, -
Matice i-tý nukleotid sekvence x, M= ) Vyplnění políček matice od základů Vyplnění. řádku a. sloupce i-tý nukleotid sekvence x, M= S(, ) = ; mezera proti mezeře i-tý nukleotid sekvence x, M= První řádek a sloupec odpovídá nukleotidu proti mezeře. - - - - - - - - i-tý nukleotid sekvence x, M= Prvnířádek: jen součet pokut za mezery - - - - - - - - - - - - - - i-tý nukleotid sekvence x, M= První sloupec: jen součet pokut za mezery.
S(, )=? S(,)=? i-tý nukleotid sekvence x, M= - - - - - - - - - - - - - - max =+=+ =--=- =--=- i-tý nukleotid sekvence x, M= - - - - - - - + - - - --=- +-=- --=- - - - - S(,)=? S(,)= - i-tý nukleotid sekvence x, M= - - - - - - - + - - - - - - - - i-tý nukleotid sekvence x, M= - - - - - - - + - - - - - - - - - Pokračuji ve vyplňování matice ž skončím vpravo dole i-tý nukleotid sekvence x, M= - - - - - - - - - + - - - -9 - - - - - + - - - - - - - - - + + + - -9 - - - -9 + + + - - - -9 - - + + - + - - - - + + + + akže teď již známe hodnotu skóre optimálního přiložení:
) Zpětný průchod maticí...zpětný průchod maticí i-tý nukleotid sekvence x, M= Ze tří zpětných směrů vyberu ten, který mě sem přivedl Pokud jsou dva směry stejně dobré, vyberu jeden - - - - - - - + - - - -9 - - - + - -9 - - - - - + + - - - - - + + + + - -9 - + + + - - - - + - + - - - -9 - + + - - - - - - - + i-tý nukleotid sekvence x, M= - - - - - - + - - - -9 - - + - - - - - - + + + - - -9 + + - -9 - - + + - - - - + + - - - - + - + - - - -9 - + - - - - - + - Zpětné šipky si můžeme psát hned při vyplňování matice Přiložení: kde vložit mezery Při zpětném průchodu maticí jsou tři možné směry: Pokud postupujeme ve směru oranžové šipky, tak mezeru nevkládáme. Pokud postupujeme ve směru zelené šipky, tak za odpovídající nukleotid první sekvence (která je zapsaná ve sloupci x maticové tabulky) dáme mezeru. Pokud postupujeme ve směru modré šipky, tak za odpovídající nukleotid druhé sekvence (zapsané v řádku y tabulky) dáme mezeru. Optimální přiložení se skórem + - - + - - + + - + + = + Dynamické programování Poskytuje matematicky optimální algoritmus (přiložení s nejvyšším skóre). Pokud toto přiložení není biologicky optimální, pak je to chyba našeho skórovacího systému. Signifikance našeho přiložení se testuje jinou statistikou. Dynamické programování je počítačově náročné, proto se hledají rychlejší přibližné metody.
Úloha: optimálně přiložte Sekvence :, M= Sekvence :, N= Skórovací matice: shoda neshoda - mezera - Řešení ---- Řešení ----