1-BIN-301, 2-AIN-501 Methods in Bioinformatics, 2021/22

Introduction · Rules · Tasks and dates · Materials · Moodle · Discussion


MBI 2011/2012: Rozdiel medzi revíziami

Z MBI
Prejsť na: navigácia, hľadanie
Riadok 1: Riadok 1:
 
=UCSC genome browser, cvičenia pre biológov=
 
=UCSC genome browser, cvičenia pre biológov=
* Zvoľte v menu Bioinformatika, užívatel User
+
* Cvicenia pre biológov zo sekvenovania, pracovna verzia poznamok
* V programe Firefox choďte na stránku UCSC genome browser http://genome.ucsc.edu/
+
* Ospravedlnujem sa za chybajucu diakritiku
* Hore v modrom menu zvoľte Genomes, potom zvoľte ľudský genóm. Do okienka <tt>search term</tt> zadajte HOXA2. Vo výsledkoch hľadania (UCSC genes) zvoľte gén homeobox A2. Koľko má exónov? Na ktorom chromozóme a pozícii je? Pozor, je na opačnom vlákne. Ako je táto skutočnosť naznačená na obrázku?  
+
* Pozrite tiez grafy k pravdepodobnosti: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/ci02.pdf
* V tracku UCSC Genes kliknite na gén, mali by ste sa dostať na stránku popisujúcu jeho rôzne vlastnosti. Čo ste sa dozvedeli o jeho funkcii?  
+
 
** na tejto stránke nájdite linku na stiahnutie proteínovej sekvencie
+
==Uvod do pravdepodobnosti==
* Pomocou tracku Common SNPs(135) nájdite aspoň jeden single nucleotide polymorphism v tomto géne. Na akej je pozícii? Aké bázy sa vyskytujú v ľudskej populácii? Prečo sú niektoré SNPy zobrazené červenou?
+
* Myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealnou kockou/korunou
 +
* Vysledkom experimentu je nejaka hodnota (napr. cislo, alebo aj niekolko cisel, retazec)
 +
* Tuto neznamu hodnotu budeme volat nahodna premenna
 +
* Zaujima nas pravdepodobnost, s akou nahodna premenna nadobuda jednotlive mozne hodnoty
 +
* T.j. ak experiment opakujeme vela krat, ako casto uvidime nejaky vysledok
 +
* Priklad 1: hodime idealizovanou kockou, premenna X bude hodnota, ktoru dostaneme
 +
* Mozne hodnoty 1,2,..,6, kazda rovnako pravdepodobna
 +
* Piseme napr. Pr(X=2)=1/6
 +
* Priklad 2: hodime 2x kockou, nahodna premenna X bude sucet hodnot, ktore dostaneme
 +
* Mozne hodnoty: 2,3,...,12
 +
* Kazda dvojica hodnot na kocke rovnako pravdepodobna, t.j. pr. 1/36
 +
* Sucet 5 mozeme dostat 1+4,2+3,3+2,4+1 - t.j. P(X=5) = 4/36
 +
* Sucet 11 mozeme dostat 5+6 alebo 6+5, t.j. P(X=11) = 2/36
 +
* Rozdelenie pravdepodobnosti: 2: 1/36, 3:2/36, 4: 3/36, ... 7: 6/36, 8: 5/36 ... 12: 1/36
 +
* Overte, ze sucet je 1
 +
 
 +
==Pouzitie pravdepodobnosti na analyzu potrebneho pokrytia pri sekvenovani==
 +
* Nas problem: spocitanie pokrytia
 +
** G = dlzka genomu, napr. 1 000 000 (predpokladajme, že je cirkulárny)
 +
** N = pocet segmentov (readov), napr. 10 000
 +
** L = dlzka readu, napr. 1000
 +
** Celkova dlzka segmentov NL, pokrytie (coverage) NL/G, v nasom pripade 10x
 +
** V priemere kazda baza pokryta 10x
 +
** Niektore su ale pokryte viackrat, ine menej.
 +
** Zaujimaju nas otazky typu: kolko baz ocakavame, ze bude pokrytych menej ako 3x?
 +
** Dolezite pri planovani experimentov (aku velke pokrytie potrebujem na dosiahnutie urcitej kvality)
 +
 
 +
 
 +
 
 +
* Pokrytie genomu: predpokladame, ze kazdy segment zacina na nahodnej pozicii zo vsetkych moznych G
 +
* Takze ak premenna Y_i bude zaciatok i-teho segmentu, jej rozdelenie bude rovnomerne
 +
** P(Y_i=1) = P(Y_i=2) = ... = P(Y_i=G-L+1) = 1/G
 +
 
 +
* Aka je pravdepodobnost ze nejaky konkretny i-ty segment pokryva konkretnu poziciu j?
 +
** P(Y_i>=j-L+1 and Y_i<=j) = P(Y_i=j-L+1)+...+P(Y_i=j) = L/G, oznacme tuto hodnotu p, nasom priklade p=0.001
 +
 
 +
* Uvazujme premennu X_j, ktora udava pocet segmentov pokryvajucich poziciu j
 +
** mozne hodnoty 0..N
 +
** i-ty segment pretina poziciu j s pravdepodobnostou p=L/G
 +
** to iste ako keby sme N krat hodili mincou, na ktorej spadne hlava s pravd. p a znak 1-p a oznacili ako X_j pocet hlav
 +
** Priklad: majme mincu, ktora ma hlavu s pr. 1/4 a hodime je 3x.
 +
<pre>
 +
HHH 1/64
 +
HHT 3/64
 +
HTH 3/64
 +
HTT 9/64
 +
THH 3/64
 +
THT 9/64
 +
TTH 9/64
 +
TTT 27/64
 +
</pre>
 +
* P(X_j=3) = 1/64, P(X_j=2)=9/64, P(X_j=1)=27/64, P(X_j=0)=27/64
 +
** taketo rozdelenie pravdepodobnosti sa vola binomicke
 +
** P(X_j = k) = (N choose k) p^k (1-p)^(N-k), kde <math>{N \choose k} = \frac{N!}{k!(N-k)!}</math> a n! = 1*2*...*n
 +
** napr pre priklad s troma hodmi kockou P(X_j=2) = 3!/(2!*1!) * (1/4)^2 * (3/4)^1 = 9/64
 +
** Zle sa pocita pre velke N, preto sa niekedy pouziva aproximacia Poissonovym rozdelenim s parametrom lambda = Np, ktore ma <math>e^{-\lambda}\lambda^k / k!</math>
 +
** Spat k sekvenovaniu: vieme spocitat rozdelenie pravdepodobnosti a tiez napr. P(X_i<3) = P(X_i=0)+P(X_i=1)+P(X_i=2) = 0.000045+0.00045+0.0023=0.0028 (v priemere ocakavame 45 baz nepokrytych, 2800 pokrytých menej ako 3 krát)
 +
** Takyto graf, odhad, vieme lahko spravit pre rozne pocty segmentov a tak naplanovat, kolko segmentov potrebujeme
 +
 
 +
* Chceme tiez odhadnut pocet kontigov (nebrali sme na cviceni, uvedene len pre zaujimavost)
 +
** Ak niekolko baz vobec nie je pokrytych segmentami, prerusi sa kontig
 +
** Vieme, kolko baz je v priemere nepokrytych, ale niektore mozu byt vedla seba
 +
** Novy kontig vznikne aj ak sa susedne segmenty malo prekryvaju
 +
** Predpokladajme, ze na spojenie dvoch segmentov potrebujeme prekryv aspon T
 +
** Lander a Waterman 1988 odhadli, ze dany segment ma pravdepodobnost zhruba exp(-N(L-T)/G), ze bude posledny v kontigu
 +
** Pre N segmentov dostaneme priemerny pocet kontigov N*exp(-N(L-T)/G)
 +
** Ako keby sme dlzku segmentu skratili o dlzku prekryvu
 +
** Pre T=50 dostaneme priemerny pocet kontigov 0.75 (v skutocnosti ide skor o pocet koncov kontigov - ak dostaneme cely kruh, tento pocet je 0, preto dostavame priemer nizsi ako 1)
 +
** ak znizime N na 5000 (5x pokrytie) dostaneme 44 kontigov
 +
 
 +
* Tento jednoduchy model nepokryva vsetky faktory:
 +
** Segmenty nemaju rovnaku dlzku
 +
** Problemy v zostavovani kvoli chybam, opakovaniam a pod.
 +
** Segmenty nie su rozlozene rovnomerne (cloning bias a pod.)
 +
** Vplyv koncov chromozomov pri linearnych chromozomoch
 +
** Uzitocny ako hruby odhad
 +
** Na spresnenie mozeme skusat spravit zlozitejsie modely, alebo simulovat data
 +
 
 +
* Poznamka: pravdepodobnosti z binomickeho rozdelenia mozeme lahko spocitat napr. statistickym softverom R. Tu su prikazy, ktore sa na to hodia, pre pripad, ze by vas to zaujimalo:
 +
<pre>
 +
dbinom(10,1e4,0.001);  #(12.5% miest ma pokrytie presne 10)
 +
pbinom(10,1e4,0.001,lower.tail=TRUE); #(58% miest ma pokrytie najviac 10)
 +
dbinom(0:30,1e4,0.001); #tabulka pravdepodobnosti
 +
[1] 4.517335e-05 4.521856e-04 2.262965e-03 7.549258e-03 1.888637e-02
 +
[6] 3.779542e-02 6.302390e-02 9.007019e-02 1.126216e-01 1.251601e-01
 +
[11] 1.251726e-01 1.137933e-01 9.481826e-02 7.292252e-02 5.207187e-02
 +
[16] 3.470068e-02 2.167707e-02 1.274356e-02 7.074795e-03 3.720595e-03
 +
[21] 1.858621e-03 8.841718e-04 4.014538e-04 1.743354e-04 7.254524e-05
 +
[26] 2.897743e-05 1.112843e-05 4.115040e-06 1.467156e-06 5.050044e-07
 +
[31] 1.680146e-07
 +
</pre>
 +
 
 +
===Zhrnutie===
 +
* Pravdedpobnostny model: myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealizovanou kockou
 +
* Vysledok je hodnota, ktoru budeme volat nahodna premenna
 +
* Tabulka, ktora pre kazdu moznu hodnotu nahodnej premennej urci je pravdepodobnost sa vola rozdelenie pravdepodobnosti, sucet hodnot v tabulke je 1
 +
* Znacenie typu P(X=7)=0.1
 +
 
 +
* Priklad: mame genom dlzky G=1mil., nahodne umiestnime N=10000 segmentov dlzky L=1000
 +
* Nahodna premenna X_i je pocet segmentov pokryvajucich urcitu poziciu i
 +
* Podobne, ako keby sme N krat hodili kocku, ktora ma cca 1 promile sancu padnu ako hlava a 99.9% ako znak a pytame sa, kolko krat padne znak (1 promile sme dostali po zaukruhleni z L/(G-L+1))
 +
* Rozdelenie pravdepobnosti sa v tomto pripade vola binomicke a existuje vzorec, ako ho spocitat
 +
* Takyto model nam moze pomoct urcit, kolko segmentov potrebujeme osekvenovat, aby napr. aspon 95% pozicii bolo pokrytych aspon 4 segmentami
 +
 
 +
==Dynamické programovanie==
 +
* Tuto techniku uvidime na dalsej prednaske na hladanie zarovnani (alignmentov)
 +
* Uvazujme problem rozmienania minci
 +
* Napr mame mince hodnoty 1,2,5 centov, z kazdej dostatok kusov
 +
* Ako mozeme zaplatit urcitu sumu, napr. 13 centov, s co najmensim poctom minci?
 +
* Ake je riesenie? 5+5+2+1 (4 mince)
 +
* Vseobecna formulacia:
 +
** Vstup: hodnoty k minci m_1,m_2,...,m_k a cielova suma X (vsetko kladne cele cisla)
 +
** Vystup: najmensi pocet minci, ktore potrebujeme na zaplatenie X
 +
* V nasom priklade k=3, m_1 = 1, m_2 = 2, m_3 = 5, X=13
 +
* Jednoduchy sposob riesenia: pouzi najvacsiu mincu, ktora je najviac X, odcitaj od X, opakuj
 +
* Priklad: najpr pouzijeme  mincu 5, zostane name X=8, pouzijeme opat mincu 5, zostane X=3, pouzijeme mincu 2, zostane X=1, pouzijeme mincu 1.
 +
* Nefunguje vzdy: zoberme mince hodnot 1,3,4. Pre X=6 najlepsie riesenie je 2 mince: 3+3, ale nas postup (algoritmus) najde 3 mince 4+1+1
 +
* Ukazeme si algoritmus na zaklade dyn. programovania, ktory pre kazdy vstup najde najlepsie riesenie
 +
* Zratame najlepsi pocet minci nielen pre X, ale pre vsetky mozne cielove sumy 1,2,3,...,X-1,X
 +
* To zda byt ako tazsia uloha, ale ukaze sa, ze z riesenia pre mensie sumy vieme zostavit riesenie pre vacsie sumy, takze nam to vlastne pomoze
 +
* Spravime si tabulku, kde si pre kazdu sumu i=0,1,2,...X pamatame A[i]=najmensi pocet minci, ktore treba na vyplatenie sumy i (ak je viac moznosti, zoberieme lubovolnu, napr. najvacsiu)
 +
* Ukazme si to na priklade s mincami 1,3,4
 +
<pre>
 +
i      0    1    2    3    4    5    6    7    8    9 
 +
A[i]  0    1    2    1    1    2    2    2    2    3
 +
</pre>
 +
* Nevyplnali sme ju ziadnym konkretnym postupom, nejde o algoritmus
 +
* Ale predstavme si, ze teraz chceme vyplnit A[10].
 +
* V najlepsom rieseni je prva minca, ktoru pouzijeme 1,3, alebo 4
 +
* ak je prva minca 1, zostane name zaplatit sumu 10-1=9, tu podla tabulky vieme najlepsie zaplatit na 3 mince, takze potrebujeme 4 mince na zaplatenie 10
 +
* ak je prva minca 3, zostane nam zaplatit 10-3 = 7, na co potrebujeme podla tabulky 2 mince, takze spolu 3 mince na zaplatenie 10
 +
* ak je prva minca 4, zostanem nam zaplatit 10-4 = 6, na co treba 2 mince, t.j. 3 mince na 10
 +
* Nevieme, ktora z tychto moznosti je naozaj v najlepsom rieseni, ale pre druhe dva pripady dostaveme menej minci, takze vysledok bude 3 mince (napr. 3+3+4)
 +
* Zovseobecnime: A[i] = 1+ min { A[i-1], A[i-3], A[i-4] }
 +
* A[11] = 1 + min { 3, 2, 2} = 1 + 2 = 3
 +
* Pre ine sustavy minci, napr. A[i] = 1+ min { A[i-1], A[i-2], A[i-5] }
 +
* Vo vseobecnosti A[i] = 1+ min { A[i-m_1], A[i-m_2], ..., A[i-m_k] }
 +
* Vzorec treba modifikovat pre male hodnoty i, ktore su mensie ako najvacsia minca, lebo A[-1] a pod. nie je definovane
 +
* Zapisme algoritmus pre vseobecne mince
 +
<pre>
 +
A[0] = 0;
 +
pre kazde i od 1 po X 
 +
  min = nekonecno
 +
  pre kazde j od 1 po k
 +
    ak i >= m_j a A[i-m_j] < min
 +
      min = A[i-m_j]
 +
  A[i] = 1 + min
 +
vypis A[X]
 +
</pre>
 +
 
 +
* Ako najst, ktore mince pouzit?
 +
* Pridame druhu tabulku B, kde v B[i] si pamatame, ktora bola najlepsia prva minca, ked sme pocitali A[i]
 +
<pre>
 +
i      0    1    2    3    4    5    6    7    8    9  10 
 +
A[i]  0    1    2    1    1    2    2    2    2    3    3
 +
B[i]  -    1    1    3    4    4    3    4    4    4    4
 +
</pre>
 +
* Potom ak chceme najst napr. mince pre 10, vidime, ze prva bola B[10]=4. Zvysok je 6 a prva minca na vyplatenie 6 je B[6]=3. Zostava nam 3 a B[3]=3. Potom nam uz zostava 0, takze sme hotovi. Takze najlepsie vyplatenie je 4+3+3
 +
* Algoritmus:
 +
<pre>
 +
Kym X>0
 +
  vypis B[X];
 +
  X = X-B[X];
 +
</pre>
 +
* Dynamicke programovanie vo vseobecnosti
 +
** Okrem riesenia celeho problemu, vyriesime aj spustu mensich podproblemov
 +
** Riesenia podproblemov ukladame do tabulky
 +
** Pri rieseni vacsieho podproblemu pouzivame uz vypocitane hodnoty pre mensie podproblemy
 +
* Aka je casova zlozitost?
 +
** Dva parametre: X a k.
 +
** Tabulka velkost O(X), kazde policko cas O(k). Celkovo O(Xk).
 +
 
 +
=Sekvenovanie genómov, cvičenia pre biológov=
 +
* Cvicenia pre biológov zo sekvenovania, pracovna verzia poznamok
 +
* Ospravedlnujem sa za chybajucu diakritiku
 +
* Pozrite tiez grafy k pravdepodobnosti: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/ci02.pdf
 +
 
 +
==Uvod do pravdepodobnosti==
 +
* Myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealnou kockou/korunou
 +
* Vysledkom experimentu je nejaka hodnota (napr. cislo, alebo aj niekolko cisel, retazec)
 +
* Tuto neznamu hodnotu budeme volat nahodna premenna
 +
* Zaujima nas pravdepodobnost, s akou nahodna premenna nadobuda jednotlive mozne hodnoty
 +
* T.j. ak experiment opakujeme vela krat, ako casto uvidime nejaky vysledok
 +
* Priklad 1: hodime idealizovanou kockou, premenna X bude hodnota, ktoru dostaneme
 +
* Mozne hodnoty 1,2,..,6, kazda rovnako pravdepodobna
 +
* Piseme napr. Pr(X=2)=1/6
 +
* Priklad 2: hodime 2x kockou, nahodna premenna X bude sucet hodnot, ktore dostaneme
 +
* Mozne hodnoty: 2,3,...,12
 +
* Kazda dvojica hodnot na kocke rovnako pravdepodobna, t.j. pr. 1/36
 +
* Sucet 5 mozeme dostat 1+4,2+3,3+2,4+1 - t.j. P(X=5) = 4/36
 +
* Sucet 11 mozeme dostat 5+6 alebo 6+5, t.j. P(X=11) = 2/36
 +
* Rozdelenie pravdepodobnosti: 2: 1/36, 3:2/36, 4: 3/36, ... 7: 6/36, 8: 5/36 ... 12: 1/36
 +
* Overte, ze sucet je 1
 +
 
 +
==Pouzitie pravdepodobnosti na analyzu potrebneho pokrytia pri sekvenovani==
 +
* Nas problem: spocitanie pokrytia
 +
** G = dlzka genomu, napr. 1 000 000 (predpokladajme, že je cirkulárny)
 +
** N = pocet segmentov (readov), napr. 10 000
 +
** L = dlzka readu, napr. 1000
 +
** Celkova dlzka segmentov NL, pokrytie (coverage) NL/G, v nasom pripade 10x
 +
** V priemere kazda baza pokryta 10x
 +
** Niektore su ale pokryte viackrat, ine menej.
 +
** Zaujimaju nas otazky typu: kolko baz ocakavame, ze bude pokrytych menej ako 3x?
 +
** Dolezite pri planovani experimentov (aku velke pokrytie potrebujem na dosiahnutie urcitej kvality)
 +
 
 +
 
 +
 
 +
* Pokrytie genomu: predpokladame, ze kazdy segment zacina na nahodnej pozicii zo vsetkych moznych G
 +
* Takze ak premenna Y_i bude zaciatok i-teho segmentu, jej rozdelenie bude rovnomerne
 +
** P(Y_i=1) = P(Y_i=2) = ... = P(Y_i=G-L+1) = 1/G
 +
 
 +
* Aka je pravdepodobnost ze nejaky konkretny i-ty segment pokryva konkretnu poziciu j?
 +
** P(Y_i>=j-L+1 and Y_i<=j) = P(Y_i=j-L+1)+...+P(Y_i=j) = L/G, oznacme tuto hodnotu p, nasom priklade p=0.001
 +
 
 +
* Uvazujme premennu X_j, ktora udava pocet segmentov pokryvajucich poziciu j
 +
** mozne hodnoty 0..N
 +
** i-ty segment pretina poziciu j s pravdepodobnostou p=L/G
 +
** to iste ako keby sme N krat hodili mincou, na ktorej spadne hlava s pravd. p a znak 1-p a oznacili ako X_j pocet hlav
 +
** Priklad: majme mincu, ktora ma hlavu s pr. 1/4 a hodime je 3x.
 +
<pre>
 +
HHH 1/64
 +
HHT 3/64
 +
HTH 3/64
 +
HTT 9/64
 +
THH 3/64
 +
THT 9/64
 +
TTH 9/64
 +
TTT 27/64
 +
</pre>
 +
* P(X_j=3) = 1/64, P(X_j=2)=9/64, P(X_j=1)=27/64, P(X_j=0)=27/64
 +
** taketo rozdelenie pravdepodobnosti sa vola binomicke
 +
** P(X_j = k) = (N choose k) p^k (1-p)^(N-k), kde <math>{N \choose k} = \frac{N!}{k!(N-k)!}</math> a n! = 1*2*...*n
 +
** napr pre priklad s troma hodmi kockou P(X_j=2) = 3!/(2!*1!) * (1/4)^2 * (3/4)^1 = 9/64
 +
** Zle sa pocita pre velke N, preto sa niekedy pouziva aproximacia Poissonovym rozdelenim s parametrom lambda = Np, ktore ma <math>e^{-\lambda}\lambda^k / k!</math>
 +
** Spat k sekvenovaniu: vieme spocitat rozdelenie pravdepodobnosti a tiez napr. P(X_i<3) = P(X_i=0)+P(X_i=1)+P(X_i=2) = 0.000045+0.00045+0.0023=0.0028 (v priemere ocakavame 45 baz nepokrytych, 2800 pokrytých menej ako 3 krát)
 +
** Takyto graf, odhad, vieme lahko spravit pre rozne pocty segmentov a tak naplanovat, kolko segmentov potrebujeme
 +
 
 +
* Chceme tiez odhadnut pocet kontigov (nebrali sme na cviceni, uvedene len pre zaujimavost)
 +
** Ak niekolko baz vobec nie je pokrytych segmentami, prerusi sa kontig
 +
** Vieme, kolko baz je v priemere nepokrytych, ale niektore mozu byt vedla seba
 +
** Novy kontig vznikne aj ak sa susedne segmenty malo prekryvaju
 +
** Predpokladajme, ze na spojenie dvoch segmentov potrebujeme prekryv aspon T
 +
** Lander a Waterman 1988 odhadli, ze dany segment ma pravdepodobnost zhruba exp(-N(L-T)/G), ze bude posledny v kontigu
 +
** Pre N segmentov dostaneme priemerny pocet kontigov N*exp(-N(L-T)/G)
 +
** Ako keby sme dlzku segmentu skratili o dlzku prekryvu
 +
** Pre T=50 dostaneme priemerny pocet kontigov 0.75 (v skutocnosti ide skor o pocet koncov kontigov - ak dostaneme cely kruh, tento pocet je 0, preto dostavame priemer nizsi ako 1)
 +
** ak znizime N na 5000 (5x pokrytie) dostaneme 44 kontigov
 +
 
 +
* Tento jednoduchy model nepokryva vsetky faktory:
 +
** Segmenty nemaju rovnaku dlzku
 +
** Problemy v zostavovani kvoli chybam, opakovaniam a pod.
 +
** Segmenty nie su rozlozene rovnomerne (cloning bias a pod.)
 +
** Vplyv koncov chromozomov pri linearnych chromozomoch
 +
** Uzitocny ako hruby odhad
 +
** Na spresnenie mozeme skusat spravit zlozitejsie modely, alebo simulovat data
 +
 
 +
* Poznamka: pravdepodobnosti z binomickeho rozdelenia mozeme lahko spocitat napr. statistickym softverom R. Tu su prikazy, ktore sa na to hodia, pre pripad, ze by vas to zaujimalo:
 +
<pre>
 +
dbinom(10,1e4,0.001);  #(12.5% miest ma pokrytie presne 10)
 +
pbinom(10,1e4,0.001,lower.tail=TRUE); #(58% miest ma pokrytie najviac 10)
 +
dbinom(0:30,1e4,0.001); #tabulka pravdepodobnosti
 +
[1] 4.517335e-05 4.521856e-04 2.262965e-03 7.549258e-03 1.888637e-02
 +
[6] 3.779542e-02 6.302390e-02 9.007019e-02 1.126216e-01 1.251601e-01
 +
[11] 1.251726e-01 1.137933e-01 9.481826e-02 7.292252e-02 5.207187e-02
 +
[16] 3.470068e-02 2.167707e-02 1.274356e-02 7.074795e-03 3.720595e-03
 +
[21] 1.858621e-03 8.841718e-04 4.014538e-04 1.743354e-04 7.254524e-05
 +
[26] 2.897743e-05 1.112843e-05 4.115040e-06 1.467156e-06 5.050044e-07
 +
[31] 1.680146e-07
 +
</pre>
 +
 
 +
===Zhrnutie===
 +
* Pravdedpobnostny model: myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealizovanou kockou
 +
* Vysledok je hodnota, ktoru budeme volat nahodna premenna
 +
* Tabulka, ktora pre kazdu moznu hodnotu nahodnej premennej urci je pravdepodobnost sa vola rozdelenie pravdepodobnosti, sucet hodnot v tabulke je 1
 +
* Znacenie typu P(X=7)=0.1
 +
 
 +
* Priklad: mame genom dlzky G=1mil., nahodne umiestnime N=10000 segmentov dlzky L=1000
 +
* Nahodna premenna X_i je pocet segmentov pokryvajucich urcitu poziciu i
 +
* Podobne, ako keby sme N krat hodili kocku, ktora ma cca 1 promile sancu padnu ako hlava a 99.9% ako znak a pytame sa, kolko krat padne znak (1 promile sme dostali po zaukruhleni z L/(G-L+1))
 +
* Rozdelenie pravdepobnosti sa v tomto pripade vola binomicke a existuje vzorec, ako ho spocitat
 +
* Takyto model nam moze pomoct urcit, kolko segmentov potrebujeme osekvenovat, aby napr. aspon 95% pozicii bolo pokrytych aspon 4 segmentami
 +
 
 +
==Dynamické programovanie==
 +
* Tuto techniku uvidime na dalsej prednaske na hladanie zarovnani (alignmentov)
 +
* Uvazujme problem rozmienania minci
 +
* Napr mame mince hodnoty 1,2,5 centov, z kazdej dostatok kusov
 +
* Ako mozeme zaplatit urcitu sumu, napr. 13 centov, s co najmensim poctom minci?
 +
* Ake je riesenie? 5+5+2+1 (4 mince)
 +
* Vseobecna formulacia:
 +
** Vstup: hodnoty k minci m_1,m_2,...,m_k a cielova suma X (vsetko kladne cele cisla)
 +
** Vystup: najmensi pocet minci, ktore potrebujeme na zaplatenie X
 +
* V nasom priklade k=3, m_1 = 1, m_2 = 2, m_3 = 5, X=13
 +
* Jednoduchy sposob riesenia: pouzi najvacsiu mincu, ktora je najviac X, odcitaj od X, opakuj
 +
* Priklad: najpr pouzijeme  mincu 5, zostane name X=8, pouzijeme opat mincu 5, zostane X=3, pouzijeme mincu 2, zostane X=1, pouzijeme mincu 1.
 +
* Nefunguje vzdy: zoberme mince hodnot 1,3,4. Pre X=6 najlepsie riesenie je 2 mince: 3+3, ale nas postup (algoritmus) najde 3 mince 4+1+1
 +
* Ukazeme si algoritmus na zaklade dyn. programovania, ktory pre kazdy vstup najde najlepsie riesenie
 +
* Zratame najlepsi pocet minci nielen pre X, ale pre vsetky mozne cielove sumy 1,2,3,...,X-1,X
 +
* To zda byt ako tazsia uloha, ale ukaze sa, ze z riesenia pre mensie sumy vieme zostavit riesenie pre vacsie sumy, takze nam to vlastne pomoze
 +
* Spravime si tabulku, kde si pre kazdu sumu i=0,1,2,...X pamatame A[i]=najmensi pocet minci, ktore treba na vyplatenie sumy i
 +
* Ukazme si to na priklade s mincami 1,3,4
 +
<pre>
 +
i      0    1    2    3    4    5    6    7    8    9 
 +
A[i]  0    1    2    1    1    2    2    2    2    3
 +
</pre>
 +
* Nevyplnali sme ju ziadnym konkretnym postupom, nejde o algoritmus
 +
* Ale predstavme si, ze teraz chceme vyplnit A[10].
 +
* V najlepsom rieseni je prva minca, ktoru pouzijeme 1,3, alebo 4
 +
* ak je prva minca 1, zostane name zaplatit sumu 10-1=9, tu podla tabulky vieme najlepsie zaplatit na 3 mince, takze potrebujeme 4 mince na zaplatenie 10
 +
* ak je prva minca 3, zostane nam zaplatit 10-3 = 7, na co potrebujeme podla tabulky 2 mince, takze spolu 3 mince na zaplatenie 10
 +
* ak je prva minca 4, zostanem nam zaplatit 10-4 = 6, na co treba 2 mince, t.j. 3 mince na 10
 +
* Nevieme, ktora z tychto moznosti je naozaj v najlepsom rieseni, ale pre druhe dva pripady dostaveme menej minci, takze vysledok bude 3 mince (napr. 3+3+4)
 +
* Zovseobecnime: A[i] = 1+ min { A[i-1], A[i-3], A[i-4] }
 +
* A[11] = 1 + min { 3, 2, 2} = 1 + 2 = 3
 +
* Pre ine sustavy minci, napr. A[i] = 1+ min { A[i-1], A[i-2], A[i-5] }
 +
* Vo vseobecnosti A[i] = 1+ min { A[i-m_1], A[i-m_2], ..., A[i-m_k] }
 +
* Vzorec treba modifikovat pre male hodnoty i, ktore su mensie ako najvacsia minca, lebo A[-1] a pod. nie je definovane
 +
* Zapisme algoritmus pre vseobecne mince
 +
<pre>
 +
A[0] = 0;
 +
pre kazde i od 1 po X 
 +
  min = nekonecno
 +
  pre kazde j od 1 po k
 +
    ak i >= m_j a A[i-m_j] < min
 +
      min = A[i-m_j]
 +
  A[i] = 1 + min
 +
vypis A[X]
 +
</pre>
 +
 
 +
* Ako najst, ktore mince pouzit?
 +
* Pridame druhu tabulku B, kde v B[i] si pamatame, ktora bola najlepsia prva minca, ked sme pocitali A[i] (ak je viac moznosti, zoberieme lubovolnu, napr. najvacsiu)
 +
<pre>
 +
i      0    1    2    3    4    5    6    7    8    9  10 
 +
A[i]  0    1    2    1    1    2    2    2    2    3    3
 +
B[i]  -    1    1    3    4    4    3    4    4    4    4
 +
</pre>
 +
* Potom ak chceme najst napr. mince pre 10, vidime, ze prva bola B[10]=4. Zvysok je 6 a prva minca na vyplatenie 6 je B[6]=3. Zostava nam 3 a B[3]=3. Potom nam uz zostava 0, takze sme hotovi. Takze najlepsie vyplatenie je 4+3+3
 +
* Algoritmus:
 +
<pre>
 +
Kym X>0
 +
  vypis B[X];
 +
  X = X-B[X];
 +
</pre>
 +
* Dynamicke programovanie vo vseobecnosti
 +
** Okrem riesenia celeho problemu, vyriesime aj spustu mensich podproblemov
 +
** Riesenia podproblemov ukladame do tabulky
 +
** Pri rieseni vacsieho podproblemu pouzivame uz vypocitane hodnoty pre mensie podproblemy
 +
* Aka je casova zlozitost?
 +
** Dva parametre: X a k.
 +
** Tabulka velkost O(X), kazde policko cas O(k). Celkovo O(Xk).
 +
 
 +
=Sekvenovanie genómov, cvičenia pre informatikov=
 +
* Poznamka: na cviceniach sme uvazovali linearne chromozomy, vypocet sa vsak zjednodusi pre cirkularne
 +
* Pozrite tiez grafy k pravdepodobnosti: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/ci02.pdf
 +
 
 +
==Uvod do pravdepodobnosti, pocitanie pokrytia genomov==
 +
 
 +
* Nas problem: spocitanie pokrytia
 +
** G = dlzka genomu, napr. 1 000 000 (predpokladajme, že je cirkulárny)
 +
** N = pocet segmentov (readov), napr. 10 000
 +
** L = dlzka readu, napr. 1000
 +
** Celkova dlzka segmentov NL, pokrytie (coverage) NL/G, v nasom pripade 10x
 +
** V priemere kazda baza pokryta 10x
 +
** Niektore su ale pokryte viackrat, ine menej.
 +
** Zaujimaju nas otazky typu: kolko baz ocakavame, ze bude pokrytych menej ako 3x?
 +
** Dolezite pri planovani experimentov (aku velke pokrytie potrebujem na dosiahnutie urcitej kvality)
 +
 
 +
* Uvod do pravdepodobnosti
 +
** Myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealnou kockou/korunou
 +
** Vysledkom experimentu je nejaka hodnota (napr. cislo, alebo aj niekolko cisel, retazec)
 +
** Tuto neznamu hodnotu budeme volat nahodna premenna
 +
** Zaujima nas pravdepodobnost, s akou nahodna premenna nadobuda jednotlive mozne hodnoty
 +
** T.j. ak experiment opakujeme vela krat, ako casto uvidime nejaky vysledok
 +
** Priklad 1: hodime idealizovanou kockou, premenna X bude hodnota, ktoru dostaneme
 +
** Mozne hodnoty 1,2,..,6, kazda rovnako pravdepodobna
 +
** Piseme napr. Pr(X=2)=1/6
 +
** Priklad 2: hodime 2x kockou, nahodna premenna X bude sucet hodnot, ktore dostaneme
 +
** Mozne hodnoty: 2,3,...,12
 +
** Kazda dvojica hodnot na kocke rovnako pravdepodobna, t.j. pr. 1/36
 +
** Sucet 5 mozeme dostat 1+4,2+3,3+2,4+1 - t.j. P(X=5) = 4/36
 +
** Sucet 11 mozeme dostat 5+6 alebo 6+5, t.j. P(X=11) = 2/36
 +
** Rozdelenie pravdepodobnosti: 2: 1/36, 3:2/36, 4: 3/36, ... 7: 6/36, 8: 5/36 ... 12: 1/36
 +
** Sucet tychot hodnot je 1
 +
 
 +
* Pokrytie genomu: predpokladame, ze kazdy segment zacina na nahodnej pozicii zo vsetkych moznych G
 +
* Takze ak premenna Y_i bude zaciatok i-teho segmentu, jej rozdelenie bude rovnomerne
 +
** P(Y_i=1) = P(Y_i=2) = ... = P(Y_i=G-L+1) = 1/G
 +
 
 +
* Aka je pravdepodobnost ze nejaky konkretny i-ty segment pokryva konkretnu poziciu j?
 +
** P(Y_i>=j-L+1 and Y_i<=j) = P(Y_i=j-L+1)+...+P(Y_i=j) = L/G, oznacme tuto hodnotu p, nasom priklade p=0.001
 +
 
 +
* Uvazujme premennu X_j, ktora udava pocet segmentov pokryvajucich poziciu j
 +
** mozne hodnoty 0..N
 +
** i-ty segment pretina poziciu j s pravdepodobnostou p=L/G
 +
** to iste ako keby sme N krat hodili mincou, na ktorej spadne hlava s pravd. p a znak 1-p a oznacili ako X_j pocet hlav
 +
** taketo rozdelenie pravdepodobnosti sa vola binomicke
 +
** P(X_j = k) = (N choose k) p^k (1-p)^(N-k)
 +
** Zle sa pocita pre velke N, preto sa niekedy pouziva aproximacia Poissonovym rozdelenim s parametrom lambda = Np, ktore ma <math>e^{-\lambda}\lambda^k / k!</math>
 +
** Spat k sekvenovaniu: vieme spocitat rozdelenie pravdepodobnosti a tiez napr. P(X_i<3) = P(X_i=0)+P(X_i=1)+P(X_i=2) = 0.000045+0.00045+0.0023=0.0028 (v priemere ocakavame 45 baz nepokrytych, 2800 s menej ako 3 segmentami)
 +
** Takyto graf, odhad, vieme lahko spravit pre rozne pocty segmentov a tak naplanovat, kolko segmentov potrebujeme
 +
 
 +
* Chceme tiez odhadnut pocet kontigov (podla clanku Lander a Waterman 1988)
 +
** Ak niekolko baz vobec nie je pokrytych segmentami, prerusi sa kontig
 +
** Vieme, kolko baz je v priemere nepokrytych, ale niektore mozu byt vedla seba
 +
** Novy kontig vznikne aj ak sa susedne segmenty malo prekryvaju
 +
** Predpokladajme, ze na spojenie dvoch segmentov potrebujeme prekryv aspon T=50
 +
** Aka je pravdepodobnost, ze dany segment i bude posledny v kontigu?
 +
** Ziaden segment j!=i nesmie zacinat v prvych L-T bazach kontigu i
 +
** Kazdy segment tam zacina s pravdepodobnostou (L-T)/G, v priemere ich tam zacne N(L-T)/G
 +
** Pouzijeme Poissonovo rozdelenie pre <math>\lambda=N(L-T)/G</math> a k=0, t.j. pravdepodobnost, ze tam nezacne ziaden je zhruba exp(-N(L-T)/G)
 +
** Pre N segmentov dostaneme priemerny pocet kontigov N*exp(-N(L-T)/G)
 +
** Ako keby sme dlzku segmentu skratili o dlzku prekryvu
 +
** Pre T=50 dostaneme priemerny pocet koncov kontigov 0.75 (ak pokryjeme cely kruh, mame nula koncov, preto je hodnota mensia ako 1). Ak znizime N na 5000 (5x pokrytie) dostaneme 43 kontigov
 +
 
 +
* Moze sa zdat zvlastne, ze pri priemernom pocte nepokrytych baz 45 mame pocet koncov v priemere menej ako jedna. Situacia je vsak taka, ze pri opakovaniach tohto experimentu casto dostavame jeden suvisly kontig, ale ak je uz aspon jeden koniec kontigu, byva tam pomerne velka medzera. Tu je napriklad 50 opakovani expertimentu s T=0, priemerny pocet koncov je 0.55, priemerny pocet nepokrytych baz je 49.
 +
<pre>
 +
empty: 0 last: 0            empty: 0 last: 0   empty: 0 last: 0     
 +
empty: 274 last: 2     empty: 282 last: 1   empty: 0 last: 0     
 +
empty: 0 last: 0     empty: 0 last: 0   empty: 8 last: 1     
 +
empty: 0 last: 0     empty: 12 last: 1   empty: 0 last: 0     
 +
empty: 122 last: 1     empty: 135 last: 1   empty: 111 last: 1   
 +
empty: 13 last: 1     empty: 1 last: 1   empty: 56 last: 1   
 +
empty: 265 last: 1     empty: 0 last: 0   empty: 10 last: 1   
 +
empty: 0 last: 0     empty: 0 last: 0   empty: 130 last: 1   
 +
empty: 217 last: 1     empty: 3 last: 1   empty: 0 last: 0     
 +
empty: 0 last: 0     empty: 0 last: 0   empty: 86 last: 1   
 +
empty: 139 last: 2     empty: 0 last: 0   empty: 0 last: 0     
 +
empty: 76 last: 1     empty: 221 last: 1   empty: 26 last: 1   
 +
empty: 0 last: 0     empty: 1 last: 1   empty: 0 last: 0     
 +
empty: 0 last: 0     empty: 0 last: 0   empty: 0 last: 0     
 +
empty: 0 last: 0     empty: 0 last: 0   empty: 12 last: 1   
 +
empty: 103 last: 2     empty: 0 last: 0   empty: 71 last: 1   
 +
empty: 69 last: 1     empty: 0 last: 0  
 +
</pre>      
 +
             
 +
* Tento jednoduchy model nepokryva vsetky faktory:
 +
** Segmenty nemaju rovnaku dlzku
 +
** Problemy v zostavovani kvoli chybam, opkaovaniam a pod.
 +
** Segmenty nie su rozlozene rovnomerne (cloning bias a pod.)
 +
** Vplyv koncov chromozomov
 +
** Uzitocny ako hruby odhad
 +
** Na spresnenie mozeme skusat spravit zlozitejsie modely, alebo simulovat data
 +
 
 +
* Poznamka: pravdepodobnosti z binomickeho rozdelenia mozeme lahko spocitat napr. statistickym softverom R. Tu su prikazy, ktore sa na to hodia, pre pripad, ze by vas to zaujimalo:
 +
<pre>
 +
dbinom(10,1e4,0.001);  #(12.5% miest ma pokrytie presne 10)
 +
pbinom(10,1e4,0.001,lower.tail=TRUE); #(58% miest ma pokrytie najviac 10)
 +
dbinom(0:30,1e4,0.001); #tabulka pravdepodobnosti
 +
[1] 4.517335e-05 4.521856e-04 2.262965e-03 7.549258e-03 1.888637e-02
 +
[6] 3.779542e-02 6.302390e-02 9.007019e-02 1.126216e-01 1.251601e-01
 +
[11] 1.251726e-01 1.137933e-01 9.481826e-02 7.292252e-02 5.207187e-02
 +
[16] 3.470068e-02 2.167707e-02 1.274356e-02 7.074795e-03 3.720595e-03
 +
[21] 1.858621e-03 8.841718e-04 4.014538e-04 1.743354e-04 7.254524e-05
 +
[26] 2.897743e-05 1.112843e-05 4.115040e-06 1.467156e-06 5.050044e-07
 +
[31] 1.680146e-07
 +
</pre>
 +
 
 +
====Zhrnutie====
 +
* Pravdedpobnostny model: myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealizovanou kockou
 +
* Vysledok je hodnota, ktoru budeme volat nahodna premenna
 +
* Tabulka, ktora pre kazdu moznu hodnotu nahodnej premennej urci je pravdepodobnost sa vola rozdelenie pravdepodobnosti, sucet hodnot v tabulke je 1
 +
* Znacenie typu P(X=7)=0.1
 +
 
 +
* Priklad: mame genom dlzky G=1mil., nahodne umiestnime N=10000 segmentov dlzky L=1000
 +
* Nahodna premenna X_i je pocet segmentov pokryvajucich urcitu poziciu i
 +
* Podobne, ako keby sme N krat hodili kocku, ktora ma cca 1 promile sancu padnu ako hlava a 99.9% ako znak a pytame sa, kolko krat padne znak (1 promile sme dostali po zaukruhleni z L/(G-L+1))
 +
* Rozdelenie pravdepobnosti sa v tomto pripade vola binomicke a existuje vzorec, ako ho spocitat
 +
* Takyto model nam moze pomoct urcit, kolko segmentov potrebujeme osekvenovat, aby napr. aspon 95% pozicii bolo pokrytych aspon 4 segmentami
 +
 
 +
=Sekvenovanie genómov 2, cvičenia pre informatikov=
 +
==Zostavovanie genomu pomocou eulerovskych tahov==
 +
* Opakovanie z teorie grafov:
 +
** Hamiltonovska kruznica: cyklus, ktory prechadza kazdym vrcholom prave raz
 +
** Eulerov tah: tah, ktory prechadza po kazdej hrane prave raz
 +
** Zistit, ci ma graf H.c. je NP-tazke
 +
** Problem obchodneho cestujuceho: najst najlacnejsiu H.c. je tiez NP-tazky
 +
** Zistit ci ma graf E.t. a najst ho je lahke
 +
*** neorientovany graf na E.t. <=> je suvisly a vsetky vrcholy okrem najviac dvoch maju parny stupen
 +
*** orientovany graf ma E.t. z u do v <=> po pridani hrany z v do u je silne suvisly a vsetky vrcholy maju rovnako vchadzajucich ako vychadzajucich hran
 +
 
 +
* Najkratsie spolocne nadslovo: zjednodusena verzia problemu zostavovania genomov zo segmentov
 +
* Mame danu mnozinu retazcov, chceme zostavit najkratsi retazec, ktoremu su vsetky podslova
 +
* Priklad: GCCAAC,CCTGCC,ACCTTC zlozime v poradi 2,1,3: CCTGCCAACCTTC
 +
* Mozeme si predstavit problem ako obmenu problemu obchodneho cestujuceho:
 +
** retazcom priradim vrcholy
 +
** dlzka hrany z a do b je <math>|b| -</math> prekryv medzi a a b
 +
** specialny zaciatocny vrchol, z ktoreho hrany do kazdeho ''a'' s cenou ''|a|''
 +
** specialny koncovy vrchol, do ktoreho hrana z kazdeho a s cenou 0
 +
** hrana z koncoveho do zaciatocneho vrcholu na uzavretie cyklu
 +
** Hamiltonovske kruznice zodpovedaju nadslovam
 +
** Ak najdeme najlacnejsiu Hamiltonovsku kruznicu, mame najkratsie nadslovo
 +
* Ale vieme, ze problem obchodneho cestujuceho je NP-tazky
 +
* Je toto dokaz, ze aj najkratsie spolocne nadslovo je NP-tazke?
 +
 
 +
* Pevzner, Tang and Waterman 2001 navrhuju namiesto Hamiltonovskej kruznice pouzit Eulerov tah (na inom grafe)
 +
* deBruijnov graf stupna k:
 +
** vrcholy: podretazce dlzky k vsetkych vstupnych retazcov
 +
** hrany: nadvazujuce k-tice v ramci kazdeho segmentu (s prekryvom k-1)
 +
* Priklad, k=2
 +
* Chceme prejst po vsetkych hranach, chceme chodit co najmenej, takze po kazdej len raz - Eulerov tah
 +
* V com je finta? Ako sme sa dostali od NP-tazkeho problemu k lahkemu?
 +
* Co ak deBruijnov graf nema Eulerovsky tah? Znasobime niektore hrany, tieto budu zodpovedat opakovaniam
 +
* Čo ak de Bruijnov graf má viacero Eulerovských ťahov?
 +
** Zoberieme taký ťah, ktorý obsahuje pôvodné segmenty ako podcesty
 +
** Zase ťažký problém, ale v praxi pomáhajú jednoduché pravidlá
 +
* Opatrné riešenie: Ak z vrcholu 2 cesty, rozdeľ na kontigy
 +
* Pouzitie sparovanych segmentov:
 +
** Nájdi vrcholy v grafe, ktoré im zodpovedajú
 +
** Ak je v grafe jediná cesta medzi týmito vrcholmi vhodnej dĺžky, premeň spárované segmenty na jeden veľký segment
 +
* Dalsie problemy, ktore treba riesit
 +
** sekvenovacie chyby: vytvaraju "bubliny" alebo slepe cesty
 +
** dve vlakna
 +
* Realne pouzivana technologia, aj pre sekvenovanie novej generacie, napr. Zerbino and Birney 2008 program Velvet
 +
 
 +
==Opakovanie dynamického programovania==
 +
* Tuto techniku uvidime dnes na prednaske na hladanie zarovnani (alignmentov)
 +
* Uvazujme problem rozmienania minci
 +
* Napr mame mince hodnoty 1,2,5 centov, z kazdej dostatok kusov
 +
* Ako mozeme zaplatit urcitu sumu, napr. 13 centov, s co najmensim poctom minci?
 +
* Ake je riesenie? 5+5+2+1 (4 mince)
 +
* Vseobecna formulacia:
 +
** Vstup: hodnoty k minci m_1,m_2,...,m_k a cielova suma X (vsetko kladne cele cisla)
 +
** Vystup: najmensi pocet minci, ktore potrebujeme na zaplatenie X
 +
* V nasom priklade k=3, m_1 = 1, m_2 = 2, m_3 = 5, X=13
 +
* Jednoduchy sposob riesenia: pouzi najvacsiu mincu, ktora je najviac X, odcitaj od X, opakuj
 +
* Priklad: najpr pouzijeme  mincu 5, zostane name X=8, pouzijeme opat mincu 5, zostane X=3, pouzijeme mincu 2, zostane X=1, pouzijeme mincu 1.
 +
* Nefunguje vzdy: zoberme mince hodnot 1,3,4. Pre X=6 najlepsie riesenie je 2 mince: 3+3, ale nas postup (algoritmus) najde 3 mince 4+1+1
 +
* Ukazeme si algoritmus na zaklade dyn. programovania, ktory pre kazdy vstup najde najlepsie riesenie
 +
* Zratame najlepsi pocet minci nielen pre X, ale pre vsetky mozne cielove sumy 1,2,3,...,X-1,X
 +
* To zda byt ako tazsia uloha, ale ukaze sa, ze z riesenia pre mensie sumy vieme zostavit riesenie pre vacsie sumy, takze nam to vlastne pomoze
 +
* Spravime si tabulku, kde si pre kazdu sumu i=0,1,2,...X pamatame A[i]=najmensi pocet minci, ktore treba na vyplatenie sumy i (ak je viac moznosti, zoberieme lubovolnu, napr. najvacsiu)
 +
* Ukazme si to na priklade s mincami 1,3,4
 +
<pre>
 +
i      0    1    2    3    4    5    6    7    8    9 
 +
A[i]  0    1    2    1    1    2    2    2    2    3
 +
</pre>
 +
* Nevyplnali sme ju ziadnym konkretnym postupom, nejde o algoritmus
 +
* Ale predstavme si, ze teraz chceme vyplnit A[10].
 +
* V najlepsom rieseni je prva minca, ktoru pouzijeme 1,3, alebo 4
 +
* ak je prva minca 1, zostane name zaplatit sumu 10-1=9, tu podla tabulky vieme najlepsie zaplatit na 3 mince, takze potrebujeme 4 mince na zaplatenie 10
 +
* ak je prva minca 3, zostane nam zaplatit 10-3 = 7, na co potrebujeme podla tabulky 2 mince, takze spolu 3 mince na zaplatenie 10
 +
* ak je prva minca 4, zostanem nam zaplatit 10-4 = 6, na co treba 2 mince, t.j. 3 mince na 10
 +
* Nevieme, ktora z tychto moznosti je naozaj v najlepsom rieseni, ale pre druhe dva pripady dostaveme menej minci, takze vysledok bude 3 mince (napr. 3+3+4)
 +
* Zovseobecnime: A[i] = 1+ min { A[i-1], A[i-3], A[i-4] }
 +
* A[11] = 1 + min { 3, 2, 2} = 1 + 2 = 3
 +
* Pre ine sustavy minci, napr. A[i] = 1+ min { A[i-1], A[i-2], A[i-5] }
 +
* Vo vseobecnosti A[i] = 1+ min { A[i-m_1], A[i-m_2], ..., A[i-m_k] }
 +
* Vzorec treba modifikovat pre male hodnoty i, ktore su mensie ako najvacsia minca, lebo A[-1] a pod. nie je definovane
 +
* Zapisme algoritmus pre vseobecne mince
 +
<pre>
 +
A[0] = 0;
 +
pre kazde i od 1 po X 
 +
  min = nekonecno
 +
  pre kazde j od 1 po k
 +
    ak i >= m_j a A[i-m_j] < min
 +
      min = A[i-m_j]
 +
  A[i] = 1 + min
 +
vypis A[X]
 +
</pre>
 +
 
 +
* Ako najst, ktore mince pouzit?
 +
* Pridame druhu tabulku B, kde v B[i] si pamatame, ktora bola najlepsia prva minca, ked sme pocitali A[i]
 +
<pre>
 +
i      0    1    2    3    4    5    6    7    8    9  10 
 +
A[i]  0    1    2    1    1    2    2    2    2    3    3
 +
B[i]  -    1    1    3    4    4    3    4    4    4    4
 +
</pre>
 +
* Potom ak chceme najst napr. mince pre 10, vidime, ze prva bola B[10]=4. Zvysok je 6 a prva minca na vyplatenie 6 je B[6]=3. Zostava nam 3 a B[3]=3. Potom nam uz zostava 0, takze sme hotovi. Takze najlepsie vyplatenie je 4+3+3
 +
* Algoritmus:
 +
<pre>
 +
Kym X>0
 +
  vypis B[X];
 +
  X = X-B[X];
 +
</pre>
 +
* Dynamicke programovanie vo vseobecnosti
 +
** Okrem riesenia celeho problemu, vyriesime aj spustu mensich podproblemov
 +
** Riesenia podproblemov ukladame do tabulky
 +
** Pri rieseni vacsieho podproblemu pouzivame uz vypocitane hodnoty pre mensie podproblemy
 +
* Aka je casova zlozitost?
 +
** Dva parametre: X a k.
 +
** Tabulka velkost O(X), kazde policko cas O(k). Celkovo O(Xk).
 +
 
 +
==Uvod do proteomiky==
 +
 
 +
* Viac informacii: [http://www.cs.uwaterloo.ca/~binma/cs882/], [http://cseweb.ucsd.edu/~vbafna/pub/wileyeastern.pdf Bafna, Reinert 2004]
 +
 
 +
Gélová elektroforéza (gel electrophoresis)
 +
* Izolovanie jednotlivých proteínov, porovnávanie ich množstva.
 +
* Negatívne nabité proteíny migrujú v géli v elektrickom poli. Väčšie proteíny migrujú pomalšie, dochádza v oddeleniu do pruhov. Táto metóda sa používa aj na DNA a RNA. Pre proteíny možno tiež robiť 2D gél (podľa hmotnosti a náboja).
 +
* Bioinformatický problém: zisti, ktoré fliačiky na dvoch 2D géloch zodpovedajú tým istým proteínom.
 +
* Automatizovanejšia technológia: kvapalinová chromatografia (liquid chromatography) - separácia proteínov v tenkom stĺpci
 +
 
 +
Hmotnostná spektrometria (mass spectrometry)
 +
* Hmotnostná spektrometria meria pomer hmostnosť/náboj molekúl vo vzorke.
 +
* Používa sa na identifikáciu proteínov, napr. z 2D gélu.
 +
* Proteín nasekáme enzýmom trypsín (seká na [KR]{P}) na peptidy
 +
* Meriame hmostnosť kúskov, porovnáme s databázou proteínov.
 +
* Tandemová hmotnostná spektrometria (MS/MS) ďalej fragmentuje každý kúsok a dosiahne podrobnejšie spektrum, ktoré obsahuje viac informácie
 +
 
 +
==Sekvenovanie proteinov pomocou MS/MS==
 +
 
 +
Berme do uvahy len y-iony, ktore zodpovedaju hmotnosti prefixu
 +
* Vsetky hmotnosti budu cele cisla, pozname celkovu hmotnost peptidu M a hmotnosti aminokyselin
 +
* Mame skorovaciu funkciu f(m), ktora pre prefix peptidu s hmotnostou m urci skore, ako dobre sedi so spektrom
 +
* Chceme najst peptid, ktory maximalizuje sucet skore svojich prefixov
 +
* Dynamicke programovanie s podproblemom A[m] je skore najlepsieho prefixu s hmotnostou m
 +
** Rekurencia? Zlozitost? Je to polynomialny algoritmus? (Co je vlastne vstup?)
 +
 
 +
Co ak berieme do uvahy aj b-iony, ktore meraju hmotnost sufixu?
 +
* Idea 1: upravme skorovaciu funkciou f(m): skontroluje signal na pozicii m aj M-m
 +
* Problem: jeden signal sa moze ratat dvakrat, raz ako b-ion, raz ako y-ion, algoritmus ma tendenciu pridavat taketo artefakty
 +
* Nove skorovanie: ak hmotnost nejakeho prefixu a nejakeho sufixu su rovnake, zarataj ich skore iba raz (skore peptidu je skore mnoziny hmotnosti jeho prefixov a sufixov)
 +
* Definuj novy podproblem: A[p,s] je najlepsie skore, ktore moze dosiahnut prefix s hmotnostou p a sufix s hmotnostou s
 +
* Pre p+s<=M a p<=s mame A[p,s] = max_a A[p, s-a] + f(s) * (1-delta(p,s)) a naopak pre p>s mame A[p,s] = max_a A[p-a, s] + f(p)
 +
* Ako ukoncime dynamicke programovanie? Zlozitost?
 +
* Zrychlenie: staci uvazovat s od p-w po p+w kde w je maximalna hmotnost aminokyseliny
 +
 
 +
==Detekcia znamych proteinov pomocou MS==
 +
* Predikcia spektra pre dany peptid, porovnanie s realnym spektrom, zlozite skorovacie schemy
 +
* Filtrovanie kandidatov na proteiny, ktore obsahuju peptidy s pozorovanou hmotnostou
 +
* Problem: mame danu databazu proteinov a cielovu hmotnost peptidu M, pozname hmotnost kazdej aminokyseliny. Najdite vsetky podretazce s hmotnostou M.
 +
* Databazu proteinov si vieme predstavit aj ako postupnost cisel - hmotnosti aminokyselin, hladame intervaly su suctom M.
 +
* Trivialny algoritmus: zacni na kazdej pozicii, pricitavaj kym nedosiahnes hmotnost>=M. Zlozitost? Vieme zlepsit?
 +
* Predspracovanie: pocitajme hmotnosti vsetkych podretazcov, potom vyhladajme binarne. Zlozitost?
 +
** Dat sa aj cas na predspracovanie pomocou FFT (Fast Fourier Transform) [http://gi.cebitec.uni-bielefeld.de/people/zsuzsa/papers/cpm_bcl.pdf Bansal, Cieliebak, Liptak 2004]
 +
 
 +
=Zarovnávanie sekvencií, cvičenia pre biológov=
 +
===Opakovanie dynamickeho programovania===
 +
* Uvazujme skorovanie zhoda +2, nezhoda -1, medzera -1
 +
* Retazce TAACGG a CACACT
 +
 
 +
Globalne zarovnanie
 +
* Rekurencia: A[i,j] = max {A[i-1,j]-1, A[i,j-1]-1, A[i-1,j-1]+c(p_i, q_j) }, pricom A[0,i]=-i, A[i,0]=-i
 +
<pre>
 +
        C  A  C  A  C  T
 +
    0  -1  -2  -3  -4  -5  -6
 +
T  -1  -1  -2  -3  -4  -5  -3
 +
A  -2  -2  1  0  -1  -2  -3
 +
A  -3  -3  0  0  2  1  0
 +
C  -4  -1  -1  2  1  4  3
 +
G  -5  -2  -2  1  1  3  3
 +
G  -6  -3  -3  0  0  2  2
 +
 
 +
TA-ACGG
 +
CACAC-T
 +
</pre>
 +
 
 +
Lokalne zarovnanie
 +
* Rekurencia: A[i,j] = max {0, A[i-1,j]-1, A[i,j-1]-1, A[i-1,j-1]+c(p_i, q_j) }, pricom A[0,i]=0, A[i,0]=0
 +
<pre>
 +
        C  A  C  A  C  T
 +
    0  0  0  0  0  0  0
 +
T  0  0  0  0  0  0  2
 +
A  0  0  2  1  2  1  1
 +
A  0  0  2  1  3  2  1
 +
C  0  2  1  4  3  5  4
 +
G  0  1  1  3  3  4  4
 +
G  0  0  0  2  2  3  3
 +
 
 +
ACAC
 +
A-AC
 +
</pre>
 +
 
 +
===Dotploty===
 +
* Dotplot je graf, ktory ma na kazdej osi jednu sekvenciu a ciarky zobrazuju lokalne zarovnania (cesty v matici)
 +
* Na slidoch mame niekolko prikladov dotplotov porovnavajucich rozne mitochondrialne genomy
 +
* Tieto boli vytvorene pomocou nastroja YASS http://bioinfo.lifl.fr/yass/yass.php
 +
* Dalsi priklad je zarovnanie genu Oaz Drosophila zinc finger s genomickym usekom chr2R:10,346,241-10,352,965
 +
* Trochu iny dotplot, ktory funguje pre proteiny a nerobi lokalne zarovnania, iba spocita skore bez medzier v kazdom okne danej vysky a nakresli ciaru ak pre kroci urcenu hodnotu
 +
* http://emboss.bioinformatics.nl/cgi-bin/emboss/dotmatcher
 +
* Vyskusame protein escargot voci sebe s hodnotami http://pfam.sanger.ac.uk/protein/ESCA_DROME window 8 threshold 24
 +
* Pomocou YASSu vyskusame kluster zhlukov PRAME z ludskeho genomu
 +
* Obrázky dotplotov [http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb03.pdf na slidoch]
 +
 
 +
===Prakticke cvicenie: Yass a dotploty===
 +
* Na stranke UCSC genome browseru http://genome.ucsc.edu/ si zadajte ludsky genom, najnovsiu verziu (hg19)
 +
* V druhom okne/tabe si otvorte YASS server na adrese http://bioinfo.lifl.fr/yass/yass.php
 +
* V genome browseri zadajte region chr21:10,018,860-10,019,178
 +
** tento región obsahuje '''Alu repeat'''. Tieto opakovania tvoria cca 10% ľudského genómu, viac ako milión kópií
 +
** zobrazte si DNA sekvenciu tohto useku takto: na hornej modrej liste zvolte DNA, na  dalsej obrazovke tlacidlo get DNA
 +
* '''DNA sekvenciu Alu opakovania chceme zarovnat samu k sebe programom YASS'''
 +
** DNA sekvenciu Alu opakovania skopirujte do okienka "Paste your sequences" v stranke Yass-u a dvakrat stlacte tlacidlo Select vedla okienka
 +
** Nizsie v casti "Selected DNA sequence(s)" by sa Vam malo v oboch riadkoch objavit "Pasted file 1"
 +
** Nizsie v casti "Parameters" zvolte "E-value threshold" 0.01 a stlacte "Run YASS"
 +
** Vo vysledkoch si pozrite Dotplot, '''co z neho viete usudit o podobnosti jednotlivych casti Alu opakovania?'''
 +
** Vo vysledkoch si pozrite Raw: blast, '''ake su suradnice opakujucej sa casti a kolko zarovnanie obsahuje zhod/nezhod/medzier?''' (Pozor, prve zarovnanie je cela sekvencia sama k sebe, druhe je asi to, co chcete)
 +
* V genome browseri zadajte poziciu chr21:9,440,000-9,450,000 (10kb sekvencie na chromozome 21, s niekolkymi vyskytmi Alu)
 +
* '''Chceme teraz porovnat tento usek genomu so sekvenciou Alu pomocou YASSu'''
 +
** Ako predtym si stiahnite DNA sekvenciu tohto useku
 +
** V YASSe chodte sipkou spat na formular
 +
** Skopirujte DNA sekvenciu do YASSoveho formulara, do okienka vpravo (vyznacit si ju mozete klavesovou kombinaciou Ctrl-A alebo Select All v menu Edit),  
 +
** V casti formulara Selected DNA sequence(s) stlacte Remove pri hornom riadku
 +
** Pri pravom okienku, kam ste nakopirovali sekvenciu, stlacte Select
 +
** Zase stlacte Run YASS
 +
** Pozrite si vysledok ako Dotplot, '''kolko opakovani Alu ste nasli? Preco je jedno cervene? '''
 +
** Pozrite si Raw: blast, '''na kolko percent sa podoba najpodobnejsia a na kolko druha najpodobnejsia kopia?'''
 +
 
 +
===Sekvenovanie v UCSC genome browseri===
 +
* Vráťte sa na UCSC genome browser http://genome.ucsc.edu/
 +
* Pozrieme si niekoľko vecí týkajúcich sa sekvenovania a skladania genómov
 +
* Hore v modrom menu zvoľte Genomes
 +
* Na ďalšej stránke zvoľte človeka a v menu Assembly '''zistite, kedy boli pridané posledné dve verzie ľudského genómu (hg18 a hg19)'''
 +
* Na tej istej stránke dole nájdete stručný popis zvolenej verzie genómu. '''Pre ktoré oblasti genómu máme v hg19 viacero alternatívnych verzií?'''
 +
* Zadajte región chr21:31,200,000-31,350,000
 +
* Zapnite si tracky Mapability a RepeatMasker na "full"
 +
* Mapability: nakoľko sa daný úsek opakuje v genóme a či teda vieme jednoznačne jeho ready namapovať pri použití Next generation sequencing
 +
* Ako a prečo sa  pri rôznych dĺžkach readov líšia? (Keď kliknete na linku "Mapability", môžete si prečítať bližšie detaily.)
 +
* Približne v strede zobrazeného regiónu je pokles mapovateľnosti. '''Akému typu opakovania zodpovedá?''' (pozrite track RepeatMasker)
 +
* Zapnite si tracky "Assembly" a "Gaps" a pozrite si región chr2:110,000,000-110,300,000. '''Aká dlhá je neosekvenovaná medzera (gap) v strede tohto regiónu?''' Približnú veľkosť môžete odčítať z obrázku, presnejší údaj zistíte kliknutím na čierny obdĺžnik zodpovedajúci tejto medzere (úplne presnú dĺžku aj tak nepoznáme, nakoľko nie je osekvenovaná).
 +
* Prejdite na genóm Rhesus, región chr7:59,022,000-59,024,000, zapnite si tracky Contigs, Gaps, Quality scores
 +
* '''Aké typy problémov v kvalite sekvencie v tomto regióne vidíte?'''
 +
 
 +
=Zarovnávanie sekvencií 2, cvičenia pre biológov=
 +
==Uvod do pravdepodobnosti==
 +
 
 +
Opakovanie E-value:
 +
* Priklady k tejto casti v prezentacii [http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb04.pdf]
 +
* Mame dotaz dlzky m, databazu dlzky n, skore najlepsieho lok. zarovnania S
 +
* E-value je ocakavany pocet zarovnani so skore aspon S ak dotaz aj databaza su nahodne
 +
* Hrackarsky priklad: dotaz dlzky m=4, databaza dlzky n=200, S=4, t.j. presny vyskyt dotazu v databaze (pre presne vyskyty sa pravdepodobnosti pocitaju ovela lahsie ako ked dovolime nezhody a medzery)
 +
* Pravdepodobnostny model: Myslienkovy experiment obsahujuci nahodne javy (hod kockou a pod.)
 +
* Priklad: pravdepodobnostny model na generovanie nahodnej sekvencie:
 +
* Mame vrece s gulockami oznacenyni A,C,G,T, pricom gulocok oznacenych A je 30%, C 20%, G 20% a T 30%.
 +
* Vytiahneme gulicku, zapiseme si pismeno, hodime ju naspat, zamiesame a opakujeme s dalsim pismenom atd az kym nevygenerujeme m pismen pre dotaz a n pismen pre databazu
 +
** V nasom modeli mame obsah GC 40%
 +
* Pre nase vygenerovane sekvencie spocitame, kolkokrat sa dotaz vyskytuje v databaze
 +
* Cely experiment opakujeme vela krat a spocitame priemerny pocet vyskytov, co bude odhad E-value
 +
* Vieme spocitat aj presne, ale na to potrebujeme trochu pravdepodobnosti
 +
 
 +
Zaklady pravdepodobnosti
 +
* Vytiahnime z mechu 2x gulicku. Prve pismeno ktore nam vyjde oznacme X1 a druhe X2
 +
* Pr(X1=A) = 0.3, Pr(X2=C)=0.2
 +
* Pr(X1=A a X2=C) = Pr(X1=A)*Pr(X2=C) = 0.3*0.2 = 0.06
 +
** T.j. sanca ze dostaneme sekvenciu AC po dvoch tahaniach je 6%
 +
** Ak ratame pravdepodobnost, ze sa dve nezavisle udalosti stanu, ich pravdepodobnosti nasobime. V tomto pripade to ci X1=A je nezavisle od toho, ci X2=C
 +
* Pr(X1 je A alebo G) = Pr(X1=A)+Pr(X1=G) = 0.3+0.2 = 0.5
 +
** Pravdepodobnost ze prve pismeno bude A alebo G je 50%
 +
** Pravdepodobnosti navzajom sa vylucujucich udalosti (X1=A a X1=G) sa mozu scitat, cim dostaneme pravdepodobnost, ze aspon jedna z nich nastane
 +
* Pr(v sekvencii je aspon jedno A) = Pr(X1=A alebo X2=A) nemozeme pocitat ako Pr(X1=A)+Pr(X2=A), lebo sa navzajom nevylucuju a pripad ze X1=X2=A by sme zapocitali dvakrat
 +
* Spravne je Pr(v sekvencii je aspon jedno A) = Pr(X1=A) + Pr(X1 <> A a X2=A) = 0.3+0.7*0.3 = 0.51
 +
* Pr(X1=X2) = Pr(X1=X2=A) + Pr(X1=X2=C) + Pr(X1=X2=G) + Pr(X1=X2=T) = 0.3*0.3+0.2*0.2+0.2*0.2+0.3*0.3 = 0.26.
 +
* Ak u označíme pravdepodobnost u = Pr(X1=A)=Pr(X1=T)=Pr(X2=A)=Pr(X2=T) a v=Pr(X1=C)=Pr(X1=G)=Pr(X2=C)=Pr(X2=G), aky bude vzorec na Pr(X1=X2)?
 +
 
 +
Naspat k E-value
 +
* Mame dotaz X1X2...Xm a databazu Y1Y2...Yn. Aka je sanca, ze X sa nachadza na zaciatku Y, t.j. ze X1=Y1, X2=2... Xm=Ym?
 +
* Nezavisle udalosti, t.j. Pr(X1=Y1)*Pr(X2=Y2)*...*Pr(Xm=Ym) = 0.26 * 0.26 * ... * 0.26 = 0.26^m (0.26 na m-tu)
 +
* Pravdepodobnost, ze sa X nachadza hocikde v Y je tazsie zratat - moze sa vyskytovat aj viackrat, udalosti za sa nachadza na pozicii i sa navzajom nevylucuju
 +
* Ale priemerny pocet vyskytov na pozicii i je 0.26^m, mame n-m+1 pozicii zaciatku, takze celkovy ocakavany pocet vyskytov je (n-m+1)0.26^m
 +
* Ak je n velke v porovnani s m, clen -m+1 mozeme zanedbat, t.j.  mame zhruba n*0.26^m
 +
* Ako sa meni toto cislo s velkostou databazy n? linearne rastie (zdvojnasobime databazu, zdvojnasobi sa e-value)
 +
* Ako sa meni s m? Exponencialne klesa, t.j. ak predlzime dotaz o 1, E-value klesne zhruba na stvrtinu
 +
* Ako sa meni s GC obsahom? Zakodovane v cisle 0.26 - vyskusame si pri pocitaci v tabuľkovom procesore
 +
 
 +
Práca v tabuľkovom procesore (Excel, OpenOffice, ...)
 +
* Okrem konkrétnych hodnôt, napr. 0.3, môžu byť aj vzorce, ktoré začínajú =, napr =0.3*0.3 dá do políčka 0.09 (* znamená násobenie)
 +
* Vo vzorcoch môžeme používať aj hodnoty z iných políčok, napr. =A2+B2 dáme do políčka C2, zobrazí sa tam súčet
 +
* Ak políčko so vzorcom skopírujeme do iného políčka, Excel sa snaží uhádnuť, ako zmeniť vzorec
 +
** Ak sme v C2 mali =A2+B2 a skopírovali sme to do C3, vzorec sa zmení na =A3+B3
 +
* Ak niektoré adresy políčok majú zostávať rovnaké aj pri kopírovaní, dáme pred písmeno aj číslo $,
 +
** Ak v C2 máme =A2+$B$2 a skopírujeme to do C3, dostaneme =A3+B2
 +
 
 +
==BLAT vs BLAST, nets v UCSC browseri==
 +
* Program BLAT v UCSC browseri rychlo vyhladava sekvencie v genome, ale nevie najst slabsie podobnosti
 +
** Vhodne pouzitie: zarovnanie EST ku genomu, presne urcenie suradnic nejakej sekvencie, a pod.
 +
* NCBI BLAST je pomalsi, ale najde viacej podobnosti
 +
* Aj BLAST vsak toho moze vela vynechat
 +
* Net tracky v UCSC genome browseri nam umoznuju prechadzat medzi homologickymi oblastami roznych genomov
 +
 
 +
==Prakticke cvicenie pri pocitaci==
 +
* Na stránke http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb04  nájdete súbory k tomuto cvičeniu.
 +
E-values
 +
* Stiahnite si z tejto stranky subor evalue.ods, ulozte si ho na plochu, potom ho otvorte v OpenOffice
 +
* Doplnte chybajuci vzorec v stlpci D, potom rozkopirujte vzorce v stlpcoch B-F na celu dlzku tabulky
 +
* '''Aky rozsah E-value dostavate v poslednom stlpci? Pre ktore obsahy GC je najvyssi a najnizsi? Ako sa zmenia, ked zvysite hodnotu m o 1?''' Ak chcete, mozete si nakreslit aj graf.
 +
 
 +
BLAT/BLAST
 +
* Na stránke so súbormi otvorte subor rtpcr-seq.txt. Obsahuje sekvenciu, ktorá vznikla pomocou RT-PCR na ľudských cDNA knižniciach
 +
* Choďte na UCSC genome browser  http://genome.ucsc.edu/ , na modrej lište zvoľte BLAT, zadajte túto sekvenciu a hľadajte ju v ľudskom genóme. '''Akú podobnosť (IDENTITY) má najsilnejší nájdený výskyt? Aký dlhý úsek genómu zasahuje? (SPAN).''' Všimnite si, že ostatné výskyty sú oveľa kratšie.
 +
* V stĺpci ACTIONS si pomocou Details môžete pozrieť detaily zarovnania a pomocou Browser si pozrieť príslušný úsek genómu.
 +
* V tomto úseku genómu si zapnite track Vertebrate net na full a kliknutím na farebnú čiaru na obrázku pre tento track zistite, '''na ktorom chromozóme sliepky sa vyskytuje homologický úsek.'''
 +
* Skusme tu istu sekvenciu namapovat do genomu sliepky: stlacte najprv na hornej modrej liste Genomes, zvolte Vertebrates a Chicken a potom na hornej liste BLAT. Do okienka zadajte tu istu sekvenciu. '''Akú podobnosť a dĺžku má najsilnejší nájdený výskyt teraz? Na ktorom je chromozóme?'''
 +
* Skúsme to isté v NCBI blaste: Choďte na http://blast.ncbi.nlm.nih.gov/ zvoľte nucleotide blast, database others a z menu reference genomic sequence, organism chicken (taxid:9031), program blastn
 +
* '''Aka je dlzka, identity a E-value najlepsieho zarovnania? Na ktorom je chromozome?'''
 +
 
 +
==RT PCR sekvencia z cvičenia vyššie==
 +
<pre>
 +
AACCATGGGTATATACGACTCACTATAGGGGGATATCAGCTGGGATGGCAAATAATGATTTTATTTTGAC
 +
TGATAGTGACCTGTTCGTTGCAACAAATTGATAAGCAATGCTTTCTTATAATGCCAACTTTGTACAAGAA
 +
AGTTGGGCAGGTGTGTTTTTTGTCCTTCAGGTAGCCGAAGAGCATCTCCAGGCCCCCCTCCACCAGCTCC
 +
GGCAGAGGCTTGGATAAAGGGTTGTGGGAAATGTGGAGCCCTTTGTCCATGGGATTCCAGGCGATCCTCA
 +
CCAGTCTACACAGCAGGTGGAGTTCGCTCGGGAGGGTCTGGATGTCATTGTTGTTGAGGTTCAGCAGCTC
 +
CAGGCTGGTGACCAGGCAAAGCGACCTCGGGAAGGAGTGGATGTTGTTGCCCTCTGCGATGAAGATCTGC
 +
AGGCTGGCCAGGTGCTGGATGCTCTCAGCGATGTTTTCCAGGCGATTCGAGCCCACGTGCAAGAAAATCA
 +
GTTCCTTCAGGGAGAACACACACATGGGGATGTGCGCGAAGAAGTTGTTGCTGAGGTTTAGCTTCCTCAG
 +
TCTAGAGAGGTCGGCGAAGCATGCAGGGAGCTGGGACAGGCAGTTGTGCGACAAGCTCAGGACCTCCAGC
 +
TTTCGGCACAAGCTCAGCTCGGCCGGCACCTCTGTCAGGCAGTTCATGTTGACAAACAGGACCTTGAGGC
 +
ACTGTAGGAGGCTCACTTCTCTGGGCAGGCTCTTCAGGCGGTTCCCGCACAAGTTCAGGACCACGATCCG
 +
GGTCAGTTTCCCCACCTCGGGGAGGGAGAACCCCGGAGCTGGTTGTGAGACAAATTGAGTTTCTGGACCC
 +
CCGAAAAGCCCCCACAAAAAGCCG
 +
</pre>
 +
 
 +
=Zarovnávanie sekvencií, cvičenia pre informatikov=
 +
==Opakovanie dynamického programovania pre globálne zarovnanie==
 +
 
 +
Uvažujme napríklad skórovanie zhoda +1, nezhoda -1, medzera -1 a vstupné sekvencie <math>X=x_1\dots x_m</math> a <math>Y=y_1\dots y_n</math>. Nech s(x,y) je skóre písmen x a y, t.j. 1 ak sa zhodujú a -1 ak nie. Máme rekurenciu:
 +
 
 +
:::<math>A[i,j]=\max\left\{A[i-1,j-1]+s(x_i,y_j), A[i-1,j]-1, A[i,j-1]\right\}</math>
 +
 
 +
==Reprezentácia pomocou grafu==
 +
Takéto dynamické programovanie vieme reprezentovať vo forme acyklického orientovaného grafu:
 +
* vrchol (i,j) pre každé <math>0\le i\le m, 0\le j \le m</math>, t.j. pre každé políčko dyn. prog. tabuľky
 +
* hrana z (i-1,j-1) do (i,j) s cenou <math>s(x_i,y_j)</math>
 +
* hrana z (i-1,j) do (i,j) s cenou -1
 +
* hrana z (i,j-1) do (i,j) s cenou -1
 +
* súčet súradníc na každej hrane rastie, graf teda nemôže obsahovať cyklus, je acyklický
 +
* každá cesta z (0,0) do (m,n) zodpovedá zarovnaniu, jej cena je cenou zarovnania (každá hrana jeden stĺpec)
 +
* optimálne zarovnanie teda zodpovedá ceste s maximálnou cenou
 +
 
 +
==Krátka vsuvka o acyklických orientovaných grafoch==
 +
* Mame dany acyklicky orientovany graf s ohodnotenymi hranami a startovaci vrchol s, koncovi vrchol t a chceme najst cestu s max. cenou z s do t.
 +
* Hladanie cesty s maximalnou cenou je vo vseobecnosti NP-tazke (podobne na Hamiltonovsku cestu)
 +
* V acyklickom grafe to vsak vieme riesit efektivne
 +
* Najskor si graf zotriedime topologicky, t.j. usporiadame vrcholy tak, aby kazda hrana isla z vrcholu z mensim cislom do vrcholu s vacsim cislom. To sa da modifikaciou prehladavania do hlbky v case O(|V|+|E|)
 +
* Potom pocitame dynamickym programovanim, kde A[u] je dlzka najdlhsej cesty z s do u: <math>A[u] = \max_{v:v\rightarrow u\in E} A[v]+c(v\rightarrow u)</math>
 +
pricom na zaciatku nastavime A[s]=0 a na konci mame cenu cesty v A[t].
 +
* Cas vypoctu je O(|V|+|E|)
 +
* Vsimnime si, ze tiez dostaneme najdlhsie cesty z s do vsetkych vrcholov.
 +
 
 +
Ak tento algoritmus nasadime na graf pre globalne zarovnanie, dostavame presne nasu rekurenciu (topologicke triedenie mozno vynechat - poradie zhora dole a zlava doprava je topologicky utriedene). Vyhoda je, ze mozeme modifikaciou grafu ziskavat riesenia roznych pribuznych problemov bez toho, aby sme vzdy vymyslali novu rekurenciu.
 +
 
 +
==Lokalne zarovnanie==
 +
* Zarovnanie moze zacat a skoncit hocikde v matici
 +
* Pridaj startovaci vrchol s, koncovy vrchol t
 +
* Pridaj hrany s->(i,j) a (i,j)->t s cenou 0 pre kazde (i,j)
 +
* Opat ekvivalentne s rekurenciou z prednasky
 +
 
 +
Variant: chceme zarovnat cely retazec X k nejake casti retazca Y (napr. mapovanie sekvenovacich readov na genom)
 +
* Iba zmenime hrany z s a hrnay do t (ako?)
 +
 
 +
==Afinne skore medzier==
 +
* Napr. otvorenie medzery -2, pokracovanie medzery -1
 +
<tt>
 +
A  -  -  -  T  C  G
 +
A  C  G  C  T  C  C
 +
1 -2 -1 -1  1  1  -1
 +
</tt>
 +
 
 +
Riesenie 1:
 +
* Pridame hrany pre cele suvisle useky medzier so spravnou cenou
 +
* (i,j)->(i,k) s cenou o+(k-j)e
 +
* (i,j)->(k,j) s cenou o_(k-i)e
 +
* Cas O(mn(m+n)), t.j. kubicky
 +
* pozor, mame aj cesty, ktore nezopodvedaju ziadnemu spravnemu skore, napr. (i.j)->(i+1,j)->(i+2,j) ma cenou 2o, ale ma mat o+e. Nastastie hrana (i,j)->(i+2,j) ma vyssiu cenu, takze ta dlhsia cesta sa nepouzije.
 +
 
 +
Riesenie 2:
 +
* ztrojnasobime kazdy vrchol <math>(i,j)_u, (i,j)_v, (i,j)_z</math>
 +
* v indexe si pamatame, odkial sme do (i,j) prisli (u=uhlopriecne, v=vodorovne, z=zvislo)
 +
* DOKONCIT
 +
 
 +
==Linearna pamat: Hirshbergov algoritmus 1975==
 +
* DOKONCIT
 +
 
 +
==Vypisanie vsetkych najlepsich rieseni==
 +
* Namiesto jednej spatnej sipky si pamatame vsetky, ktore v danom A[i,j] viedli k maximalnej cene
 +
* Potom mozeme rekurzivne prehladavat a vypisovat vsetky cesty z (m,n) do (0,0) ktore pozostavaju iba zo zapamatanych hran
 +
* Cas na vypisanie jednej cesty je polynomialny, ale ciest moze byt exponencialne vela!
 +
* Mozno namiesto toho chceme len pocet takych ciest, alebo vsetky dvojice pismen, ktore mozu byt spolu zarovnane v niektorom optimalnom zarovnani
 +
 
 +
=Evolúcia, cvičenia pre informatikov=
 +
==Felsensteinov algoritmus 1981==
 +
 
 +
* Mame dany strom T s dlzkami hran a bazy v listoch (jeden stlpec zarovnania) a maticu rychlosti R. Spocitajme pravdepodobnost, ze z modelu dostaneme prave tuto kombinaciu baz v listoch.
 +
* Nech X_v je premenna reprezentujuca bazu vo vrchole v a nech x_v je konkretna baza v liste v. Nech listy su 1..n a vnut. vrcholy n+1..2n-1. Nech dlzka hrany z v do rodica je t_v. Nech P(a|b,t) je pravdepodobnost, ze b sa zmeni na a za cas t (spocitame z matice R, ako nabuduce). Nech q_a je pravdepodobnost bazy a v koreni (ekvilibrium matice R)
 +
* Napr.  v Jukes-Cantorovom modeli <math>P(A|A,t) = (1+3e^{-\frac{4}{3} t})/4 </math>, <math>P(C|A,t)=(1-e^{-\frac{4}{3} t})/4</math>
 +
 
 +
* Chceme pravdepodobnost <math>P(X_1=x_1, X_2=x_2,\dots X_n=x_n|T,R)=\sum_{x_{n+1}\dots x_{2n-1}} P(X_1=x_1 \dots X_{2n-1}=x_{2n-1}|T,R)</math>
 +
* Spocitame rychlejsie dynamickym programovanim.
 +
* Nech A[v,a] je pravdedpodobnost dat v podstrome s vrcholom v ak X_v=a
 +
* A[v,a] pocitame od listov ku korenu
 +
* v liste A[v,a] = [a=x_v]
 +
* Vo vnut. vrchole s detmi x a y mame <math>A[v,a] = \sum_{b,c} A[x,b]A[y,c]P(b|a,t_x)P(c|a,t_y)</math>
 +
* Celkova pravdepodobnost je <math>P(X_1=x_1, X_2=x_2,\dots X_n=x_n|T,R)=\sum_a A[r,a] q_a</math> pre koren r.
 +
 
 +
'''Zlozitost, zlepsenie'''
 +
* Zlozitost <math>O(n|\Sigma|^3)</math>
 +
* Pre nebinarne stromy exponencialne
 +
* Zlepsenie <math>A[v,a] = (\sum_{b} A[x,b]P(b|a,t_x))(\sum_c A[y,c](c|a,t_y))</math>
 +
* Zlozitost <math>O(n|\Sigma|^2)</math> aj pre nebinarne stromy
 +
 
 +
'''Chybajuce data'''
 +
* Ak v niektorom liste mame neznamu bazu N, nastavime A[v,a]=1
 +
* Podobne sa spracovavaju medzery v zarovnani, aj ked mohli by sme mat aj model explicitne ich modelujuci
 +
 
 +
'''Aposteriorna pravdepodobnost'''
 +
* Co ak chceme spocitat pravdepodobnost P(X_v=a|X_1=x_1, X_2=x_2,\dots X_n=x_n,T,R)?
 +
* Potrebujeme B[v,a]=pravdpodobnost dat ak podstrom v nahradim listom s bazou a.
 +
* B[v,a] pocitame od korena k listom
 +
* V koreni B[v,a] = q_a
 +
* Vo vrchole v s rodicom u a surodencom x mame <math>B[v,a]=\sum_{b,c} B[u,b]A[x,c]P(a|b,t_v)P(c|b,t_v)</math>
 +
* Ziadana pravdepodobnost je <math>B[v,a]A[v,a]/P(X_1=x_1, X_2=x_2,\dots X_n=x_n|T,R)</math>
 +
 
 +
==Substitucne modely - odvodenie==
 +
* Nech <math>P(b|a,t)</math> je pravdepodobnost, ze ak sme zacneme s bazou a, tak po case t budeme mat bazu b.
 +
* Pre dane t mozeme take pravdepodobnosti usporiadat do matice 4x4 (ak studujeme DNA), kde <math>S(t)_{a,b}=P(b|a,t)</math>
 +
* Intuitivne cim vacsie t, tym vacsia pravdepodobnost zmeny; <math>S(0)=I</math> (jednotkova matica), <math>S(t), t\rightarrow \infty</math> ma vsetky riadky rovnake, napr. 1/4, 1/4, 1/4, 1/4
 +
* Ak mame matice pre casy <math>t_1</math> a <math>t_2</math>, vieme spocitat maticu pre cas <math>t_1+t_2</math>: <math>P(b|a,t_1+t_2)=\sum_x P(x|a,t_1)\cdot P(b|x,t_2)</math> a teda v maticovej notacii <math>S(t_1+t_2) = S(t_1)S(t_2)</math>. Takyto model nazyvame multiplikativny a predpoklada, ze pravdepodobnost mutacie zavisi len od aktualnej bazy, nie od minulych stavov.
 +
* Ak by sme uvazovali iba diskretne (celocislene) casy, stacilo by nam urcit iba <math>S(1)</math> a vsetky ostatne casy dostaneme umocnenim tejto matice. Je vsak elegantnejsie mat <math>S(t)</math> definovane aj pre realne t.
 +
 
 +
* '''Jukes-Cantor'''-ov model evolucie predpoklada, ze vsetky substitucie su rovnako pravdepodobne.
 +
 
 +
* Pre velmi maly cas mame maticu
 +
:<math>S(\epsilon) =
 +
\left(\begin{array}{cccc}
 +
1-3p & p & p & p \\
 +
p & 1-3p & p & p \\
 +
p & p & 1-3p & p \\
 +
p & p & p & 1-3p \\
 +
\end{array}\right)</math>
 +
:kde <math>p </math> je tiez velmi male cislo.
 +
 
 +
* Pre cas <math>2\epsilon</math> dostavame maticu
 +
: <math>S(2\epsilon) = S(\epsilon^2) =
 +
\left(\begin{array}{cccc}
 +
1-6p+12p^2 & 2p-4p^2 & 2p-4p^2 & 2p-4p^2 \\
 +
\dots
 +
\end{array}\right)</math>
 +
 
 +
* Ale cleny s <math>p^2</math> su ovela mensie ako cleny s <math>p</math>, takze tato matica je priblizne
 +
:<math>S(2\epsilon) = S(\epsilon^2)\approx
 +
\left(\begin{array}{cccc}
 +
1-6p & 2p & 2p & 2p \\
 +
\dots
 +
\end{array}\right)</math>
 +
 
 +
* Vytvorme si teraz maticu rychlosti (rate matrix)
 +
:<math>R=
 +
\left(\begin{array}{cccc}
 +
-3\alpha & \alpha & \alpha & \alpha \\
 +
\alpha & -3\alpha & \alpha & \alpha \\
 +
\alpha & \alpha & -3\alpha & \alpha \\
 +
\alpha & \alpha & \alpha & -3\alpha \\
 +
\end{array}\right)</math>
 +
 
 +
* Dostavame, ze pre velmi male casy plati <math>S(\epsilon)\approx I+R\epsilon</math> (<math>p</math> pouzivane vyssie by malo hodnotu <math>\alpha/\epsilon</math>).
 +
* <math>S(t+\epsilon) = S(t)S(\epsilon) \approx S(t)(I+R\epsilon)</math> a teda <math>(S(t+\epsilon)-S(t))/\epsilon \approx S(t)R</math> a v limite pre <math>\epsilon\rightarrow o</math> dostavame <math>S'(t) = S(t)R</math> (diferencialne rovnice, pociatocny stav <math>S(0)=I</math>).
 +
* Ak diagonalne prvky <math>S(t)</math> oznacime <math>r(t)</math> a nediagnoalne <math>s(t)</math>, dostavame, ze diagonalny prvok <math>S(t)R</math> je <math>-3\alpha r(t)+3\alpha s(t)</math> a nediagonalny <math>-\alpha s(t) + \alpha r(t)</math>. Takze dostavame diferencialne rovnice <math> r'(t) = -3\alpha(s(t)-r(t))</math> a <math>s'(t) = \alpha(r(t)-s(t))</math>.
 +
* Overme, ze riesenim tejto rovnice je <math>r(t) = (1+3e^{-4\alpha t})/4</math> a <math>s(t) = (1-e^{-4\alpha t})/4</math>:
 +
:: Zderivujeme <math>r'(t) = -3\alpha e^{-4\alpha t}</math> a  <math>s'(t) = \alpha e^{-4\alpha t}</math>, dosadime do rovnic.
 +
 
 +
* Takze mame maticu:
 +
:<math>S(t)=
 +
\left(\begin{array}{cccc}
 +
(1+3e^{-4\alpha t})/4 & (1-e^{-4\alpha t})/4 & (1-e^{-4\alpha t})/4 & (1-e^{-4\alpha t})/4 \\
 +
\dots
 +
\end{array}\right)</math>
 +
 
 +
* V case <math>t</math> je pravdepodobnost, ze uvidime zmenenu bazu <math>D_t = \frac{3}{4}(1-e^{-4\alpha t})</math> a teda ak v skutocnosti vidime <math>d\%</math> zmenenych baz, vieme spatne zratat t, ktore by hodnote <math>D_t=d</math> prinalezalo.
 +
* Aby sme nemali naraz aj <math>\alpha</math> aj <math>t</math>, zvykneme maticu R normalizovat tak, aby priemerny pocet substitucii za jednotku casu bol 1. V pripade Jukes-Cantorovho modelu je to ked <math>\alpha=1/3</math>.
 +
* Dostavame teda vzorec pre vzdialenost, ktory sme videli na prednaske <math>t=-\frac{3}{4} \log\left(1-\frac{4}{3}d\right)</math>
 +
* Preco sme ten vzorec odvodili takto? V skutocnosti chceme najst najvierohodnejsiu hodnotu t, t.j. taku, pre ktore hodnota P(data|t) bude najvacsia. Zhodou okolnosti vyjde takto.
 +
 
 +
* V praxi sa pouzivaju komplikovanejsie substitucne modely, ktore maju vseobecnejsiu maticu rychlosti R
 +
* Kimurov model napr. zachytava, ze puriny sa castejsie menia na ine puriny (A a G) a pyrimidiny na ine pyrimidiny (C a T) ma dva parametre:
 +
:<math>R=
 +
\left(\begin{array}{cccc}
 +
-2\beta-\alpha & \beta & \alpha & \beta \\
 +
\beta & -2\beta-\alpha & \beta & \alpha \\
 +
\alpha & \beta & -2\beta-\alpha & \beta \\
 +
\beta & \alpha & \beta & -2\beta-\alpha \\
 +
\end{array}\right)</math>
 +
* HKY model (Hasegawa, Kishino & Yano) tiez umoznuje rozne pravdepodobnosti A, C, G a T v ekvilibriu.
 +
* Vo vseobecnosti pre rate matrix <math>R</math> dostavame <math>S(t)=e^{Rt}</math>. Ak R diagonalizujeme (urcite sa da pre symetricke R) <math>R = U D U^{-1}</math>, kde D je diagonalna matica (na jej diagonale budu vlastne hodnoty R), tak <math>e^{Rt} = U e^{Dt} U^{-1}</math>, t.j. exponencialnu funkciu uplatnime iba na prvky na uhlopriecke matice D.
 +
 
 +
=Evolúcia a HMM, cvičenia pre biológov=
 +
==Príklady stavových automatov pre HMM==
 +
Uvazujme HMM so specialnym zaciatocnym stavom b a koncovym stavom e, ktore nic negeneruju.
 +
* Nakreslite HMM (stavovy diagram), ktory generuje sekvencie, ktore zacinaju niekolkymi cervenymi pismenami a potom obsahuju niekolko modrych
 +
* Ako treba zmenit HMM, aby dovoloval ako "niekolko" aj nula?
 +
* Ako treba zmenit HMM, aby pocet cervenych aj modrych bol vzdy parne cislo?
 +
* Ako zmenit HMM, aby sa striedali cervene a modre kusy parnej dlzky?
 +
 
 +
V dalsich prikladoch uvazujeme aj to, ktore pismena su v ktorom stave povolene (pravdepodobnost emisie > 0) a ktore su zakazane
 +
* cervena sekvencia dlzky dva, ktora zacina na A
 +
* cervena sekvencia dlzky dva, ktora je hocico okrem AA
 +
 
 +
Dalsi biologicky priklad HMM: topologia transmembranovych proteinov.
 +
 
 +
==Fylogeneticke stromy==
 +
* Terminologia: zakoreneny/nezakoreneny strom, hrana, vrchol, list, vnutorny vrchol, koren
 +
* Ak zmazeme hranu, strom sa rozpadne na dve suvisle casti. Strom mozeme teda povazovat za sadu biparticii.
 +
* Ak mame zakoreneny strom s n listami a kazdy vnutorny vrchol ma 2 deti, bude mat n-1 vnutornych vrcholov (preco?)
 +
* V nezakorenenom strome s n listami, ak ma kazdy vrchol 3 susedov, bude mat n-2 vnutornych vrcholov
 +
* Kolkymi sposobmi mozeme zakorenit nezakoreneny strom?
 +
* Ak nakreslime zakoreneny strom obvyklym sposobom, listy su usporiadane zhora nadol. Kolko roznych poradi listov vieme dostat roznym zakreslovanim toho isteho stromu? Kolko je vobec roznych poradi listov, ak neberieme do uvahy strom?
 +
 
 +
* Ine pouzitie stromov v informatike: uvidime hierarchicke clustrovanie, bayesovske siete, ale tiez efektivne datove struktury
 +
 
 +
==Bootstrap==
 +
* Nahodne vyberieme niektore stlpce zarovnania, zostrojime strom vybranou metodou
 +
* Cele to opakujeme vela krat
 +
* Znacime si, kolkokrat sa ktora vetva opakuje v stromoch, ktore dostavame
 +
** Pri nezakoreneneych stromoch je vetva rozdelenie listov na dve skupiny
 +
* Nakoniec zostavime strom s casto sa vyskytujucich hran (napr tych, ktore su vo viac ako 50% stromov)
 +
* Bootstrap hodnoty nam daju urcity odhad spolahlivosti, hlavne ak mame celkovo malo dat (kratke zarovnanie)
 +
* Ak vsak data velmi dobre nezodpovedaju vybranej metode tak aj pre zly strom mozeme dostat vysoky bootstrap
 +
 
 +
==Fitchov algoritmus==
 +
[[Image:fitch.png|thumb|150px]]
 +
* '''Parsimony/uspornost'''
 +
** Vstup: fylogeneticky strom, 1 stlpec zarovnania (jedna baza v kazdom liste stromu)
 +
** Vystup: priradenie baz predkom minimalizujuce pocet substitucii
 +
* Priklad - obr 1
 +
 
 +
* Uvazujme, co vieme povedat o strome s dvoma susednymi listami vo vacsom strome (oznacenie: obr. 2, listy v1 a v2, hrany do listov e1, e2, ich predok v3, hrana z v3 vyssie e3).
 +
* Ak oba listy maju bazu rovanku bazu, napr. A, predok v3 v optimalnom rieseni bude urcite mat bazu A
 +
** Dokaz sporom: nech to tak nie je, nech optimalne riesenie ma nejaku inu bazu, napr. C. Vymenme v tomto rieseni toto C za A. Moze nam pribudnut jedna mutacia na hrane e3, ale ubudnu dve na hranach e1 a e2. Tym celkova cena riesenia klesne o 1, takze nebolo optimalne.
 +
* Ak tieto dva listy maju rozne bazy, napr. A a C, tak existuje optimalne riesenie, ktore ma v predkovi v3 bazu A alebo C.
 +
** Dokaz: vezmime optimalne riesenie. Ak ma v3 bazu A alebo C, tvrdenie plati. Ak ma v3 nejaku inu bazu, napr T, mozeme ju vymenit napr. za A, ci mozno pribudne jedna muracia na e3 ale urcite ubudne mutaci na e1. Teda celkovy pocet mutacii sa nezvysi a nase nove riesenie je stale optimalne. Pozor, vo vseobecnosti nevieme povedat, ci ma v3 mat bazu A alebo C. V niektorych pripadoch su optimalne obe, v niektorych len jedna z nich.
 +
 
 +
* '''Fitchov algoritmus 1971'''
 +
* Kazdemu vrcholu v priradime mnozinu baz M(v)
 +
* M(v) pocitame od listov smerom ku korenu
 +
* Pre list v bude M(v) obsahovat bazu v tomto liste
 +
* Uvazujme vnutorny vrchol v s detmi x a y. Mame uz spocitane M(x) a M(y), chceme M(v)
 +
* Ak M(x) a M(y) maju nejake spolocne bazy, vsetky tieto spolocne bazy dame do M(v), t.j. <math>M(v) = M(x) \cap M(y)</math>
 +
* Ak M(x) a M(y) nemaju spolocne bazy, do M(v) dame vsetky bazy z M(x) aj M(v), t.j. <math>M(v) = M(x) \cup M(y)</math>
 +
:: V tomto pripade pocet mutacii vzrastie o jedna
 +
* Ked mame M(v) spocitane pre vsetky vrcholy, ideme od korena smerom k listom a vyberieme vzdy jednu bazu z M(v).
 +
* Ak sme vybrali pre rodica bazu x a x je v M(v), zvolime x aj pre v, inak zvolime lubovolnu bazu z M(v).
 +
* Priklad algoritmu na obr 3
 +
 
 +
==Opakovanie pravdepodobnostnych modelov==
 +
Ake sme doteraz videli modely
 +
* E-value v BLASTe: nahodne vygenerujeme databazu a dotaz (query), kolko bude v priemere medzi nimi lokalnych zarovnani so skore aspon T?
 +
* Hladanie genov: model generujuci sekvenciu+anotaciu naraz (parametre nastavene na znamych genoch). Pre danu sekvenciu, ktora pravdedpodobnost je najpravdepodobnejsia?
 +
* Evolucia, Jukes-Cantorov model: model generujuci stlpec zarovnania. Nezname parametre: strom, dlzky hran. Pre danu sadu stlpcov zarovnania, ktore parametre povedu k najvacsej pravdepodobnosti? <math>\max_{param} \Pr(data|param)</math>
 +
* Trochu detailov: pravdepodobnost zmeny/nezmeny na hrane dlzky t: <math>P(A|A,t) = (1+3e^{-\frac{4}{3} t})/4 </math>, <math>P(C|A,t)=(1-e^{-\frac{4}{3} t})/4</math>
 +
* Ak pozname ancestralne sekvencie, vieme spocitat pravdepodobnost dat
 +
* Ancestralne sekvencie su nahodne premenne, ktore nas nezaujimaju: marginalizujeme ich (uvazujeme vsetky ich mozne hodnoty)
 +
 
 +
==Zlozitejsie evolucne modely==
 +
* Jukes-Cantorov model uvazuje len dlzku hrany udanu v priemernom pocte substitucii (vratane tych, ktore nevidime, kvoli tomu, ze su dve na tom istom mieste)
 +
* Nie vsetky substitucie sa deju rovnako casto: tranzicie (v ramci pyrimidinov T<->C, v ramci purinov A<->G) su pravdepodobnjesie ako transverzie (A,G)<->(C,T)
 +
* Nie vsekty nukleotidy sa v danom genome objavuju rovnako casto (napr. mitochondrialne genomy velmi male C,G)
 +
* Tieto javy zachytava HKY model
 +
* Matica rychlosti
 +
<math>\left(
 +
\begin{array}{cccc}
 +
-\mu_A & \beta\pi_C & \alpha\pi_G & \beta\pi_T\\
 +
\beta\pi_A & -\mu_C & \beta\pi_G & \alpha\pi_T\\
 +
\alpha\pi_A & \beta\pi_C & -\mu_G & \beta\pi_T\\
 +
\beta\pi_A & \alpha\pi_C & \beta\pi_G & -\mu_T\\
 +
\end{array}
 +
\right)</math>
 +
* <math>\kappa=\alpha/\beta</math> je pomer rychlosti, ktorymi sa deju tranzicie vs. transverzie
 +
* <math>\pi_j</math> je frekvencia bazy <math>j</math> v sekvencii
 +
* Rychlost, ako sa deje substitucia z X do Y je sucin pravdepodobnosti Y a faktoru, ktory zavisi od toho, ci ide o tranziciu alebo transverziu
 +
* Sucet kazdeho stlpca matice ma byt 0, t.j. <math>\mu_A=\beta\pi_A + \alpha\pi_A + \beta\pi_A</math>
 +
* Matica sa znormalizuje tak, aby priemerny pocet substitucii za jednotku casu bol 1
 +
* Matica ma styri parametre: <math>\kappa</math> a tri frekvencie (stvrta musi doplnit do 1) plus dlzka hrany
 +
* Zlozitejsi model lepsie zodpoveda skutocnym procesom, ale na odhad viac parametrov potrebujeme viacej dat.
 +
* Existuju metody, ktore pre dany cas t z matice spocitaju pravdepodobnost, ze baza X zmutuje na bazu Y Pr(Y|X,t)
 +
* Napr. pre velmi velmi maly cas <math>\epsilon</math> mame <math>\Pr(C|A,\epsilon)</math> je zhruba <math>\epsilon\beta\pi_C</math>
 +
* Pre rozumne dlhe casy toto neplati, preto sa pouzivaju algebraicke metody, ktore beru do uvahy moznost viacerych substitucii na tom istom mieste
 +
* Je aj vela inych modelov s mensim alebo vacsim poctom parametrov
 +
 
 +
==Prakticka ukazka tvorby stromov==
 +
* V UCSC browseri mozeme ziskavat viacnasobne zarovnania jednotlivych genov (nukleotidy alebo proteiny). Nasledujuci postup nemusite robit, subor si stiahnite tu: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb06/cb06-aln.fa
 +
** UCSC browseri si pozrieme usek ludskeho genomu chr6:136,214,527-136,558,402 s genom PDE7B (phosphodiesterase 7B)
 +
** Na modrej liste zvolime Tables, v nej RefSeq genes, zaklikneme Region: position, a Output fomat: CDS FASTA alignment a stlacime Get output
 +
** Na dalsej obrazovke zaklikneme show nucleotides. Z primatov zvolime chimp, rhesus, tarsier, z inych cicavcov mouse, rat, dog, elephant a z dalsich organizmov opposum, platypus, chicken, lizard, stlacime Get output.
 +
** Vystup ulozime do suboru, z mien sekvencii zmazeme spolocny prefix NM_018945_, pripadne celkovo prepiseme mena na anglicke nazvy
 +
 
 +
* Skusme zostavit strom na stranke http://mobyle.pasteur.fr/cgi-bin/portal.py
 +
* Pouzijeme program quicktree, metodu neighbor joining, bootstrap 100
 +
* Na zobrazenie stromu vysledok dalej prezenieme cez zobrazovacie programy drawtree alebo newicktops (zvolit v menu pri tlacidle further analysis)
 +
** [[:Image:Cb07-njtree.jpg|Vysledok z drawtree]], nezakoreneny, nezobrazuje bootstrap hodnoty
 +
** [[:Image:Cb07-njtree2.pdf|Vysledok z newicktops]], zakoreneny na nahodnom mieste (nie spravne) zobrazuje bootstrap hodnoty
 +
** v drawtree sme nastavili sme formát výstupu MS-Windows Bitmap a X,Y resolution aspoň 1000, v newicktops sme nastavili show bootstrap values
 +
* "Spravny strom" [http://genome.ucsc.edu/images/phylo/hg18_44way.gif] v nastaveniach Conservation track-u v UCSC browseri (podla clanku Murphy WJ, Eizirik E, O'Brien SJ, Madsen O, Scally M, Douady CJ, Teeling E, Ryder OA, Stanhope MJ, de Jong WW, Springer MS. Resolution of the early placental mammal radiation using Bayesian phylogenetics. Science. 2001 Dec 14;294(5550):2348-51.)
 +
* Nas strom ma long branch attraction (zle postavenie hlodavcov, ktori maju dlhu vetvu aj slona, co moze byt zapricene sekvenovacimi chybami).
 +
* Ine programy, ktore mozete skusit na mobyle
 +
** phyml: metoda maximalnej vierohodnosti (daju sa nastavit detaily modelu, bootstraps, ktory ale moze dost dlho trvat, typy operacii na strome pri heuristickom hladani najlepsieho stromu)
 +
** dnapars alebo protpars na parsimony
 +
** viacnasobne zarovnanie pomocou clustalw alebo modernejsou alternativou muscle
 +
** Ak chcete skusat zarovnania, zacnite z nezarovnanych sekvencii: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb06/cb06-seq.fa
 +
 
 +
=HMM a phyloHMM, cvičenia pre informatikov=
 +
==Vzoraky DU1==
 +
 
 +
==Opakovanie==
 +
Parametre HMM:
 +
* <math>a_{u,v}</math>: prechodová pravdepodobnosť zo stavu <math>u</math> do stavu <math>v</math>
 +
* <math>e_{u,x}</math>: pravdepodobnosť emisie <math>x</math> v stave <math>u</math>
 +
* <math>\pi_{u}</math>: pravdepodobnosť, že začneme v stave <math>u</math>
 +
 
 +
 
 +
* Sekvencia <math>S = S_1 S_2 \dots  S_n</math>
 +
* Anotácia <math>A = A_1 A_2 \dots A_n</math>
 +
 
 +
<math>Pr(S, A) = \pi_{A_1} e_{A_1,S_1} \prod_{i=2}^n a_{A_{i-1, A_i}} e_{A_i, S_i} </math>
 +
 
 +
Trénovanie
 +
: Proces, pri ktorom sa snažíme čo najlepšie odhadnúť pravdepodobnosti <math>a_{u,v}</math> a <math>e_{u,x}</math> v modeli podľa trénovacích dát
 +
Usudzovanie (inferencia)
 +
: Proces, pri ktorom sa snažíme pre sekvenciu <math>S</math> nájsť anotáciu <math>A</math>, ktorá sekvenciu  <math>S</math> emituje s veľkou pravdepodobnosťou.
 +
 
 +
==Inferencia pomocou najpravdepodobnejšej cesty, Viterbiho algoritmus ==
 +
 
 +
Hľadáme najpravdepodobnejšiu postupnosť stavov <math>A</math>, teda <math>\arg\max_A \Pr(A, S)</math>. Úlohu budeme riešiť dynamickým programovaním.
 +
 
 +
* Podproblém <math>V[i,u]</math>: Pravdepodobnosť najpravdepodobnejšej cesty končiacej po <math>i</math> krokoch v stave <math>u</math>, pričom vygeneruje <math>S_1 S_2 \dots S_i</math>.
 +
 
 +
* Rekurencia:
 +
** <math>V[1,u] = \pi_u e_{u,s_1}</math> (*)
 +
** <math>V[i,u] = \max_w V[i-1, w] a_{w,u} e_{u,x_i}</math> (**)
 +
 
 +
Algoritmus:
 +
# Nainicializuj <math>V[1,*]</math> podľa (*)
 +
# for i=2 to n=dĺžka reťazca
 +
:: for u=1 to m=počet stavov
 +
::: vypočítaj <math>V[i,u]</math> pomocou (**)
 +
# Maximálne <math>V[n,j]</math> je pravdepodobnosť najpravdepodobnejšej cesty
 +
 
 +
Aby sme vypísali anotáciu, pamätáme si pre každé <math>V[i,u]</math> stav <math>w</math>, ktorý viedol k maximálnej hodnote vo vzorci (**).
 +
 
 +
Zložitosť: <math>O(nm^2)</math>
 +
 
 +
Poznámka: pre dlhé sekvencie budú čísla <math>V[i,u]</math> veľmi malé a môže dôjsť k podtečeniu. V praxi teda používame zlogarimované hodnoty, namiesto násobenia súčet.
 +
 
 +
== Inferencia - dopredný algoritmus ==
 +
 
 +
Aká je celková pravdepodobnosť, že vygenerujeme sekvenciu <math>S</math>, t.j. <math>\sum_A Pr(A,S).</math> Podobný algoritmus ako Viterbiho.
 +
 
 +
Podproblém <math>F_{i,u}</math>: pravdepodobnosť, že po <math>i</math> krokoch vygenerujeme <math>s_1, s_2, \dots s_i</math> a dostaneme sa do stavu <math>u</math>.
 +
 
 +
<math>F_{i,u} = \Pr(A_i=u\wedge S_1, S_2, \dots, S_i) = \sum_{A_1, A_2, \dots, A_i=j} \Pr (A_1, A_2, ..., A_i \wedge S_1, S_2, ..., S_i)</math>
 +
 
 +
<math>F_{1,u} = \pi_u e_{u,x_1}</math>
 +
 
 +
<math>F_{i,u} = \sum_v F_{i-1,v} a_{v,u} e_{u,x_i}</math>
 +
 
 +
Celková pravdepodobnosť <math>\sum_u F_{n,u}</math>
 +
 
 +
== Inferencia - posterior decoding ==
 +
 
 +
Aposteriórna pravdepodobnosť stavu u na pozícii i: <math>Pr(A_i=u|S_1\dots S_n)</math>
 +
 
 +
Pre každý index i chceme nájsť stav u s najväčšiou aposteriórnou pravdepodobnosťou, dostaneme tak inú možnú anotáciu.
 +
 
 +
Spustíme dopredný algoritmus a jeho symetrickú verziu, spätný algoritmus, ktorý počíta hodnoty
 +
<math>B[i,u]=\Pr(A_i=u \wedge S_{i+1}\dots S_n)</math>
 +
 
 +
Aposteriórna pravdepodobnosť stavu u na pozícii i: <math>Pr(A_i=u|S_1\dots S_n) = F[i,u] B[i,u] / \sum_u F_{n,u}.</math>
 +
 
 +
Posterior decoding uvažuje všetky anotácie, nielen jednu s najvyššou pravdepodobnosťou. Môže však vypísať anotáciu, ktorá má sama o sebe nulovú pravdepodobnosť (napr. počet kódujúcich báz v géne nie je deliteľný 3).
 +
 
 +
== Trénovanie HMM ==
 +
 
 +
* Stavový priestor + povolené prechody väčšinou ručne
 +
* Parametre (pravdepodobnosti prechodu, emisie a počiatočné) automaticky z trénovacích sekvencií
 +
** Ak máme anotované trénovacie sekvencie, jednoducho počítame frekvencie
 +
** Ak máme iba neanotované sekvencie, snažíme sa maximalizovať vierohodnosť trénovacích dát v modeli. Používajú sa heuristické iteratívne algoritmy, napr. Baum-Welchov, ktorý je verziou všeobecnejšieho algoritmu EM (expectation maximization).
 +
* Čím zložitejší model a viac parametrov máme, tým potrebujeme viac trénovacích dát, aby nedošlo k preučeniu, t.j. k situácii, keď model dobre zodpvedá nejakým zvláštnostiam trénovacích dát, nie však ďalším dátam.
 +
* Presnosť modelu testujeme na zvláštnych testovacích dátach, ktoré sme nepoužili na trénovanie.
 +
 
 +
== Tvorba stavového priestoru modelu ==
 +
 
 +
* Promótor + niekoľko eukaryotických génov
 +
* Repeaty v intrónoch: multiple path problem
 +
* Intrón má dĺžku aspoň 10
 +
 
 +
== Zovšeobecnené HMM ==
 +
* Problém s modelovaním rozdelenia dĺžok - v základnom modeli je geometrické
 +
* Zovseobecnene HMM v jednom stave vygenerujú viac znakov
 +
* Viterbi alg. a spol budú pomalšie (kvadratické od dĺžky sekvencie)
 +
 
 +
==Fylogeneticke HMM==
 +
* Spojenie HMM a fylogenetickeho stromu
 +
* Konecne mnozina stavov
 +
* <math>a_{u,v}</math>: prechodová pravdepodobnosť zo stavu <math>u</math> do stavu <math>v</math>
 +
* <math>\pi_{u}</math>: pravdepodobnosť, že začneme v stave <math>u</math>
 +
* Namiesto emisnej pravdepodobnosti mame pre kazdy stav dlzky hran, maticu rychlosti R
 +
 
 +
'''Priklad:'''
 +
* PhastCons: 2 stavy: zachovana a nezachovana sekvencia
 +
* Komparativne hladanie genov
 +
 
 +
'''Opakovanie: Viterbiho algoritmus pre HMM'''
 +
* Podproblém <math>V[i,u]</math>: Pravdepodobnosť najpravdepodobnejšej cesty končiacej po <math>i</math> krokoch v stave <math>u</math>, pričom vygeneruje <math>S_1 S_2 \dots S_i</math>.
 +
* <math>V[i,u] = \max_v V[i-1, v] a_{v,u} e_{u,x_i}</math>
 +
 
 +
'''Modifikacia pre fylogeneticke HMM:'''
 +
* Pre kazdy stlpec zarovnania i a stav u spustime Felsensteinov algoritmus
 +
* Vyslednu pravdepodobnost pouzijeme namiesto <math>e_{u,x_i}</math>
 +
* Zlozitost pre k stavov, dlzku zarovnania n, pocet organizmov m: O(nmk + nk^2)
 +
 
 +
=Gény, proteíny a komparatívna genomika, cvičenia pre biológov=
 +
* Pozri slidy [http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb05.pdf]
 +
 
 +
==Hľadanie génov v prokaryotických genómoch==
 +
* ORF: open reading frame, jednoduche hladanie
 +
* ako najst zaciatok, ako rozlisit psedogeny a nahodne ORF-y
 +
* samotrenujuce sa HMM, codon bias, GC%
 +
 
 +
E. coli http://nar.oxfordjournals.org/content/34/1/1.full
 +
* Prvykrat sekvenovana a anotovana 1997
 +
* Porovnanie s verziou 2005 (oprava sekvenovacích chýb aj chýb v anotácii)
 +
** 682 zmien v start kodone
 +
** 31 génov zrušených
 +
** 48 nových génov
 +
** Celkovo asi 4464 génov
 +
 
 +
Programy na anotovanie prokaryotických genómov
 +
* ORFfinder at NCBI [http://www.ncbi.nlm.nih.gov/projects/gorf/]
 +
* Glimmer at NCBI [http://www.ncbi.nlm.nih.gov/genomes/MICROBES/glimmer_3.cgi]
 +
* GeneMark at NCBI [http://www.ncbi.nlm.nih.gov/genomes/MICROBES/genemark.cgi]
 +
* tRNAscan-SE [http://lowelab.ucsc.edu/tRNAscan-SE/]
 +
 
 +
==Histónové modifikácie==
 +
* A. Barski, S. Cuddapah, K. Cui, T. Roh, D. Schones, Z. Wang, G. Wei, I. Chepelev, K. Zhao (2007) High-Resolution Profiling of Histone Methylations in the Human Genome Cell, Volume 129, Issue 4, Pages 823-837 [http://www.columbia.edu/cu/biology/courses/w3034/LACpapers/barskiMethylSolexCell07.pdf pdf]
 +
 
 +
==Gény v ľudskom genóme==
 +
* What is a gene, post-ENCODE? History and updated definition. Gerstein MB, Bruce C, Rozowsky JS, Zheng D, Du J, Korbel JO, Emanuelsson O, Zhang ZD, Weissman S, Snyder M.
 +
* Most "dark matter" transcripts are associated with known genes. H Van Bakel, C Nislow, BJ Blencowe, TR Hughes - PLoS Biol, 2010
 +
* [http://hmg.oxfordjournals.org/content/19/R2/R162.abstract Transcribed dark matter: meaning or myth?] CP Ponting, TG Belgard - Human molecular genetics, 2010
 +
 
 +
==Geny, evolucia a komparativna genomika v UCSC genome browseri==
 +
 
 +
* Chodte na stranku http://genome.ucsc.edu/
 +
* Zvolte starsiu verziu ludskeho genomu hg18, ktora ma viac informacii
 +
* Do okienka position zadajte gen MAGEA2B a potom zvolte vyskyt na pozicii cca chrX:151636040-151637735 (ma dva vyskyty)
 +
** Dostanete sa tam aj touto linkou: [http://genome.ucsc.edu/cgi-bin/hgTracks?db=hg18&position=chrX:151636040-151637735]
 +
* Ak date 3x zoom out, mozete si vsimnut, ze tento gen ma viacero foriem zostrihu, ktore sa ale lisia iba v 5' UTR
 +
* Vsimnite si ENCODE Regulation Super-track, ktory zobrazuje ChIP data pre niektore '''histonove modifikacie'''
 +
* Vela veci sa mozete dozvediet klikanim na rozne casti broswera: napr, kliknutim na gen si mozete precitat o jeho funkcii, kliknutim na listu ku tracku (lavy okraj obazku) sa dozviete viac o tracku a mozete nastavovat parametre zobrazenia
 +
 
 +
* V casti Genes and Gene Prediction Tracks zapnite track Pos Sel Genes, ktory obsahuje geny s '''pozitivnym vyberom''' (cervenou, pripadne slabsie fialovou a modrou)
 +
* Ked kliknete na cerveny obdlznik pre tento gen, uvidite, v ktorych castiach fylogenetickeho stromu bol detekovany pozitivny vyber
 +
 
 +
* V casti '''multiz alignments''' tracku Conservation vidite zarovnania k roznym inym genomom (da sa zapinat, ze ku ktorym). Mozete si pozriet, ako sa uroven zarovnania zmeni ked sa priblizujeme a vzdalujeme (zoom in/zoom out).
 +
* Ked sa priblizite spat na gen MAGEA2B a potom tak, aby ste boli na urovni "base", t.j. zobrazenych cca 100bp, v obdlzniku multiz alignment uvidite zarovnanie s homologickym usekom v inych genomoch. Konkretne v MAGEA2B vidime pomerne dost rozdielov v proteine medzi clovekom a makakom rezus, vdaka ktorym bol zrejme klasifikovany ako pod pozitivnym vyberom.
 +
* V casti '''conservation by PhyloP '''vidime graf toho, ako silne su zachovane jednotlive stlpce zarovnania
 +
* Da sa zapnut aj track '''28-Way Most Cons''', ktory zobrazuje konkretne useky, ktore su najvac konzervovane
 +
** Ak chceme zistit, kolko percent genomu tieto useky pokryvaju, ideme na modrej liste do casti Tables, zvolime group Comparative genomics, track 28-way most cons, table Mammal alebo Vertebrate, region zvolime genome (v celom genome)  a stlacime tlacidlo Summary/statistics
 +
 
 +
==Objavenie génu HAR1 pomocou komparatívnej genomiky==
 +
* {{cite journal |author=Pollard KS, Salama SR, Lambert N, ''et al.'' |title=An RNA gene expressed during cortical development evolved rapidly in humans |journal=Nature |volume=443 |issue=7108 |pages=167–72 |year=2006 |month=September |pmid=16915236 |doi=10.1038/nature05113 |url=}} [http://ribonode.ucsc.edu/Pubs/Pollard_etal06.pdf pdf]
 +
* Zobrali všetky regióny dĺžky aspoň 100 s > 96% podobnosťou medzi šimpanzom a myšou/potkanom (35,000)
 +
* Porovnali s ostatnými cicavcami, zistili, ktoré majú veľa mutáci v človeku, ale málo inde (pravdepodobnostný model)
 +
* 49 štatisticky významných regiónov, 96% nekódujúcich oblastiach
 +
* Najvýznamnejší HAR1: 118nt, 18 substitúcii u človeka, očakávali by sme 0.27. Iba 2 zmeny medzi šimpanzom a sliepkou (310 miliónov rokov), ale nebol nájdený v rybách a žabe.
 +
* Nezdá sa byť polymorfný u človeka
 +
* Prekrývajúce sa RNA gény HAR1R a HAR1F
 +
* HAR1F je exprimovaný v neokortexe u 7 a 9 týždenných embrií, neskôr aj v iných častiach mozgu (u človeka aj iných primátov)
 +
* Všetky substitúcie v človeku A/T->C/G, stabilnejšia RNA štruktúra (ale tiež sú blízko k telomére, kde je viacej takýchto mutácii kvôli rekombinácii a biased gene conversion)
 +
* Môžete si pozrieť tento region v browseri: '''chr20:61,203,911-61,204,071''' (hg18), pricom ak sa este priblizite, uvidite zarovnanie aj s bazami a mozete vidiet, ze vela zmien je specifickych pre cloveka
 +
* Vynimkou je slon, niektore zmeny v slonovi su sposobene nizkou kvalitou sekvencie. Ked pomocou nastroja Convert na hornej liste premapujete do najnovsej verzie ludskeho genomu (hg19), uvidite, ze aj v najnovsej verzii genomu slona su mnohe zmeny, nechyba tam uz vsak cast sekvencie, ako vo verzii pouzitej v hg18.
 +
 
 +
==Proteíny==
 +
* Toto cvičenie je z časti inšpirované stránkou [http://www.ncbi.nlm.nih.gov/Class/FieldGuide/problem_set.html]
 +
* Pozrieme sa na enzým Bis(5'-adenosyl)-triphosphatase
 +
* Nájdime ho na stránke http://www.uniprot.org/ pod názvom FHIT_HUMAN
 +
** O mnohých údajoch na stránke sme sa rozprávali na prednáške (GO kategórie, domény, sekundárna a 3D štruktúra)
 +
** Všimnime si Pfam doménu a pozrime si jej stránku, do akej super-rodiny (klanu) patrí?
 +
 
 +
 
 +
* Tento enzým je vzdialene podobný na enzým galactose-1-phosphate uridylyltransferase (GALT/GAL7)
 +
* Skúsme nájsť túto podobnosť v BLASTe: http://blast.ncbi.nlm.nih.gov/ v časti proteíny, zvoľme databázu Swissport, ako Query zadajme Accesion nášho proteínu P49789
 +
* GAL gén (konkrétne GAL7_HAEIN) sa nachádza medzi výsledkami, ale s vysokou E-value
 +
* Odložme si tieto výsledky a v novom okne spustíme PSI-BLAST, dve iterácie
 +
* Aká je E-value teraz? V čom sa líšia zarovnania?
 +
 
 +
 
 +
* Nájdime v Uniprote proteín GAL7_HAEIN.
 +
* Ak sa pozrieme na jeho Pfam domény, v akom sú klane?
 +
 
 +
=HMM - pokračovanie, cvičenia pre informatikov=
 +
== Opakovanie - Viterbiho algoritmus ==
 +
 
 +
Hľadáme najpravdepodobnejšiu postupnosť stavov <math>A</math>, teda <math>\arg\max_A \Pr(A, S)</math>. Úlohu budeme riešiť dynamickým programovaním.
 +
 
 +
* Podproblém <math>V[i,u]</math>: Pravdepodobnosť najpravdepodobnejšej cesty končiacej po <math>i</math> krokoch v stave <math>u</math>, pričom vygeneruje <math>S_1 S_2 \dots S_i</math>.
 +
 
 +
* Rekurencia:
 +
** <math>V[1,u] = \pi_u e_{u,s_1}</math> (*)
 +
** <math>V[i,u] = \max_w V[i-1, w] a_{w,u} e_{u,x_i}</math> (**)
 +
 
 +
Algoritmus:
 +
# Nainicializuj <math>V[1,*]</math> podľa (*)
 +
# for i=2 to n=dĺžka reťazca
 +
:: for u=1 to m=počet stavov
 +
::: vypočítaj <math>V[i,u]</math> pomocou (**)
 +
# Maximálne <math>V[n,j]</math> je pravdepodobnosť najpravdepodobnejšej cesty
 +
 
 +
Zložitosť: <math>O(nm^2)</math>
 +
 
 +
Poznámka: pre dlhé sekvencie budú čísla <math>V[i,u]</math> veľmi malé a môže dôjsť k podtečeniu. V praxi teda používame zlogarimované hodnoty, namiesto násobenia súčet.
 +
 
 +
 
 +
== Inferencia - dopredný algoritmus ==
 +
 
 +
Aká je celková pravdepodobnosť, že vygenerujeme sekvenciu <math>S</math>, t.j. <math>\sum_A Pr(A,S).</math> Podobný algoritmus ako Viterbiho.
 +
 
 +
Podproblém <math>F_{i,u}</math>: pravdepodobnosť, že po <math>i</math> krokoch vygenerujeme <math>s_1, s_2, \dots s_i</math> a dostaneme sa do stavu <math>u</math>.
 +
 
 +
<math>F_{i,u} = \Pr(A_i=u\wedge S_1, S_2, \dots, S_i) = \sum_{A_1, A_2, \dots, A_i=j} \Pr (A_1, A_2, ..., A_i \wedge S_1, S_2, ..., S_i)</math>
 +
 
 +
<math>F_{1,u} = \pi_u e_{u,x_1}</math>
 +
 
 +
<math>F_{i,u} = \sum_v F_{i-1,v} a_{v,u} e_{u,x_i}</math>
 +
 
 +
Celková pravdepodobnosť <math>\sum_u F_{n,u}</math>
 +
 
 +
== Trénovanie HMM ==
 +
 
 +
* Stavový priestor + povolené prechody väčšinou ručne
 +
* Parametre (pravdepodobnosti prechodu, emisie a počiatočné) automaticky z trénovacích sekvencií
 +
** Ak máme anotované trénovacie sekvencie, jednoducho počítame frekvencie
 +
** Ak máme iba neanotované sekvencie, snažíme sa maximalizovať vierohodnosť trénovacích dát v modeli. Používajú sa heuristické iteratívne algoritmy, napr. Baum-Welchov, ktorý je verziou všeobecnejšieho algoritmu EM (expectation maximization).
 +
* Čím zložitejší model a viac parametrov máme, tým potrebujeme viac trénovacích dát, aby nedošlo k preučeniu, t.j. k situácii, keď model dobre zodpvedá nejakým zvláštnostiam trénovacích dát, nie však ďalším dátam.
 +
* Presnosť modelu testujeme na zvláštnych testovacích dátach, ktoré sme nepoužili na trénovanie.
 +
 
 +
== Tvorba stavového priestoru modelu ==
 +
 
 +
* Promótor + niekoľko eukaryotických génov
 +
* Repeaty v intrónoch: multiple path problem
 +
* Intrón má dĺžku aspoň 10
 +
 
 +
== Zovšeobecnené HMM ==
 +
* Problém s modelovaním rozdelenia dĺžok - v základnom modeli je geometrické
 +
* Zovseobecnene HMM v jednom stave vygenerujú viac znakov
 +
* Viterbi alg. a spol budú pomalšie (kvadratické od dĺžky sekvencie)
 +
 
 +
=Komparatívna genomika, cvičenia pre biológov=
 +
Na týchto cvičeniach sa budeme venovat trom statistickym temam suvisiacim s komparativnou genomikou, konkretne s detekciou pozitivneho vyberu. Tieto techniky sa vsak vyuzivaju aj v inych oblastiach a mozete sa s nimi casto stretnut v genomickych clankoch.
 +
 
 +
==Likelihood ratio test==
 +
Opakovanie z prednasky:
 +
* Mame sekvenciu urciteho genu z niekolkych druhov (viacnasobne zarovnanie, fylogeneticky strom), chceme testovat, ci nanho posobi pozitivny vyber
 +
* Mame pravdepodobnostny model evolucie kodonov, ktory urcuje, ako casto nastavaju rozne typy mutacii v kodonoch [Goldman, Yang 1994]
 +
** Tato rychlost zavisi od toho, ako casto sa vyskytuju jednotlive kodony (zmena na castejsi kodon je pravdepodobnejsia), ci ide o tranziciu alebo tranzverziu (tranzicie su pravdepodobnejsie) a ci ide o synonymnu alebo nesynonymnu mutaciu.
 +
** Pomer nesynonymnych a synonymnych mutacii sa oznacuje omega
 +
** pri negativnom (purifikacnom) vybere je omega mensie ako 1, pri pozitivnom vacsie ako 1, pre neutralnej evolucii 1
 +
 
 +
Nas model je teda skrinka s páčkou, ktorou mozeme nastavit omega (a dalsie parametre, ktore teraz nie su podstatne)
 +
* skrinka ma gombik, ktory ked stlacime, vygeneruje nahodne zarovnanie na danom fylogenetickom strome vygenerovane s prislusnou hodnotou omega
 +
* s urcitou pravdepodbnostou to bude presne to nase zarovnanie X, tuto prabdepodobnost oznacme Pr(X|omega)
 +
* tato pravdepodobnost sa bude lisit pre rozne omega
 +
* pravdepodobnost ako funkcia parametre sa nazyva vierohodnost, likelihood
 +
 
 +
Jednoduche pouzitie modelu: vezmeme zarovnanie genu a odhadneme hodnotu omega, ktora najlepsie zodpoveda datam, pri ktorej bude vierohodnost najvacsia, maximalizujeme Pr(X|omega).
 +
* Problem je, ze pre mnohe hodnoty omega moze byt tato vierohodnost podobna
 +
* Zvolime omegu s najvacsou vierohodnostou, ale ta moze byt len o nepatrny kusok lepsia ako mnohe ine omegy
 +
 
 +
Za gen s pozitivnym vyberom chceme oznacit len taky gen, kde su vyynamne viac vierohodne hodnoty omega>1 nez tie <=1
 +
* Spocitame dve hodnoty vierhodnosti:
 +
** maximalnu vierohodnost ked omega<1 (oznacme ju LA)
 +
** maximlanu vierohodnost ked omega nie je obmedzena (oznacme ju LB)
 +
* Vzdy plati LA<=LB
 +
*Ak skutocne omega<1
 +
** LA a LB by mali byt zhruba rovnako velke
 +
** 2 log(LA/LB) by mala byt nahodna premenna z rozdelenia chi kvadrat s jednym stupnom volnosti
 +
* Spocitame teda, aka je pravdepodobnost, ze 2 log(LA/LB) by cisto nahodou mala hodnoptu taku, ako sme namerali alebo vyssiu (P-value)
 +
* Ak je P-value mala, tvrdime, ze gen je pod vplyvom pozitivneho vyberu.
 +
 
 +
==Nadreprezentacia, obohatenie (enrichment)==
 +
* Mnohe celogenomove analyzy nam daju zoznam genov, ktore sa v nejakom ukazovateli vyrazne lisia od priemeru.
 +
* Napriklad geny s pozitivnym vyberom v komparativnej genomike, geny vyrazne nadexprimovane alebo podexprimovane v microrarray experimentoch, geny regulovane urcitym transkripcnym faktorom a pod.
 +
* Niektore z nich budu preskumanejsie (znama funkcia a pod.), niektore mozu mat nejake udaje o funkcii prenesene z homologov a dalsie mozu byt uplne nezname
 +
* Co s takym zoznamom "zaujimavych genov"?
 +
* moznost 1: vybrat si z neho niekolko malo zaujimavych kandidatov a preskumat ich podrobnejsie (experimentalne alebo informaticky)
 +
* moznost 2: zistit, ci tato cela skupina je obohatena o geny urcitych skupin
 +
** napr. v pripade pozitivneho vyberu nam casto vychadzaju geny suvisiace s imunitou, lebo su pod velkym evolucnym tlakom od patogenov
 +
** takato analyza nam teda da informaciu o suvislostiach medzi roznymi procesmi
 +
* Priklad (Kosiol et al)
 +
** 16529 genov celkovo, 70 genov v GO kategorii innate immune response (0.4% zo vsetkych genov)
 +
** 400 genov s pozivnym vyberom, mame 8 genov s innate immune response (2% zo vsetky genov s poz. vyb.)
 +
* Celkovy pocet genov n, imunitnych ni, pozitivny vyber np, imunitnych s poz. vyb. nip.
 +
* Nulova hypoteza: geny v nasom zozname boli nahodne vybrane z celeho genomu, t.j. ak v celom genome je frekvencia imunitnych genov ni/n, vo vzorke velkosti np (geny s pozitivnym vyberom) ocakavame cca np * ni / n imunitnych genov.
 +
** v nasom priklade by sme ocakavali 1.7 genu s innate immune response, ale mame 8 (4.7xviac)
 +
* Aj v nulovej hypoteze vsak vzorka velkosti ni cisto nahodou moze obsahovat viac alebo menej takych genov.
 +
* Rozdelenie pravdepodbnosti nip je hypergeometricke, t.j. pravdepodobnost ze nip=x je <math>{n_i \choose x}{n-n_i\choose n_p-x}/{n\choose n_p}</math>
 +
* Aka je pravdepodobnost, ze v nulovej hypoteze bude nip tolko, kolko sme namerali alebo viac? (Chvost rozdelenia). V nasom pripade p-value 2.8e-4.
 +
* Hypergeometric or Fisher's exact test, pripadne ich aproximacie pre velke hodnoty v tabulke (chi^2 test) zisti, ci sa nasa tabulka velmi lisi od toho, co by sme ocakavali v nulovej hypoteze
 +
 
 +
* Suvisiace clanky
 +
** {{cite journal |author=Rivals I, Personnaz L, Taing L, Potier MC |title=Enrichment or depletion of a GO category within a class of genes: which test? |journal=Bioinformatics (Oxford, England) |volume=23 |issue=4 |pages=401–7 |year=2007 |month=February |pmid=17182697 |doi=10.1093/bioinformatics/btl633 |url=}}
 +
** {{cite journal |author=Huang da W, Sherman BT, Lempicki RA |title=Bioinformatics enrichment tools: paths toward the comprehensive functional analysis of large gene lists |journal=Nucleic Acids Research |volume=37 |issue=1 |pages=1–13 |year=2009 |month=January |pmid=19033363 |pmc=2615629 |doi=10.1093/nar/gkn923 |url=}}
 +
 
 +
* Existuju web servery, napr. GOrilla pre ludske geny: http://cbl-gorilla.cs.technion.ac.il/, DAVID (http://david.niaid.nih.gov), g:Profiler http://biit.cs.ut.ee/gprofiler/
 +
* Treba dat pozor, ci pocitaju to co chceme
 +
 
 +
* Kod v statistickom systeme R na pocitanie hypergeometrickeho rozdelenia
 +
<pre>
 +
> dhyper(0:70, 70, 16529-70, 400);
 +
[1]  1.793421e-01  3.126761e-01  2.679872e-01  1.505169e-01  6.231088e-02
 +
[6]  2.027586e-02  5.400796e-03  1.210955e-03  2.332580e-04  3.920215e-05
 +
[11]  5.818723e-06  7.702558e-07  9.166688e-08  9.873221e-09  9.678760e-10
 +
[16]  8.677204e-11  7.143849e-12  5.420388e-13  3.802134e-14  2.472342e-15
 +
[21]  1.493876e-16  8.405488e-18  4.412274e-19  2.164351e-20  9.935473e-22
 +
[26]  4.273662e-23  1.724446e-24  6.533742e-26  2.326517e-27  7.791092e-29
 +
[31]  2.455307e-30  7.285339e-32  2.036140e-33  5.361856e-35  1.330660e-36
 +
[36]  3.112566e-38  6.862558e-40  1.426089e-41  2.792792e-43  5.153006e-45
 +
[41]  8.955105e-47  1.465159e-48  2.255667e-50  3.265636e-52  4.442631e-54
 +
[46]  5.674366e-56  6.797781e-58  7.629501e-60  8.012033e-62  7.860866e-64
 +
[51]  7.193798e-66  6.129013e-68  4.851139e-70  3.558526e-72  2.412561e-74
 +
[56]  1.506983e-76  8.641725e-79  4.530590e-81  2.161126e-83  9.326620e-86
 +
[61]  3.617279e-88  1.250737e-90  3.817900e-93  1.016417e-95  2.323667e-98
 +
[66] 4.469699e-101 7.034762e-104 8.698702e-107 7.924236e-110 4.728201e-113
 +
[71] 1.386176e-116
 +
phyper(7, 70, 16529-70, 400, lower.tail=FALSE);
 +
</pre>
 +
 
 +
==Multiple testing correction==
 +
* V mnohych situaciach robime vela testov toho isteho typu, kazdy ma urcitu p-value
 +
* Napr. testujeme 1000 genov v genome na pozitivny vyber, zvolime tie, kde p-value <= 0.05
 +
* Alebo testujeme obohatenie 1000 kategorii v nejakej vzorke genov, zvolime tie, kde p-value <= 0.05
 +
* Problem: ak kazda z 1000 kategorii ma 5% sancu tam byt len nahodou, ocakavali by sme 50 cisto nahodnych pozitivnych vysledkov. Ak sme napr. nasli 100 pozitivnych vysledkov (obohatenych kategorii), cca polovica z nich je zle
 +
* Preto potrebujeme pri velkom mnozstve testov umelo znizit prah na p-value tak, aby nahodny sum netvoril velke percento nasich vysledkov
 +
* Toto sa vola multiple testing correction, je viac technik, napr. FDR (false discovery rate)
 +
 
 +
=Populačná genomika, cvičenia pre informatikov=
 +
==Haplotypovanie pomocou celočísleného lineárneho programovania==
 +
 
 +
* Obcas chceme najst optimalne riesenie nejakeho NP-tazkeho problemu
 +
* Jedna moznost je previest na iny NP tazky problem, pre ktory existuju pomerne dobre prakticke programy, napriklad '''integer linear programming (ILP)'''
 +
 
 +
===Prakticke programy na NP tazke problemy===
 +
* najdu optimalne riesenie, mnohe instancie zrataju v rozumnom case, ale mozu bezat aj velmi dlho
 +
* CPLEX [http://www-01.ibm.com/software/integration/optimization/cplex-optimizer/] a Gurobi [http://www.gurobi.com/html/academic.html] komercne baliky na ILP, akademicka licencia zadarmo
 +
* SYMPHONY v projekte COIN-OR [https://projects.coin-or.org/SYMPHONY] open source
 +
* Minisat [http://minisat.se/] open source SAT solver
 +
* Concorde TSP solver [http://www.tsp.gatech.edu/concorde.html] - riesi problem obchodneho cestujuceho so symetrickymi vzdialenostami, zadarmo na akademicke ucely
 +
** Pre zaujimavost: TSP art [http://www.cgl.uwaterloo.ca/~csk/projects/tsp/]
 +
 
 +
===ILP===
 +
'''Linearny program:'''
 +
* Mame realne premenne x_1...x_n, minimalizujeme nejaku ich linearnu kombinaciu <math>\sum_i a_i x_i\,</math> kde a_i su dane vahy.
 +
* Mame tiez niekolko podmienok v tvare linearnych rovnosti alebo nerovnosti, napr. <math>\sum_i b_i x_i \le c</math>
 +
* Hladame teda hodnoty premennych, ktore minimalizuju cielovu sumu, ale pre ktore platia vsetky podmienky
 +
* Da sa riesit v polynomialnom case
 +
'''Integer linear program'''
 +
* Program, v ktorom vsetky premenne musia mat celociselne hodnoty, alebo dokonca povolime oba hodnoty 0 a 1.
 +
* NP uplny problem
 +
 
 +
===Ako zapisat (NP-tazke) problemy ako ILP===
 +
Knapsack
 +
* Problem: mame dane predmety s hmotnostami w_1..w_n a cenami c_1..c_n, ktore z nich vybrat, aby celkova hmotnost bola najviac T a cena bola co najvyssia?
 +
* Pouzijeme binarne premenne x_1..x_n, kde x_i = 1 prave vtedy ked sme zobrali i-ty predmet.
 +
* Chceme maximalizovat <math>\sum_i c_i x_i\,</math>
 +
* za podmienky ze <math>\sum_i w_i x_i \le T</math>
 +
 
 +
Set cover:
 +
* Mame n mnozin S_1...S_n nad mnozinou {1...m}. Chceme vybrat co najmensiu pomnozinu A tak, aby kazde S_i obsahovalo aspon jeden prvok z A
 +
* Binarne premenne x_i=1 ak vyberieme i-ty prvok
 +
* Chceme minimalizovat <math>\sum_i x_i\,</math>
 +
* za podmienky, ze pre kazde i plati <math>\sum_{j\in S_i} x_j \ge 1</math>
 +
 
 +
===Haplotypovanie===
 +
* Haplotyp: hodnoty SNPov na jednom chromozome, vieme zapisat ako binarny retazec (všetko okrem SNPov vynecháme, 0: menšinová alela, 1: väčšinová alela)
 +
* Dve kópie chromozómu a preto dve kópie každého SNPu:
 +
<pre>
 +
haplotyp 1:  001100010110
 +
haplotyp 2:  001000011110
 +
            --------------
 +
genotyp:      002100021220
 +
</pre>
 +
* Bežnými metódami získame väčšinou iba genotyp, ktory ziskame scitanim haplotypov (pre heterozygotov ma hodnotu 1, pre homozygotov 0 alebo 2). Na prednaske a v biologickej literature sa casto pouziva opacne oznacenie, kde pre homozygotov pozuime ich hodnotu 0 alebo 1 a pre heterozygotov 2
 +
* Jeden genotyp vieme ziskat z viacerych kombinacii halpotypov, preto len z jedneho genotypu nevieme haplotypy jednoznacne urcit
 +
<pre>
 +
haplotyp 1:  001100010110    haplotyp 1:  001100011110
 +
haplotyp 2:  001000011110    haplotyp 2:  001000010110
 +
              ------------                  ------------
 +
genotyp:      002100021220    genotyp:      002100021220
 +
</pre>
 +
 
 +
* ak mame vela genotypov a predpokladame, ze vznikli z malého množstva haplotypov (founding population) malým počtom mutácií, počet rôznych haplotypov v populácii by mal byť malý
 +
** toto plati pre krátky región, s malou pravdepodobnosťou rekombinácie
 +
 
 +
===Haplotype inference by pure parsimony (HIPP)===
 +
 
 +
* Predpoklad: malý počet haplotypov v populácii
 +
* Vstup: veľa genotypov
 +
* Vystup: najmenší počet haplotypov, z ktorých je možné poskladať všetky vstupné genotypy.
 +
 
 +
<pre>
 +
Genotypy:    Riešenie 1:      Riešenie 2:
 +
0121        (0010, 0111)      (0010, 0111)
 +
1122        (0011, 1111)      (0111, 1011) 
 +
1021        (0010, 1011)      (0010, 1011)
 +
              ------------      ------------
 +
              5 haplotypov      3 haplotypy
 +
</pre>
 +
* Nanešťastie HIPP je NP-ťažký problém
 +
 
 +
===HIPP ako celočíselné lineárne programovanie===
 +
 
 +
* Z clanku  Gusfield CPM 2003
 +
* Dovolíme iba celočíselné premenné s hodnotami 0 alebo 1
 +
* Genotyp <math>g_1=0121</math> môže mať dve rôzne riešenia:
 +
*# (0010,0111) alebo
 +
*# (0011,0110)
 +
 
 +
* <math>y_{1,1} = 1</math> práve ak pre <math>g_1</math> použijeme riešenie 1
 +
* <math>y_{1,2} = 1</math> práve ak pre <math>g_1</math> použijeme riešenie 2
 +
* Musi platit <math>y_{1,1}+y_{1,2} = 1</math>
 +
* Pre kazdy genotyp g a pre kazdu dvojicu haplotov j, ktore sa skladaju do g mame premennu <math>y_{g,i}</math>, ktora je jedna prave vtedy, ak dvojica i je riesenim.
 +
 
 +
* Pre každý možný haplotyp ''h'' premennú <math>x_h</math>
 +
** <math>x_h = 1</math>, práve ak sa haplotyp ''h'' použije aspoň v jednom genotype
 +
** <math>y_{1,1} \le x_{0010},\quad y_{1,1} \le x_{0111},</math>
 +
** <math>y_{1,2} \le x_{0110},\quad y_{1,2} \le x_{0011}</math>
 +
* Počet použitých haplotypov v danom riešení: <math>\sum x_h</math>
 +
 
 +
Príklad pre 0121,1122,1021:
 +
* Minimalizuj <math>\sum x_h</math> za podmienok:
 +
* <math>y_{1,1}+y_{1,2} = 1</math>
 +
* <math>y_{1,1} \le x_{0010},\quad y_{1,1} \le x_{0111}</math>
 +
* <math>y_{1,2} \le x_{0110},\quad y_{1,2} \le x_{0011}</math>
 +
* <math>y_{2,1}+y_{2,2} = 1</math>
 +
* <math>y_{2,1} \le x_{0011},\quad y_{2,1} \le x_{1111}</math>
 +
* <math>y_{2,2} \le x_{0111},\quad y_{2,2} \le x_{1011}</math>
 +
* <math>y_{3,1}+y_{3,2} = 1</math>
 +
* <math>y_{3,1} \le x_{0010},\quad y_{3,1} \le x_{1011}</math>
 +
* <math>y_{3,2} \le x_{0011},\quad y_{3,2} \le x_{1010}</math>
 +
 
 +
* Pocet premennych je v najhorsom pripade exponencialny od dlzky genotypov!
 +
 
 +
===Iná formulácia ako ILP (nerobili sme)===
 +
Existuju aj celociselne programy s polynomialnym poctom premennych a nerovnosti (Halldorsson et al 2004), ale casto ich riesenie trva dlhsie (Brown and Harrower 2006)
 +
* Pre n genotypov mame 2n haplotypov, par haplotypov pre kazdy genotyp
 +
* Genotyp prepíšeme ako sumu halptypov, t.j. heterozygoti budu 1 (0+1) a homozygoti 0 a 2
 +
* Premenna <math>y_{i,k}</math> reprezentuje hodnotu haplotypu i na pozicii k (0 alebo 1)
 +
* Musi splnat rovnost <math>y_{2i-1,k} + y_{2i,k} = g_i[k]</math> t.j. sa rovna genotypu i na pozicii k
 +
* Premenna <math>d_{i,j}</math> je 1 prave vtedy ked haplotypy i a j sa nerovnaju
 +
* Toto je <math>d_{i,j}\ge y_{i,k}-y_{j,k}</math> a <math>d_{i,j}\ge y_{j,k}-y_{i,k}</math>
 +
* Premenna <math>x_{i}</math> je jedna, ak sa haplotyp lisi od vsetkych predchadzajucich haplotypov {1,2,...,i-1}
 +
* <math>x_i \ge 2 - i + \sum_{j=1}^{i-1} d_{j,i}</math> (ak su vsetky <math>d_{i,j}=1</math>, prava strana je 1, teda aj x_i musi byt 1. Ak je niektore x_i 0, prava strana <=0, teda x_i moze byt hocico)
 +
* Minimalizujeme sucet <math>\sum_{i=1}^{2n} x_i</math>
 +
 
 +
==Bezkontextove gramatiky==
 +
* pozri [[Populačná genomika a RNA štruktúra, cvičenia pre biológov]]
 +
 
 +
=Populačná genomika a RNA štruktúra, cvičenia pre biológov=
 +
==RNA==
 +
 
 +
===Nussinovov algoritmus===
 +
 
 +
Z cvičných príkladov na skúšku
 +
* Vyplnte maticu dynamického programovania (Nussinovov algoritmus) pre nájdenie najväčšieho počtu dobre uzátvorkovaných spárovaných báz v RNA sekvencii GAACUUCACUGA (dovoľujeme len komplementárne páry A-U, C-G) a nakreslite sekundárnu štruktúru, ktorú algoritmus našiel.
 +
<pre>
 +
G A A C U U C A C U G A
 +
0 0 0 1 1 2 3 3 3 4 4 4  G
 +
  0 0 0 1 2 2 2 2 3 4 4  A
 +
    0 0 1 1 1 2 2 2 3 4  A
 +
      0 0 0 0 1 1 1 2 3  C
 +
        0 0 0 1 1 1 2 3  U
 +
          0 0 1 1 1 2 3  U
 +
            0 0 0 1 2 2  C
 +
              0 0 1 1 1  A
 +
                0 0 1 1  C
 +
                  0 0 1  U
 +
                    0 0  G
 +
                      0  A
 +
</pre>
 +
 
 +
===Bezkontextove gramatiky===
 +
 
 +
* Na modelovanie struktury RNA sa pouzivaju stochasticke bezkontextove gramatiky
 +
* My si teraz ukazeme bezkontextove gramatiky, ktore nemaju pravdepodobnosti
 +
* Zaviedol Noam Chomsky v lingvistike 50-te roky 20. storocia, tiez dolezite v informatike
 +
* '''Gramatika'''
 +
** Dva typy symbolov: terminaly (male pismena), neterminaly (velke pismena)
 +
** Pravidla prepisujuce neterminal na retazec terminalov a neterminalov (moze byt aj prazdny retazec, ktory oznacujeme epsilon)
 +
** Neterminal S je "startovaci"
 +
** Priklad: S->aSb, S->epsilon (piseme aj skratene S->aSb|epsilon)
 +
* '''Pouzitie gramatiky''' na generovanie retazcov
 +
** Zacneme so startovacim neterminalom S
 +
** V kazdom kroku prepiseme najlavejsi neterminal podla niektoreho pravidla
 +
** Skoncime, ked nezostanu ziadne neterminaly
 +
* Priklad: S->aSb->aaSbb->aaaSbbb->epsilon
 +
** Ake vsetky slova vie tato gramatika generovat?
 +
** V tvare aa...abb...b s rovnakym poctom acok a bciek (informatici pisu a^kb^k)
 +
* Zostavte gramatiku na slova typu aa..abb..b kde acok je rovnako alebo viac ako bcok
 +
** S->aSb|aS|epsilon
 +
* zostavte gramatiku pre slova toho isteho typu, kde acok je viac ako bcok
 +
** S->aSb|aT T->aT|epsilon (alebo S->aSb|aS|a)
 +
* uvazujme dobre uzatvorkovane vyrazy zo zatvoriek (,),[,] napr. [()()([])] je dobre uzatvorkovany, ale [(])  nie je.
 +
** S->SS|(S)|[S]|epsilon
 +
** S->[S]->[SS]->[SSS]->[(S)SS]->[()SS]->[()(S)S]->[()()S]->[()()(S)]->[()()([S])]->[()()([])]
 +
** '''Parsovanie retazca''' pomocou gramatiky: urcit, ako mohol byt retazec vygenerovany pomocou pravidiel
 +
** Tato gramatika nam pomoze urcit, ktora zatvorka patri ku ktorej: tie, ktore boli vygenerovane v jednom kroku
 +
* Zostavte gramatiku na DNA palindromy, t.j. sekvencie, ktore zozadu po skomplementovani baz daju to iste, ako napr. GATC
 +
** S->gSc|cSg|aSt|tSa|epsilon
 +
* Zostavte gramatiku na slova s rovnakym poctom acok a bcok v lubovolnom poradi
 +
** S->epsilon|aSbS|bSaS
 +
** preco vie vygenerovat vsetky take retazce?
 +
 
 +
==Populacna genomika==
 +
* vynechana cast prednasky o populacnej strukture, strany 23-26
 +
* vynechana cast prednasky o indeloch: strana 28
 +
 
 +
==Prakticke cvicenie==
 +
===RNA===
 +
* Znama databaza rodin RNA genov je [http://rfam.sanger.ac.uk/ Rfam]
 +
* Najdite si v nej rodinu RF00015 (U4 spliceosomal RNA)
 +
* V casti Secondary structure si mozete pozriet obrazky farebne kodovane podla roznych kriterii
 +
** Skuste pochopit, co jednotlive obrazky a ich farby znamenaju
 +
* Jedna z mnohych ludskych kopii je tato:
 +
<pre>
 +
AGCTTTGCGCAGTGGCAGTATCGTAGCCAATGAGGTTTATCCGAGGCGCG
 +
ATTATTGCTAATTGAAAACTTTTCCCAATACCCCGCCATGACGACTTGAA
 +
ATATAGTCGGCATTGGCAATTTTTGACAGTCTCTACGGAGA
 +
</pre>
 +
* Skuste ju najst v ludskom genome verzia hg18 nastrojom BLAT v [http://genome.ucsc.edu UCSC genome browseri]
 +
* Pozrite si tracky Mapability, Ensembl genes, conservation, Repeats v jej okoli
 +
* Pozrite si track "CSHL Sm RNA-seq" ktory obsahuje RNASeq kratky RNA z roznych casti buniek, zapnite si v jeho nastaveniach aj zobrazenie RNA z jadra (nucleus)
 +
* Zadajte sekvenciu na RNAfold serveri [http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi]
 +
* Ak vypocet dlho trva, pozrite si vysledok [http://rna.tbi.univie.ac.at/RNAfold/28uoB6Z5nY tu]
 +
* Podoba sa na strukturu zobrazenu v Rfame? v com sa lisi?
 +
 
 +
===Populacna genomika v UCSC genome browseri===
 +
* Verzia hg18 na [http://genome.ucsc.edu UCSC genome browseri] ma viacero trackov tykajucich sa populacnej genomiky a polymorfizmov
 +
* V casti Phenotype and Disease Associations si zapnite GAD view
 +
* V casti Variation and Repeats si zapnite
 +
** HGDP Allele Freq na Pack (po kliknuti na SNP zobrazi mapu sveta s distribuciou alel)
 +
** "HapMap LD Phased" na Full
 +
** "DGV Struct Var" na Pack
 +
* Pozrite si napriklad region chr2:164,862-426,468
 +
* Track Genome Variants obsahuje genomy niekolkych ludi, napr Jim Watsona
 +
* Takisto sa da pozriet genom ludi z jaskyne Denisova a Neandertalcov
 +
 
 +
* Browser diverzity u S.cerevisae: [http://www.sanger.ac.uk/research/projects/genomeinformatics/browser.html]
 +
 
 +
=Zhlukovanie a populačná genomika, cvičenia pre informatikov=
 +
 
 +
== Zhlukovanie ==
 +
 
 +
[[Image:P16-zhluky.png|thumb|right|Príklad dvoch zhlukov]]
 +
 
 +
Využitie:
 +
* taggovanie nových príspevkov na blogu pomocou taggov príspektov, s ktorými je nový príspevok v zhluku
 +
* news.google.com - zhlukovanie správ podľa spoločnej témy
 +
* počítačová grafika
 +
** segmentácia obrázkov - rozdelenie obrázka na "rozumné" časti
 +
** zníženie počet farieb
 +
* výpočtová biológia - funkčné skupiny génov
 +
* detekcia anomálií - napr. testovanie motorov do lietadiel (predpokladám, že väčšina vyrobených motorov je dobrá, na základe meraní motory pozhlukujem a tie mimo hlavného vyhlásim za potencionálne závadné)
 +
 
 +
 
 +
=== K-Means ===
 +
[[Image:P16-minimalizacia.png|thumb|right|Znázornenie vzdialenosti bodov od príslušných centroidov]]
 +
 
 +
:'''Vstup:''' Body <math>x_1, x_2, ..., x_t, \mbox{ kde } (x_i \in R^n)</math> a počet zhlukov k
 +
 
 +
:'''Výstup:''' Rozdelenie do k zhlukov takéto:
 +
::<math>c_1, c_2, ..., c_t \; (1 \leq c_i \leq k)</math> - priradenie bodu k zhluku
 +
::<math>\mu_1, \mu_2, ..., \mu_k \; (\mu_i \in R^n)</math> - centrá každého zhluku ''centroidy''
 +
 
 +
 
 +
:'''Úloha''': minimalizovať chybovú funkciu <math>J(\mu, c) = \sum_{i = 1}^k \sum_{j: c_j = i} \big\| x_j - \mu_i \big\|_2^2</math> (inými slovami, počítam ako ďaleko (Euklidovská vzdialenosť) je každý bod od svojho centroidu?)
 +
 
 +
 
 +
==== Algoritmus ====
 +
 
 +
# inicializácia: náhodne vyber k centroidov <math>\ \mu_1, \mu_2, ..., \mu_k</math>
 +
# opakuj až do konvergencie:
 +
#: priraď každý bod najbližšiemu centroidu: <math>c_i = \operatorname{arg_j\,min} \big\| x_i - \mu_j \big\|_2 </math>
 +
#: vypočítaj nové centroidy: <math>\mu_j = \operatorname{avg_{i : c_i = j}} x_i</math> (spriemerujem všetky body v jednom zhluku)
 +
 
 +
 
 +
==Gibbs sampling, Gibbsovo vzorkovanie vseobecne==
 +
* Cielove rozdelenie ma n premennych <math>\pi(x_1,...x_n)</math>
 +
* V kazdom kroku vzorkujeme jednu premennu z podmienenej pravdepodobnosti <math>\Pr(x_i|x_1,\dots,x_{i-1},x_{i+1},\dots x_n)</math>
 +
* Ostatne hodnoty nechame rovnake ako v predchadzajucom kroku
 +
* Premennu <math>x_i</math> zvolime nahodne alebo periodicky <math>i=1,2,\dots,n</math>
 +
* Vzorky nie su nezavisle, no vieme dokazat nieco o konvergencii k <math>\pi</math> (pozri nizsie)
 +
 
 +
===Markov chain Monte Carlo MCMC===
 +
* Chceme generovať náhodné vzorky z nejakeho cieloveho rozdelenia <math>\pi</math>, ale toto rozdelenie prilis zlozite.
 +
* Zostavime ergodicky Markovov retazec, ktoreho stacionarne rozdelenie je rozdelenie <math>\pi</math>, tak aby sme efektivne vedeli vzorkovat <math>X_{t}</math> ak vieme <math>X_{t-1}</math>.
 +
* Ak zacneme z lubovolneho bodu, po urcitom case t rozdelenie <math>X_{t}</math> priblizne <math>\pi</math>
 +
* Ale za sebou iduce vzorky nie su nezavisle!
 +
* Vieme vsak odhadovat ocakavane hodnoty roznych velicin <math>\frac{1}{t} \sum_{i=1}^t f(X_t)</math> konverguje k <math>E_\pi [f(X)]</math>
 +
 
 +
==Určovanie štruktúry populácie==
 +
* {{cite journal |author=Pritchard JK, Stephens M, Donnelly P |title=Inference of population structure using multilocus genotype data |journal=Genetics |volume=155 |issue=2 |pages=945–59 |year=2000 |month=June |pmid=10835412 |pmc=1461096 |doi= |url=http://www.genetics.org/cgi/content/abstract/155/2/945}}
 +
 
 +
* Majme N haploidnych jedincov (lahko sa rozsiri aj na genotypy pri diploidnych jedincoch), L genotypovanych SNPov, SNPy navzajom nezavisle (v stave LE), pocet populacii K
 +
* X[i,l] - haplototyp jedinca i v SNPe l (zvacsa binarna premenna)
 +
* Z[i,l] - z ktorej subpopulacie pochadza alela X[i,l] (cislo z {1...k})
 +
* Q[i,k] - aka cast genomu jedinca i pochadza z populacie k (realne cislo)
 +
* P[k,l,a] - frekvencia alely a v SNPe l v populacii k (realne cislo)
 +
 
 +
* P pochadza z nejakeho apriorneho rozdelenia, napr. rovnomerne rozdelenie, Dirichletovo rozdelenie, nezavisle pre kazde k,l
 +
* Podobne Q (nezavisle pre kazde i)
 +
* Pr(Z[i,l] = k|P,Q) = Q[i,k] a Pr(Z|P,Q) je sucin takychto clenov
 +
* Pr(X[i,l] = a|Z,P,Q) = P[Z[i,l],l,a] a Pr(X|Z,P,Q) je sucin takychto clenov (SNPy nezavisle)
 +
* To nam urcuje Pr(P,Q,Z,X) = Pr(P)Pr(Q)Pr(Z|P,Q)Pr(X|Z,P,Q)
 +
* My chceme Pr(Q|X)
 +
 
 +
Algoritmus Gibbsovho vzorkovania:
 +
* Zvol pociatocne <math>Z^{(0)}</math>
 +
* Opakuj:
 +
** Zvol nahodne <math>P^{(m)}, Q^{(m)}</math> z <math>Pr(P,Q|X,Z^{(m-1)})</math>
 +
** Zvol nahodne <math>Z^{(m)}</math> z <math>Pr(Z|X,P^{(m)}, Q^{(m)})</math>
 +
* Vzorce v clanku
 +
 
 +
* Mierna komplikacia: ak aproximujeme <math>E[Q[i,k]|X]</math> pomocou priemeru <math>Q^{(m)}</math>, mali by sme dostat 1/K kvoli symetrii (K! symetrickych rieseni)
 +
* Nastastie sa Gibbsovo vzorkovanie malokedy presuva medzi roznymi oznackovaniami tych istych populacii
 +
* Inak musime pouzit nejako preznacit populacie vo vysledku aby boli ekvivalentne v roznych vzorkach
 +
 
 +
=Expresia génov, cvičenia pre biológov=
 +
== Zhlukovanie ==
 +
 
 +
[[Image:P16-zhluky.png|thumb|right|Príklad dvoch zhlukov]]
 +
 
 +
Využitie:
 +
* taggovanie nových príspevkov na blogu pomocou taggov príspektov, s ktorými je nový príspevok v zhluku
 +
* news.google.com - zhlukovanie správ podľa spoločnej témy
 +
* počítačová grafika
 +
** segmentácia obrázkov - rozdelenie obrázka na "rozumné" časti
 +
** zníženie počet farieb
 +
* výpočtová biológia - funkčné skupiny génov
 +
* detekcia anomálií - napr. testovanie motorov do lietadiel (predpokladám, že väčšina vyrobených motorov je dobrá, na základe meraní motory pozhlukujem a tie mimo hlavného vyhlásim za potencionálne závadné)
 +
 
 +
 
 +
=== K-Means ===
 +
[[Image:P16-minimalizacia.png|thumb|right|Znázornenie vzdialenosti bodov od príslušných centroidov]]
 +
 
 +
:'''Vstup:''' Body <math>x_1, x_2, ..., x_t, \mbox{ kde } (x_i \in R^n)</math> a počet zhlukov k
 +
 
 +
:'''Výstup:''' Rozdelenie do k zhlukov takéto:
 +
::<math>c_1, c_2, ..., c_t \; (1 \leq c_i \leq k)</math> - priradenie bodu k zhluku
 +
::<math>\mu_1, \mu_2, ..., \mu_k \; (\mu_i \in R^n)</math> - centrá každého zhluku ''centroidy''
 +
 
 +
 
 +
:'''Úloha''': minimalizovať chybovú funkciu <math>J(\mu, c) = \sum_{i = 1}^k \sum_{j: c_j = i} \big\| x_j - \mu_i \big\|_2^2</math> (inými slovami, počítam ako ďaleko (Euklidovská vzdialenosť) je každý bod od svojho centroidu?)
 +
 
 +
 
 +
==== Algoritmus ====
 +
 
 +
# inicializácia: náhodne vyber k centroidov <math>\ \mu_1, \mu_2, ..., \mu_k</math>
 +
# opakuj až do konvergencie:
 +
#: priraď každý bod najbližšiemu centroidu: <math>c_i = \operatorname{arg_j\,min} \big\| x_i - \mu_j \big\|_2 </math>
 +
#: vypočítaj nové centroidy: <math>\mu_j = \operatorname{avg_{i : c_i = j}} x_i</math> (spriemerujem všetky body v jednom zhluku)
 +
 
 +
===Normalizacia dat===
 +
* (nepreberané na cvičeniach, uvádzané pre zaujímavosť)
 +
* Pozri prednasku  http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/rigat/st416/
 +
 
 +
===Prakticke cvicenie===
 +
Data o expresii ludskych genov v roznych tkanivach a podobne v '''UCSC genome browseri'''
 +
* Chodte na stranku http://genome.ucsc.edu/, najdite PTPRZ1 gen v ludskom genome
 +
* Zvolte Gene Sort, sort by nechajme Expression (GNF Atlas 2), v configure nechajme iba name, search PTPRZ1, output text
 +
* http://biit.cs.ut.ee/gprofiler/ mena genov skopirujme do policka Query, stlacte g:Profile!
 +
* Co by sme na zaklade nadreprezentovanych kategorii usudzovali o tomto gene?
 +
* Najdite tento gen v Uniprote (http://www.uniprot.org/), potvrdzuje nase domnienky?
 +
 
 +
* Vratme sa do do genome browsera, najdime si PTPRZ1 gen v genome
 +
* V browseri su rozne tracky tykajuce sa expresie, napr. GNF Atlas 2. Precitajte si, co je v tomto tracku zobrazene, zapnite si ho a pozrite si expresiu okolitych genov okolo PTPRZ1
 +
* Kliknite na gen v tracku UCSC known genes. V tabulke uvodite zase prehlad expresie v roznych tkanivach (podla GNF Atlasu), linku na Visigene.
 +
 
 +
'''NCBI Gene Expression Omnibus''' http://www.ncbi.nlm.nih.gov/geo/
 +
* Databaza gene expression dat na NCBI
 +
* Do okienka Data sets zadajme GDS2925
 +
* Mali by sme dostat (Various weak organic acids effect on anaerobic yeast chemostat cultures)
 +
* Mozeme si pozriet zakladne udaje, napr. citation, platform
 +
* Link expression profiles nam zobrazi grafy pre rozne geny
 +
* Pri kazdom profile mozeme kliknut na profile neighbors, aby sme videli geny s podobnym profilom
 +
* Data analysis tools, cast Cluster heatmaps, K-means, skuste rozne pocty clustrov
 +
 
 +
'''MEME'''
 +
* Vazobne miesta transkripcnych faktorov sa casto reprezentuju ako sekvencne motivy
 +
* Ak mame skupinu sekvencii, mozeme hladat motiv, ktory maju spolocny
 +
* Znamy program na tento problem je MEME
 +
* Chodte na stranku http://meme.nbcr.net/
 +
* Zvolte nastroj MEME a do okienka "actual sequences" zadajte [http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb11/seq.fa tieto sekvencie]
 +
* Pozrite si ostatne nastavenia. Co asi robia?
 +
* Ak server pocita dlho, mozete si pozriet vysledky [http://meme.nbcr.net/meme4_7_0/cgi-bin/querystatus.cgi?jobid=app1323331451591&service=MEME tu]
 +
 
 +
=RNA štruktúra a zhrnutie semestra, cvičenia pre informatikov=
 +
==RNA struktura==
 +
 
 +
* Opakovanie Nussinovho algoritmu
 +
* Rozsirenie na pripad, ze chceme davat vyssie skore "stackovanym parom"
 +
 
 +
==Zhrnutie semestra==
 +
 
 +
Pravdepodobnostné modely
 +
* Skryté Markovove modely (hľadanie génov, konzervovaných oblastí, fylogenetické HMM, profilové HMM)
 +
* Fylogenetické stromy a substitučné modely
 +
* Stochastické bezkontextové gramatiky
 +
* Gibbsovo vzorkovanie
 +
* Metóda maximálnej vierohodnosti
 +
 
 +
Štatistické metódy
 +
* Pojem štatistickej významnosti
 +
* E-value a P-value
 +
* Test na pozitívny výber
 +
* Linkage disequilibrium
 +
* Mapovanie asociácií
 +
 
 +
Precvičenie dynamického programovania
 +
* Zarovnávanie sekvencií, viacero variantov (globálne, lokálne, afínne medzery)
 +
* Skryté Markovove modely (Viterbiho algoritmus)
 +
* Výpočty na stromoch (úspornosť, vierohodnosť - Felsensteinov algoritmus)
 +
* Hmotnostná spektrometria (MS/MS)
 +
* Sekundárna štruktúra RNA
 +
 
 +
Iné
 +
* Integer linear programming
 +
* deBruijnove grafy
 +
* Zhlukovanie a klasifikácia
 +
 
 +
Ako modelovať problémy reálneho sveta
 +
* Rozmyslieť si, aké máme dáta, čo by sme chceli ako výsledok
 +
* Sformulovať ako informatický problém (napr. optimalizácia nejakého skóre)
 +
* Pravdepodobnostné modely nám často dovolia zvoliť skórovaciu schému systematickým spôsobom
 +
* Výsledný problém často NP ťažký
 +
** Heuristiky, aproximačne algoritmy
 +
** ILP a iné techniky na presné riešenie
 +
** Nedá sa problém trochu preformulovať?
 +
* Testovanie: sú vypočtové výsledky relevantné v danej doméne? (bola formulácia dostatočne realistická?)
 +
 
 +
Ďalšie predmety
 +
* http://compbio.fmph.uniba.sk/vyuka/
 +
* [http://dai.fmph.uniba.sk/courses/ml/ Strojové učenie] 2-INF-150, Vinař/Petrovič (ZS, 4 hodiny, 6 kreditov)
 +
* [http://compbio.fmph.uniba.sk/vyuka/gm/ Grafové modely v strojovom učení] Vinař (LS, 4 hodiny, 6 kreditov)
 +
* [http://compbio.fmph.uniba.sk/vyuka/vvt/ Vyhľadávanie v texte] 2-INF-147, Brejová (LS, 4 hodiny, 6 kreditov)
 +
* [http://www.biocenter.sk/ltteaching.html Biológia] N-bCXX-055, Tomáška (ZS, 2 hodiny, 2 kredity)
 +
* [http://www.biocenter.sk/ltteaching.html Všeobecná biológia] N-bCXX-085, Tomáška (LS, 2 hodiny, 2 kredity)
 +
* [http://www.biocenter.sk/jnteaching.html Genomika] N-mCBI-303, Nosek (LS, 2 hodiny, 3 kredity)
 +
 
 +
=Motívy a zhrnutie semestra, cvičenia pre biológov=
 +
==Hľadanie motívov==
 +
===Opakovanie z prednasky===
 +
* Hladame vazobne miesta TF
 +
* Reprezentujeme ako sekvencne motivy (vo forme konsenzus retazcov, regularnych vyrazov alebo PSSM)
 +
* Dva bioinformaticke problemy:
 +
* '''Hladanie novych motivov'''
 +
** hladame motiv, ktory sa opakuje vo vstupnych sekvenciach
 +
** sekvencie ziskame pomocou ChIP, alebo ako promotery koregulovanych genov
 +
** vypoctovo narocny problem
 +
** nasli sme to, co sme chceli?
 +
* '''Hladanie novych vyskytov znameho motivu'''
 +
** vypoctovo jednoduchy problem
 +
** zvycajne najdeme vela vyskytov, nie vsetky biologicky relevantne
 +
 
 +
===Programy na pracu s motivmi===
 +
* Hladanie vyskytov znamych motivov
 +
** Nejake programy na pracu s motivmi najdete na stranke http://mobyle.pasteur.fr/
 +
** dreg, preg
 +
** pftools, sig
 +
** scan_for_matches
 +
** prophet, profit (matice)
 +
** jaspscan (jaspar db), tfscan (stara verzia transfac)
 +
* Hladanie novych motivov
 +
** Znamy program na hladanie novych motivov, webserver MEME http://meme.nbcr.net/ (minule na cviceni pro pocitaci)
 +
 
 +
===Komparativne hladanie motivov===
 +
* Z vela vyskytov motivu chceme najst tie skutocne funkcne
 +
* Purifikacny vyber: funkcne sekvencie sa menia pomalsie ako zvysok genomu
 +
* Toto by malo platit aj pre vazobne miesta TF
 +
* Chceme teda najst vyskyty motivu zachovane aj v pribuznych organizmoch
 +
* Mala fylogeneticka vzdialenost (napr. clovek-simpanz): mala sanca, ze bude mutacia v kratkom okne, nie je mozne statisticky rozpoznat "zachovane" sekvencie pre kratke motivy
 +
* Velka fylogeneticka vzdialenost: nekodujuce oblasti tazko zarovnatelne, takze aj homologicke vyskyty motivu nebudu zarovnane (lebo su kratke)
 +
* Ako zostavujeme celogenomove zarovnania:
 +
** najdeme signifikantne lokalne zarovnania (mala e-value)
 +
** tie spajame dokopy do retazi a sieti
 +
** ak je jeden kratky motiv uprostred neutralne sa vyvijajucej DNA, nebude mat signifikantne lokalne zarovnanie
 +
* Mnohe programy dovoluju posun motivu v urcitom okne zarovnania
 +
* Priklad: {{cite journal |author=Kheradpour P, Stark A, Roy S, Kellis M |title=Reliable prediction of regulator targets using 12 Drosophila genomes |journal=Genome Res. |volume=17 |issue=12 |pages=1919–31 |year=2007 |month=December |pmid=17989251 |pmc=2099599 |doi=10.1101/gr.7090407 |url=}}
 +
** Drosophila melanogaster ako referencny genom
 +
** pre kazdy vyskyt motivu hladaj v ostatnych genomoch v urcitom okne
 +
** spocitaj v akom percente stromu najdene vyskyty
 +
** spocitaj p-value pomocou motivov s nahodne poprehadzovanymi stlpcami
 +
 
 +
==Zhrnutie semestra==
 +
Tvorba bioinformatického nástroja:
 +
* Sformulujeme biologické ciele (aké máme dáta, aké typy otázok sa chceme pýtať)
 +
* Sformulujeme informaticky/matematicky, napr. ako pravdepodobnostný model, dostaneme informatické zadanie problému, v ktorom je presne daný vzťah medzi vstupom a želaným výstupom (napr. nájst zarovnanie s maximálnym skóre v určitej skórovacej schéme)
 +
* Hľadáme efektívne (rýchle) algoritmy na riešenie informatického problému
 +
* Ak sa nám nepodarí nájsť dosť rýchly algoritmus, použijeme heuristiky, ktoré dávaju približné riešenia
 +
* Testujeme na reálnych dátach, či sú výsledky biologicky správne (či bol model dobre zvolený, či heuristiky dobre fungujú)
 +
 
 +
Použitie bioinformatického nástroja:
 +
* Sformulujeme biologické ciele (aké máme dáta, aké typy otázok sa chceme pýtať)
 +
* Na základe nášho prehľadu v bioinformatike porozmýšľame, aký typ nástroja, resp. ich kombinácia by nám mohli pomôcť
 +
* Alebo hľadáme v literatúre nástroj na typ problému, s ktorým sme sa ešte nestretli
 +
* Konkrétne nástroje a webstránky sa rýchlo menia, celkové princípy sa menia pomalšie
 +
* Pre správne nastavenie parametrov a interpretovanie výsledkov je dôležité poznať model, predpoklady, ktoré autori nástroja použili, resp. zdroj dát v príslušnej databáze
 +
 
 +
Prehľad preberaných tém:
 +
* Zostavovanie genómov (najkratšie spoločné nadslovo, heuristiky, analýza pokrytia)
 +
* Zarovnania (skórovanie ako pravdepodobnostný model, dynamické programovanie, heuristické zarovnávanie, E-value, lokálne vs. globálne, párove vs. viacnásobné, celogenómové)
 +
* Evolúcia (pravdepodobnostné modely substitúcií, metóda maximálnej vierohodnosti, metóda maximalnej úspornosti, metóda spájania susedov)
 +
* Komparatívna genomika (hľadanie konzervovaných oblastí, komparatívne hľadanie génov, pozitívny výber, fylogenetické HMM, kodónové matice)
 +
* Populačná genetika (genetický drift, mapovanie asociácií, linkage disequilibrium, štruktúra populácie)
 +
* Hľadanie génov (skryté Markovove modely)
 +
* Proteíny (predikcia štruktúry, profily a profilové HMM rodín/domén, protein threading)
 +
* Expresia génov (zhlukovanie, klasifikácia, regulačné siete)
 +
* Transkripčné faktory (hľadanie výskytov známych motívov, hľadanie nových motívov, regulárne výrazy, profily)
 +
* RNA štruktúra (dynamické programovanie, stochastické bezkontextové gramatiky)
 +
 
 +
Dalšie predmety:
 +
* http://compbio.fmph.uniba.sk/vyuka/
 +
* [http://compbio.fmph.uniba.sk/vyuka/ppb/ Základy programovania pre biológov] 2-AIN-502, Brejová (LS, 2 hodiny, 2 kredity)
 +
* [http://www.biocenter.sk/jnteaching.html Genomika] N-mCBI-303, Nosek (LS, 2 hodiny, 3 kredity)
 +
* [http://compbio.fmph.uniba.sk/vyuka/seminar/ Seminár z bioinformatiky (1)-(4)] 2-AIN-503, 2-AIN-504, 2-AIN-251, 2-AIN-252, Vinař (ZS/LS, 2 hodiny, 2 kredity)
 +
 
 +
=Články na journal club=
 +
3. {{cite journal| author=Kent WJ, Baertsch R, Hinrichs A, Miller W, Haussler D| title=Evolution's cauldron: duplication, deletion, and rearrangement in the mouse and human genomes. | journal=Proc Natl Acad Sci U S A | year= 2003 | volume= 100 | issue= 20 | pages= 11484-9 | pmid=14500911 | doi=10.1073/pnas.1932072100 }} '''Čítajú Bobák, Hudec, Višňovec, Lorincz, Juríková, Šelc'''
 +
 
 +
5. {{cite journal| author=Wapinski I, Pfeffer A, Friedman N, Regev A| title=Natural history and evolutionary principles of gene duplication in fungi | journal=Nature | year= 2007 | volume= 449 | issue= 7158 | pages= 54-61 | pmid=17805289 | doi=10.1038/nature06107 | url=http://www.eecs.ucf.edu/~shzhang/CAP6938/p7_nature06107_aviv_duplication.pdf}} '''Čítajú Gašpierik, Kokoška, Zdechovan, Dlugoš, Zimmerman, Harmady, Mandli'''
 +
 
 +
6. {{cite journal| author=Clamp M, Fry B, Kamal M, Xie X, Cuff J, Lin MF et al.| title=Distinguishing protein-coding and noncoding genes in the human genome. | journal=Proc Natl Acad Sci U S A | year= 2007 | volume= 104 | issue= 49 | pages= 19428-33 | pmid=18040051 | doi=10.1073/pnas.0709013104}} '''Čítajú Ďuricová, Cebecauer, Sabo, Kubaščíková, Beke, Durkaj, Boža'''
 +
 
 +
8. {{cite journal| author=Harbison CT, Gordon DB, Lee TI, Rinaldi NJ, Macisaac KD, Danford TW et al.| title=Transcriptional regulatory code of a eukaryotic genome. | journal=Nature | year= 2004 | volume= 431 | issue= 7004 | pages= 99-104 | pmid=15343339  | doi=10.1038/nature02800 | url=http://www.psrg.csail.mit.edu/pubs/nature-2004.pdf }} '''Čítajú Magyar, Krásna, Brázdovič, Nosál, Maurer'''
 +
 
 +
10. {{cite journal| author=Sharan R, Suthram S, Kelley RM, Kuhn T, McCuine S, Uetz P et al.| title=Conserved patterns of protein interaction in multiple species. | journal=Proc Natl Acad Sci U S A | year= 2005 | volume= 102 | issue= 6 | pages= 1974-9 | pmid=15687504 | doi=10.1073/pnas.0409522102 }} '''Čítajú Slezáková, Kováč, Kéry, Duník, Kruľ'''
 +
 
 +
11. {{cite journal| author=Andronescu M, Fejes AP, Hutter F, Hoos HH, Condon A| title=A new algorithm for RNA secondary structure design. | journal=J Mol Biol | year= 2004 | volume= 336 | issue= 3 | pages= 607-24 | pmid=15095976 | doi=10.1016/j.jmb.2003.12.041 | url=http://people.cs.ubc.ca/~hutter/papers/jmb04-rna-ssd.pdf }} '''Čítajú Cillingová, Ridzik, Sarič, Kislan, Lang, Kaniansky'''
 +
 
 +
12. {{cite journal| author=Hernandez RD, Hubisz MJ, Wheeler DA, Smith DG, Ferguson B, Rogers J et al.| title=Demographic histories and patterns of linkage disequilibrium in Chinese and Indian rhesus macaques. | journal=Science | year= 2007 | volume= 316 | issue= 5822 | pages= 240-3 | pmid=17431170 | url=http://www.sciencemag.org/cgi/content/full/316/5822/240 |  doi=10.1126/science.1140462 }} '''Čítajú Horanský, Litvaj, Kostolányi, Jančigová, Šándorová'''
 +
 
 +
=Ukážkové príklady na skúšku=
 +
Aspoň polovicu bodov na skúške bude možné pre biológov aj informatikov možné získať z príkladov typu uvedeného nižšie. Samozrejme, na skúške nepoužijeme všetky tieto príklady a konkrétne reťazce, čísla, stromy a pod. budú iné. Na skúške máte dovolené používať kalkulačku s bežnými matematickými funkciami (nie však zložitejšie výpočtové zariadenia) a ťahák na dvoch listoch formátu A4, ktoré môžu byť z oboch strán popísané alebo potlačené ľubovoľným obsahom. Ostatné príklady na skúške budú prekvapením.
 +
 
 +
* Nájdite najkratšie spoločné nadslovo reťazcov GACAATAA, ATAACAC, GTATA, TAATTGTA.
 +
* Vyplňte maticu dynamického programovania pre lokálne (resp. globálne) zarovnanie reťazcov TACGT a CAGGATT, pričom zhodu skórujeme ako +3, nezhodu -1, medzeru -2. Napíšte aj optimálne zarovnanie, ktoré ste takto našli.
 +
* Spočítaje skóre nižšieuvedeného zarovnania, pričom použijete skórovaciu maticu uvedenú nižšie, začatie medzery -5, rozšírenie medzery o jednu ďalšiu bázu -2. Nájdite globálne zarovnanie s vyšším skóre pre tieto dve sekvencie (netreba nájsť optimálne zarovnanie; pri hľadaní môžete použiť ľubovoľný postup alebo úvahu) a spočítajte aj skóre vášho nového zarovnania.
 +
<pre>
 +
Zarovnanie:                            Matica:
 +
ATAGTTTAA                                A  C  G  T
 +
A-GGG--AA                            A  2  -2  -1  -2
 +
                                      C  -2  1  -2  -1   
 +
                                      G  -1  -2  1  -2
 +
                                      T  -2  -1  -2  2
 +
</pre>
 +
 
 +
* Uvažujme BLASTn, ktorý začína z jadier veľkosti w=3. Koľko jadier nájde pri porovnávaní sekvencií GATTACGGAT a CAGGATT? Ktoré to budú?
 +
* Pre model na strane 16 prednášky o hľadaní génov (bol by v zadaní) spočítajte pravdepodobnosť vygenerovania báz AGT a stavov modrý,červený,modrý.
 +
* Na strome na strane 6 v prednáške o evolúcii (bol by v zadaní) nájdite najúspornejšie ancestrálne znaky pre stĺpec zarovnania TTAAA (v poradí glum, hobit, človek, elf, ork). Nemusíte použiť algoritmy z prednášky resp. cvičení.
 +
* Nájdite najúspornejší strom pre zarovnanie uvedené nižšie. Aká je jeho cena (koľko mutácií je nutných na vysvetlenie týchto sekvencií)? Odpoveď môžete spočítať ľubovoľným spôsobom.
 +
<pre>
 +
vtáčik biely      ACAACGTCT
 +
vtáčik čierny      TCTGAATCA
 +
vtáčik sivý        TGTGAAAGA
 +
vtáčik modrý      ACTACGTCT
 +
vtáčik zelený      TGTGAAAGA
 +
</pre>
 +
* Uvažujme maticu vzdialeností uvedenú nižšie. Ktorú dvojicu vrcholov spojí metóda spájania susedov ako prvú a aká bude nová matica po spojení?
 +
<pre>
 +
                biely  čierny  sivý  modrý
 +
vtáčik biely      0      5      7      4
 +
vtáčik čierny    5      0      8      5
 +
vtáčik sivý      7      8      0      5
 +
vtáčik modrý      4      5      5      0
 +
</pre>
 +
* Uvažujme strom ako na strane 6 v prednáške o evolúcii (bol by v zadaní), pričom každá hrana má rovnakú dĺžku a pravdepodobnosť každej mutácie na jednej hrane je 0.1 (t.j. napr. Pr(C|A,t)=0.1) a teda pravdepodobnosť zachovania tej istej bázy je 0.7, pravdepodobnosť každej bázy v koreni je 0.25. Aká je pravdepodobnosť, že v listoch dostaneme TTAAA a vo vnútorných vrcholoch samé Áčka? Nájdite priradenie ancestrálnych báz vo vnútorných vrcholoch, ktoré má väčšiu pravdepodobnosť a spočítajte, aká tá pravdepodobnosť je (nemusíte nájsť najlepšie možné priradenie).
 +
* Zostavte profil (PSSM) pre zarovnanie sekvencií uvedené nižšie, pričom predpokladáme, že v celej databáze A tvorí 60% a T 40% všetkých sekvencií (iné bázy neuvažujeme). Použite prirodzený logaritmus (ln) a nepoužívajte pseudocounty.
 +
<pre>
 +
AATA
 +
TATA
 +
TAAA
 +
TTAT
 +
TTAA
 +
</pre>
 +
* Uvažujme microarray experimenty pre 5 génov. Medzi každými dvomi profilmi sme spočítali vzdialenosť (napr. pomocou Pearsonovho korelačného koeficientu) a dostali sme tabuľku vzdialeností uvedenú nižšie. Nájdite hierarchické zhlukovanie týchto génov, pričom vzdialenosť medzi dvoma zhlukmi (clustrami) bude vzdialenosť najbližších génov v nich.
 +
<pre>
 +
        A    B    C    D    E
 +
gén A    0  0.6  0.1  0.3  0.7   
 +
gén B  0.6  0  0.5  0.5  0.4
 +
gén C  0.1  0.5  0  0.6  0.6
 +
gén D  0.3  0.5  0.6  0  0.8
 +
gén E  0.7  0.4  0.6  0.8  0
 +
</pre>
 +
* Uvažujte motív reprezentovaný profilom (skórovaciou maticou, PSSM) uvedenou nižšie. Spočítajte skóre reťazca GGAG. Ktorá sekvencia dĺžky 4 bude mať najmenšie a ktorá najväčšie skóre?
 +
<pre>
 +
A  -3    3  -2  -2
 +
C  -2  -2    1  -2
 +
G    0  -2  -1    3
 +
T    1  -1    1  -2
 +
</pre>
 +
* Nájdite všetky výskyty regulárneho výrazu TA[CG][AT]AT v sekvencii GACGATATAGTATGTACAATATGC.
 +
* Doplňte chýbajúce hodnoty za otázniky v matici dynamického programovania (Nussinovov algoritmus) pre nájdenie najväčšieho počtu dobre uzátvorkovaných spárovaných báz v RNA sekvencii GAACUAUCUGA (dovoľujeme len komplementárne páry A-U, C-G) a nakreslite sekundárnu štruktúru, ktorú algoritmus našiel.
 +
<pre>
 +
0 0 0 1 1 2 2 3 3 ? ?
 +
  0 0 0 1 1 2 2 3 3 ?
 +
    0 0 1 1 2 2 2 3 3
 +
      0 0 1 1 1 1 2 3
 +
        0 1 1 ? 1 2 3
 +
          0 1 1 1 2 2
 +
            0 0 0 1 2
 +
              0 0 1 1
 +
                0 0 1
 +
                  0 0
 +
                    0
 +
</pre>
 +
* Pre dvojice SNPov, ktorých tabuľky sú uvedené nižšie, určite, či môžeme štatisticky vylúčiť hypotézu, že sú v stave LE (linkage equilibrium) pri hladine významnosti p=0.05, resp. <math>\chi^2>3.841</math>. Pre každú dvojicu spočítajte veličinu <math>\chi^2</math>.
 +
<pre>
 +
    Q  q              Q  q            Q  q
 +
P  100 200          P 10  20        P  1  2
 +
p  300 200          p 30  20        p  3  2
 +
</pre>

Verzia zo dňa a času 10:54, 4. október 2012

Obsah

UCSC genome browser, cvičenia pre biológov

Uvod do pravdepodobnosti

  • Myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealnou kockou/korunou
  • Vysledkom experimentu je nejaka hodnota (napr. cislo, alebo aj niekolko cisel, retazec)
  • Tuto neznamu hodnotu budeme volat nahodna premenna
  • Zaujima nas pravdepodobnost, s akou nahodna premenna nadobuda jednotlive mozne hodnoty
  • T.j. ak experiment opakujeme vela krat, ako casto uvidime nejaky vysledok
  • Priklad 1: hodime idealizovanou kockou, premenna X bude hodnota, ktoru dostaneme
  • Mozne hodnoty 1,2,..,6, kazda rovnako pravdepodobna
  • Piseme napr. Pr(X=2)=1/6
  • Priklad 2: hodime 2x kockou, nahodna premenna X bude sucet hodnot, ktore dostaneme
  • Mozne hodnoty: 2,3,...,12
  • Kazda dvojica hodnot na kocke rovnako pravdepodobna, t.j. pr. 1/36
  • Sucet 5 mozeme dostat 1+4,2+3,3+2,4+1 - t.j. P(X=5) = 4/36
  • Sucet 11 mozeme dostat 5+6 alebo 6+5, t.j. P(X=11) = 2/36
  • Rozdelenie pravdepodobnosti: 2: 1/36, 3:2/36, 4: 3/36, ... 7: 6/36, 8: 5/36 ... 12: 1/36
  • Overte, ze sucet je 1

Pouzitie pravdepodobnosti na analyzu potrebneho pokrytia pri sekvenovani

  • Nas problem: spocitanie pokrytia
    • G = dlzka genomu, napr. 1 000 000 (predpokladajme, že je cirkulárny)
    • N = pocet segmentov (readov), napr. 10 000
    • L = dlzka readu, napr. 1000
    • Celkova dlzka segmentov NL, pokrytie (coverage) NL/G, v nasom pripade 10x
    • V priemere kazda baza pokryta 10x
    • Niektore su ale pokryte viackrat, ine menej.
    • Zaujimaju nas otazky typu: kolko baz ocakavame, ze bude pokrytych menej ako 3x?
    • Dolezite pri planovani experimentov (aku velke pokrytie potrebujem na dosiahnutie urcitej kvality)


  • Pokrytie genomu: predpokladame, ze kazdy segment zacina na nahodnej pozicii zo vsetkych moznych G
  • Takze ak premenna Y_i bude zaciatok i-teho segmentu, jej rozdelenie bude rovnomerne
    • P(Y_i=1) = P(Y_i=2) = ... = P(Y_i=G-L+1) = 1/G
  • Aka je pravdepodobnost ze nejaky konkretny i-ty segment pokryva konkretnu poziciu j?
    • P(Y_i>=j-L+1 and Y_i<=j) = P(Y_i=j-L+1)+...+P(Y_i=j) = L/G, oznacme tuto hodnotu p, nasom priklade p=0.001
  • Uvazujme premennu X_j, ktora udava pocet segmentov pokryvajucich poziciu j
    • mozne hodnoty 0..N
    • i-ty segment pretina poziciu j s pravdepodobnostou p=L/G
    • to iste ako keby sme N krat hodili mincou, na ktorej spadne hlava s pravd. p a znak 1-p a oznacili ako X_j pocet hlav
    • Priklad: majme mincu, ktora ma hlavu s pr. 1/4 a hodime je 3x.
HHH 1/64
HHT 3/64
HTH 3/64
HTT 9/64
THH 3/64
THT 9/64
TTH 9/64
TTT 27/64
  • P(X_j=3) = 1/64, P(X_j=2)=9/64, P(X_j=1)=27/64, P(X_j=0)=27/64
    • taketo rozdelenie pravdepodobnosti sa vola binomicke
    • P(X_j = k) = (N choose k) p^k (1-p)^(N-k), kde {N \choose k}={\frac  {N!}{k!(N-k)!}} a n! = 1*2*...*n
    • napr pre priklad s troma hodmi kockou P(X_j=2) = 3!/(2!*1!) * (1/4)^2 * (3/4)^1 = 9/64
    • Zle sa pocita pre velke N, preto sa niekedy pouziva aproximacia Poissonovym rozdelenim s parametrom lambda = Np, ktore ma e^{{-\lambda }}\lambda ^{k}/k!
    • Spat k sekvenovaniu: vieme spocitat rozdelenie pravdepodobnosti a tiez napr. P(X_i<3) = P(X_i=0)+P(X_i=1)+P(X_i=2) = 0.000045+0.00045+0.0023=0.0028 (v priemere ocakavame 45 baz nepokrytych, 2800 pokrytých menej ako 3 krát)
    • Takyto graf, odhad, vieme lahko spravit pre rozne pocty segmentov a tak naplanovat, kolko segmentov potrebujeme
  • Chceme tiez odhadnut pocet kontigov (nebrali sme na cviceni, uvedene len pre zaujimavost)
    • Ak niekolko baz vobec nie je pokrytych segmentami, prerusi sa kontig
    • Vieme, kolko baz je v priemere nepokrytych, ale niektore mozu byt vedla seba
    • Novy kontig vznikne aj ak sa susedne segmenty malo prekryvaju
    • Predpokladajme, ze na spojenie dvoch segmentov potrebujeme prekryv aspon T
    • Lander a Waterman 1988 odhadli, ze dany segment ma pravdepodobnost zhruba exp(-N(L-T)/G), ze bude posledny v kontigu
    • Pre N segmentov dostaneme priemerny pocet kontigov N*exp(-N(L-T)/G)
    • Ako keby sme dlzku segmentu skratili o dlzku prekryvu
    • Pre T=50 dostaneme priemerny pocet kontigov 0.75 (v skutocnosti ide skor o pocet koncov kontigov - ak dostaneme cely kruh, tento pocet je 0, preto dostavame priemer nizsi ako 1)
    • ak znizime N na 5000 (5x pokrytie) dostaneme 44 kontigov
  • Tento jednoduchy model nepokryva vsetky faktory:
    • Segmenty nemaju rovnaku dlzku
    • Problemy v zostavovani kvoli chybam, opakovaniam a pod.
    • Segmenty nie su rozlozene rovnomerne (cloning bias a pod.)
    • Vplyv koncov chromozomov pri linearnych chromozomoch
    • Uzitocny ako hruby odhad
    • Na spresnenie mozeme skusat spravit zlozitejsie modely, alebo simulovat data
  • Poznamka: pravdepodobnosti z binomickeho rozdelenia mozeme lahko spocitat napr. statistickym softverom R. Tu su prikazy, ktore sa na to hodia, pre pripad, ze by vas to zaujimalo:
dbinom(10,1e4,0.001);  #(12.5% miest ma pokrytie presne 10)
pbinom(10,1e4,0.001,lower.tail=TRUE); #(58% miest ma pokrytie najviac 10)
dbinom(0:30,1e4,0.001); #tabulka pravdepodobnosti
 [1] 4.517335e-05 4.521856e-04 2.262965e-03 7.549258e-03 1.888637e-02
 [6] 3.779542e-02 6.302390e-02 9.007019e-02 1.126216e-01 1.251601e-01
[11] 1.251726e-01 1.137933e-01 9.481826e-02 7.292252e-02 5.207187e-02
[16] 3.470068e-02 2.167707e-02 1.274356e-02 7.074795e-03 3.720595e-03
[21] 1.858621e-03 8.841718e-04 4.014538e-04 1.743354e-04 7.254524e-05
[26] 2.897743e-05 1.112843e-05 4.115040e-06 1.467156e-06 5.050044e-07
[31] 1.680146e-07

Zhrnutie

  • Pravdedpobnostny model: myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealizovanou kockou
  • Vysledok je hodnota, ktoru budeme volat nahodna premenna
  • Tabulka, ktora pre kazdu moznu hodnotu nahodnej premennej urci je pravdepodobnost sa vola rozdelenie pravdepodobnosti, sucet hodnot v tabulke je 1
  • Znacenie typu P(X=7)=0.1
  • Priklad: mame genom dlzky G=1mil., nahodne umiestnime N=10000 segmentov dlzky L=1000
  • Nahodna premenna X_i je pocet segmentov pokryvajucich urcitu poziciu i
  • Podobne, ako keby sme N krat hodili kocku, ktora ma cca 1 promile sancu padnu ako hlava a 99.9% ako znak a pytame sa, kolko krat padne znak (1 promile sme dostali po zaukruhleni z L/(G-L+1))
  • Rozdelenie pravdepobnosti sa v tomto pripade vola binomicke a existuje vzorec, ako ho spocitat
  • Takyto model nam moze pomoct urcit, kolko segmentov potrebujeme osekvenovat, aby napr. aspon 95% pozicii bolo pokrytych aspon 4 segmentami

Dynamické programovanie

  • Tuto techniku uvidime na dalsej prednaske na hladanie zarovnani (alignmentov)
  • Uvazujme problem rozmienania minci
  • Napr mame mince hodnoty 1,2,5 centov, z kazdej dostatok kusov
  • Ako mozeme zaplatit urcitu sumu, napr. 13 centov, s co najmensim poctom minci?
  • Ake je riesenie? 5+5+2+1 (4 mince)
  • Vseobecna formulacia:
    • Vstup: hodnoty k minci m_1,m_2,...,m_k a cielova suma X (vsetko kladne cele cisla)
    • Vystup: najmensi pocet minci, ktore potrebujeme na zaplatenie X
  • V nasom priklade k=3, m_1 = 1, m_2 = 2, m_3 = 5, X=13
  • Jednoduchy sposob riesenia: pouzi najvacsiu mincu, ktora je najviac X, odcitaj od X, opakuj
  • Priklad: najpr pouzijeme mincu 5, zostane name X=8, pouzijeme opat mincu 5, zostane X=3, pouzijeme mincu 2, zostane X=1, pouzijeme mincu 1.
  • Nefunguje vzdy: zoberme mince hodnot 1,3,4. Pre X=6 najlepsie riesenie je 2 mince: 3+3, ale nas postup (algoritmus) najde 3 mince 4+1+1
  • Ukazeme si algoritmus na zaklade dyn. programovania, ktory pre kazdy vstup najde najlepsie riesenie
  • Zratame najlepsi pocet minci nielen pre X, ale pre vsetky mozne cielove sumy 1,2,3,...,X-1,X
  • To zda byt ako tazsia uloha, ale ukaze sa, ze z riesenia pre mensie sumy vieme zostavit riesenie pre vacsie sumy, takze nam to vlastne pomoze
  • Spravime si tabulku, kde si pre kazdu sumu i=0,1,2,...X pamatame A[i]=najmensi pocet minci, ktore treba na vyplatenie sumy i (ak je viac moznosti, zoberieme lubovolnu, napr. najvacsiu)
  • Ukazme si to na priklade s mincami 1,3,4
i      0    1    2    3    4    5    6    7    8    9  
A[i]   0    1    2    1    1    2    2    2    2    3
  • Nevyplnali sme ju ziadnym konkretnym postupom, nejde o algoritmus
  • Ale predstavme si, ze teraz chceme vyplnit A[10].
  • V najlepsom rieseni je prva minca, ktoru pouzijeme 1,3, alebo 4
  • ak je prva minca 1, zostane name zaplatit sumu 10-1=9, tu podla tabulky vieme najlepsie zaplatit na 3 mince, takze potrebujeme 4 mince na zaplatenie 10
  • ak je prva minca 3, zostane nam zaplatit 10-3 = 7, na co potrebujeme podla tabulky 2 mince, takze spolu 3 mince na zaplatenie 10
  • ak je prva minca 4, zostanem nam zaplatit 10-4 = 6, na co treba 2 mince, t.j. 3 mince na 10
  • Nevieme, ktora z tychto moznosti je naozaj v najlepsom rieseni, ale pre druhe dva pripady dostaveme menej minci, takze vysledok bude 3 mince (napr. 3+3+4)
  • Zovseobecnime: A[i] = 1+ min { A[i-1], A[i-3], A[i-4] }
  • A[11] = 1 + min { 3, 2, 2} = 1 + 2 = 3
  • Pre ine sustavy minci, napr. A[i] = 1+ min { A[i-1], A[i-2], A[i-5] }
  • Vo vseobecnosti A[i] = 1+ min { A[i-m_1], A[i-m_2], ..., A[i-m_k] }
  • Vzorec treba modifikovat pre male hodnoty i, ktore su mensie ako najvacsia minca, lebo A[-1] a pod. nie je definovane
  • Zapisme algoritmus pre vseobecne mince
A[0] = 0;
pre kazde i od 1 po X  
  min = nekonecno
  pre kazde j od 1 po k
     ak i >= m_j a A[i-m_j] < min
       min = A[i-m_j]
  A[i] = 1 + min
vypis A[X]
  • Ako najst, ktore mince pouzit?
  • Pridame druhu tabulku B, kde v B[i] si pamatame, ktora bola najlepsia prva minca, ked sme pocitali A[i]
i      0    1    2    3    4    5    6    7    8    9   10   
A[i]   0    1    2    1    1    2    2    2    2    3    3
B[i]   -    1    1    3    4    4    3    4    4    4    4
  • Potom ak chceme najst napr. mince pre 10, vidime, ze prva bola B[10]=4. Zvysok je 6 a prva minca na vyplatenie 6 je B[6]=3. Zostava nam 3 a B[3]=3. Potom nam uz zostava 0, takze sme hotovi. Takze najlepsie vyplatenie je 4+3+3
  • Algoritmus:
Kym X>0 
  vypis B[X];
  X = X-B[X];
  • Dynamicke programovanie vo vseobecnosti
    • Okrem riesenia celeho problemu, vyriesime aj spustu mensich podproblemov
    • Riesenia podproblemov ukladame do tabulky
    • Pri rieseni vacsieho podproblemu pouzivame uz vypocitane hodnoty pre mensie podproblemy
  • Aka je casova zlozitost?
    • Dva parametre: X a k.
    • Tabulka velkost O(X), kazde policko cas O(k). Celkovo O(Xk).

Sekvenovanie genómov, cvičenia pre biológov

Uvod do pravdepodobnosti

  • Myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealnou kockou/korunou
  • Vysledkom experimentu je nejaka hodnota (napr. cislo, alebo aj niekolko cisel, retazec)
  • Tuto neznamu hodnotu budeme volat nahodna premenna
  • Zaujima nas pravdepodobnost, s akou nahodna premenna nadobuda jednotlive mozne hodnoty
  • T.j. ak experiment opakujeme vela krat, ako casto uvidime nejaky vysledok
  • Priklad 1: hodime idealizovanou kockou, premenna X bude hodnota, ktoru dostaneme
  • Mozne hodnoty 1,2,..,6, kazda rovnako pravdepodobna
  • Piseme napr. Pr(X=2)=1/6
  • Priklad 2: hodime 2x kockou, nahodna premenna X bude sucet hodnot, ktore dostaneme
  • Mozne hodnoty: 2,3,...,12
  • Kazda dvojica hodnot na kocke rovnako pravdepodobna, t.j. pr. 1/36
  • Sucet 5 mozeme dostat 1+4,2+3,3+2,4+1 - t.j. P(X=5) = 4/36
  • Sucet 11 mozeme dostat 5+6 alebo 6+5, t.j. P(X=11) = 2/36
  • Rozdelenie pravdepodobnosti: 2: 1/36, 3:2/36, 4: 3/36, ... 7: 6/36, 8: 5/36 ... 12: 1/36
  • Overte, ze sucet je 1

Pouzitie pravdepodobnosti na analyzu potrebneho pokrytia pri sekvenovani

  • Nas problem: spocitanie pokrytia
    • G = dlzka genomu, napr. 1 000 000 (predpokladajme, že je cirkulárny)
    • N = pocet segmentov (readov), napr. 10 000
    • L = dlzka readu, napr. 1000
    • Celkova dlzka segmentov NL, pokrytie (coverage) NL/G, v nasom pripade 10x
    • V priemere kazda baza pokryta 10x
    • Niektore su ale pokryte viackrat, ine menej.
    • Zaujimaju nas otazky typu: kolko baz ocakavame, ze bude pokrytych menej ako 3x?
    • Dolezite pri planovani experimentov (aku velke pokrytie potrebujem na dosiahnutie urcitej kvality)


  • Pokrytie genomu: predpokladame, ze kazdy segment zacina na nahodnej pozicii zo vsetkych moznych G
  • Takze ak premenna Y_i bude zaciatok i-teho segmentu, jej rozdelenie bude rovnomerne
    • P(Y_i=1) = P(Y_i=2) = ... = P(Y_i=G-L+1) = 1/G
  • Aka je pravdepodobnost ze nejaky konkretny i-ty segment pokryva konkretnu poziciu j?
    • P(Y_i>=j-L+1 and Y_i<=j) = P(Y_i=j-L+1)+...+P(Y_i=j) = L/G, oznacme tuto hodnotu p, nasom priklade p=0.001
  • Uvazujme premennu X_j, ktora udava pocet segmentov pokryvajucich poziciu j
    • mozne hodnoty 0..N
    • i-ty segment pretina poziciu j s pravdepodobnostou p=L/G
    • to iste ako keby sme N krat hodili mincou, na ktorej spadne hlava s pravd. p a znak 1-p a oznacili ako X_j pocet hlav
    • Priklad: majme mincu, ktora ma hlavu s pr. 1/4 a hodime je 3x.
HHH 1/64
HHT 3/64
HTH 3/64
HTT 9/64
THH 3/64
THT 9/64
TTH 9/64
TTT 27/64
  • P(X_j=3) = 1/64, P(X_j=2)=9/64, P(X_j=1)=27/64, P(X_j=0)=27/64
    • taketo rozdelenie pravdepodobnosti sa vola binomicke
    • P(X_j = k) = (N choose k) p^k (1-p)^(N-k), kde {N \choose k}={\frac  {N!}{k!(N-k)!}} a n! = 1*2*...*n
    • napr pre priklad s troma hodmi kockou P(X_j=2) = 3!/(2!*1!) * (1/4)^2 * (3/4)^1 = 9/64
    • Zle sa pocita pre velke N, preto sa niekedy pouziva aproximacia Poissonovym rozdelenim s parametrom lambda = Np, ktore ma e^{{-\lambda }}\lambda ^{k}/k!
    • Spat k sekvenovaniu: vieme spocitat rozdelenie pravdepodobnosti a tiez napr. P(X_i<3) = P(X_i=0)+P(X_i=1)+P(X_i=2) = 0.000045+0.00045+0.0023=0.0028 (v priemere ocakavame 45 baz nepokrytych, 2800 pokrytých menej ako 3 krát)
    • Takyto graf, odhad, vieme lahko spravit pre rozne pocty segmentov a tak naplanovat, kolko segmentov potrebujeme
  • Chceme tiez odhadnut pocet kontigov (nebrali sme na cviceni, uvedene len pre zaujimavost)
    • Ak niekolko baz vobec nie je pokrytych segmentami, prerusi sa kontig
    • Vieme, kolko baz je v priemere nepokrytych, ale niektore mozu byt vedla seba
    • Novy kontig vznikne aj ak sa susedne segmenty malo prekryvaju
    • Predpokladajme, ze na spojenie dvoch segmentov potrebujeme prekryv aspon T
    • Lander a Waterman 1988 odhadli, ze dany segment ma pravdepodobnost zhruba exp(-N(L-T)/G), ze bude posledny v kontigu
    • Pre N segmentov dostaneme priemerny pocet kontigov N*exp(-N(L-T)/G)
    • Ako keby sme dlzku segmentu skratili o dlzku prekryvu
    • Pre T=50 dostaneme priemerny pocet kontigov 0.75 (v skutocnosti ide skor o pocet koncov kontigov - ak dostaneme cely kruh, tento pocet je 0, preto dostavame priemer nizsi ako 1)
    • ak znizime N na 5000 (5x pokrytie) dostaneme 44 kontigov
  • Tento jednoduchy model nepokryva vsetky faktory:
    • Segmenty nemaju rovnaku dlzku
    • Problemy v zostavovani kvoli chybam, opakovaniam a pod.
    • Segmenty nie su rozlozene rovnomerne (cloning bias a pod.)
    • Vplyv koncov chromozomov pri linearnych chromozomoch
    • Uzitocny ako hruby odhad
    • Na spresnenie mozeme skusat spravit zlozitejsie modely, alebo simulovat data
  • Poznamka: pravdepodobnosti z binomickeho rozdelenia mozeme lahko spocitat napr. statistickym softverom R. Tu su prikazy, ktore sa na to hodia, pre pripad, ze by vas to zaujimalo:
dbinom(10,1e4,0.001);  #(12.5% miest ma pokrytie presne 10)
pbinom(10,1e4,0.001,lower.tail=TRUE); #(58% miest ma pokrytie najviac 10)
dbinom(0:30,1e4,0.001); #tabulka pravdepodobnosti
 [1] 4.517335e-05 4.521856e-04 2.262965e-03 7.549258e-03 1.888637e-02
 [6] 3.779542e-02 6.302390e-02 9.007019e-02 1.126216e-01 1.251601e-01
[11] 1.251726e-01 1.137933e-01 9.481826e-02 7.292252e-02 5.207187e-02
[16] 3.470068e-02 2.167707e-02 1.274356e-02 7.074795e-03 3.720595e-03
[21] 1.858621e-03 8.841718e-04 4.014538e-04 1.743354e-04 7.254524e-05
[26] 2.897743e-05 1.112843e-05 4.115040e-06 1.467156e-06 5.050044e-07
[31] 1.680146e-07

Zhrnutie

  • Pravdedpobnostny model: myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealizovanou kockou
  • Vysledok je hodnota, ktoru budeme volat nahodna premenna
  • Tabulka, ktora pre kazdu moznu hodnotu nahodnej premennej urci je pravdepodobnost sa vola rozdelenie pravdepodobnosti, sucet hodnot v tabulke je 1
  • Znacenie typu P(X=7)=0.1
  • Priklad: mame genom dlzky G=1mil., nahodne umiestnime N=10000 segmentov dlzky L=1000
  • Nahodna premenna X_i je pocet segmentov pokryvajucich urcitu poziciu i
  • Podobne, ako keby sme N krat hodili kocku, ktora ma cca 1 promile sancu padnu ako hlava a 99.9% ako znak a pytame sa, kolko krat padne znak (1 promile sme dostali po zaukruhleni z L/(G-L+1))
  • Rozdelenie pravdepobnosti sa v tomto pripade vola binomicke a existuje vzorec, ako ho spocitat
  • Takyto model nam moze pomoct urcit, kolko segmentov potrebujeme osekvenovat, aby napr. aspon 95% pozicii bolo pokrytych aspon 4 segmentami

Dynamické programovanie

  • Tuto techniku uvidime na dalsej prednaske na hladanie zarovnani (alignmentov)
  • Uvazujme problem rozmienania minci
  • Napr mame mince hodnoty 1,2,5 centov, z kazdej dostatok kusov
  • Ako mozeme zaplatit urcitu sumu, napr. 13 centov, s co najmensim poctom minci?
  • Ake je riesenie? 5+5+2+1 (4 mince)
  • Vseobecna formulacia:
    • Vstup: hodnoty k minci m_1,m_2,...,m_k a cielova suma X (vsetko kladne cele cisla)
    • Vystup: najmensi pocet minci, ktore potrebujeme na zaplatenie X
  • V nasom priklade k=3, m_1 = 1, m_2 = 2, m_3 = 5, X=13
  • Jednoduchy sposob riesenia: pouzi najvacsiu mincu, ktora je najviac X, odcitaj od X, opakuj
  • Priklad: najpr pouzijeme mincu 5, zostane name X=8, pouzijeme opat mincu 5, zostane X=3, pouzijeme mincu 2, zostane X=1, pouzijeme mincu 1.
  • Nefunguje vzdy: zoberme mince hodnot 1,3,4. Pre X=6 najlepsie riesenie je 2 mince: 3+3, ale nas postup (algoritmus) najde 3 mince 4+1+1
  • Ukazeme si algoritmus na zaklade dyn. programovania, ktory pre kazdy vstup najde najlepsie riesenie
  • Zratame najlepsi pocet minci nielen pre X, ale pre vsetky mozne cielove sumy 1,2,3,...,X-1,X
  • To zda byt ako tazsia uloha, ale ukaze sa, ze z riesenia pre mensie sumy vieme zostavit riesenie pre vacsie sumy, takze nam to vlastne pomoze
  • Spravime si tabulku, kde si pre kazdu sumu i=0,1,2,...X pamatame A[i]=najmensi pocet minci, ktore treba na vyplatenie sumy i
  • Ukazme si to na priklade s mincami 1,3,4
i      0    1    2    3    4    5    6    7    8    9  
A[i]   0    1    2    1    1    2    2    2    2    3
  • Nevyplnali sme ju ziadnym konkretnym postupom, nejde o algoritmus
  • Ale predstavme si, ze teraz chceme vyplnit A[10].
  • V najlepsom rieseni je prva minca, ktoru pouzijeme 1,3, alebo 4
  • ak je prva minca 1, zostane name zaplatit sumu 10-1=9, tu podla tabulky vieme najlepsie zaplatit na 3 mince, takze potrebujeme 4 mince na zaplatenie 10
  • ak je prva minca 3, zostane nam zaplatit 10-3 = 7, na co potrebujeme podla tabulky 2 mince, takze spolu 3 mince na zaplatenie 10
  • ak je prva minca 4, zostanem nam zaplatit 10-4 = 6, na co treba 2 mince, t.j. 3 mince na 10
  • Nevieme, ktora z tychto moznosti je naozaj v najlepsom rieseni, ale pre druhe dva pripady dostaveme menej minci, takze vysledok bude 3 mince (napr. 3+3+4)
  • Zovseobecnime: A[i] = 1+ min { A[i-1], A[i-3], A[i-4] }
  • A[11] = 1 + min { 3, 2, 2} = 1 + 2 = 3
  • Pre ine sustavy minci, napr. A[i] = 1+ min { A[i-1], A[i-2], A[i-5] }
  • Vo vseobecnosti A[i] = 1+ min { A[i-m_1], A[i-m_2], ..., A[i-m_k] }
  • Vzorec treba modifikovat pre male hodnoty i, ktore su mensie ako najvacsia minca, lebo A[-1] a pod. nie je definovane
  • Zapisme algoritmus pre vseobecne mince
A[0] = 0;
pre kazde i od 1 po X  
  min = nekonecno
  pre kazde j od 1 po k
     ak i >= m_j a A[i-m_j] < min
       min = A[i-m_j]
  A[i] = 1 + min
vypis A[X]
  • Ako najst, ktore mince pouzit?
  • Pridame druhu tabulku B, kde v B[i] si pamatame, ktora bola najlepsia prva minca, ked sme pocitali A[i] (ak je viac moznosti, zoberieme lubovolnu, napr. najvacsiu)
i      0    1    2    3    4    5    6    7    8    9   10   
A[i]   0    1    2    1    1    2    2    2    2    3    3
B[i]   -    1    1    3    4    4    3    4    4    4    4
  • Potom ak chceme najst napr. mince pre 10, vidime, ze prva bola B[10]=4. Zvysok je 6 a prva minca na vyplatenie 6 je B[6]=3. Zostava nam 3 a B[3]=3. Potom nam uz zostava 0, takze sme hotovi. Takze najlepsie vyplatenie je 4+3+3
  • Algoritmus:
Kym X>0 
  vypis B[X];
  X = X-B[X];
  • Dynamicke programovanie vo vseobecnosti
    • Okrem riesenia celeho problemu, vyriesime aj spustu mensich podproblemov
    • Riesenia podproblemov ukladame do tabulky
    • Pri rieseni vacsieho podproblemu pouzivame uz vypocitane hodnoty pre mensie podproblemy
  • Aka je casova zlozitost?
    • Dva parametre: X a k.
    • Tabulka velkost O(X), kazde policko cas O(k). Celkovo O(Xk).

Sekvenovanie genómov, cvičenia pre informatikov

Uvod do pravdepodobnosti, pocitanie pokrytia genomov

  • Nas problem: spocitanie pokrytia
    • G = dlzka genomu, napr. 1 000 000 (predpokladajme, že je cirkulárny)
    • N = pocet segmentov (readov), napr. 10 000
    • L = dlzka readu, napr. 1000
    • Celkova dlzka segmentov NL, pokrytie (coverage) NL/G, v nasom pripade 10x
    • V priemere kazda baza pokryta 10x
    • Niektore su ale pokryte viackrat, ine menej.
    • Zaujimaju nas otazky typu: kolko baz ocakavame, ze bude pokrytych menej ako 3x?
    • Dolezite pri planovani experimentov (aku velke pokrytie potrebujem na dosiahnutie urcitej kvality)
  • Uvod do pravdepodobnosti
    • Myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealnou kockou/korunou
    • Vysledkom experimentu je nejaka hodnota (napr. cislo, alebo aj niekolko cisel, retazec)
    • Tuto neznamu hodnotu budeme volat nahodna premenna
    • Zaujima nas pravdepodobnost, s akou nahodna premenna nadobuda jednotlive mozne hodnoty
    • T.j. ak experiment opakujeme vela krat, ako casto uvidime nejaky vysledok
    • Priklad 1: hodime idealizovanou kockou, premenna X bude hodnota, ktoru dostaneme
    • Mozne hodnoty 1,2,..,6, kazda rovnako pravdepodobna
    • Piseme napr. Pr(X=2)=1/6
    • Priklad 2: hodime 2x kockou, nahodna premenna X bude sucet hodnot, ktore dostaneme
    • Mozne hodnoty: 2,3,...,12
    • Kazda dvojica hodnot na kocke rovnako pravdepodobna, t.j. pr. 1/36
    • Sucet 5 mozeme dostat 1+4,2+3,3+2,4+1 - t.j. P(X=5) = 4/36
    • Sucet 11 mozeme dostat 5+6 alebo 6+5, t.j. P(X=11) = 2/36
    • Rozdelenie pravdepodobnosti: 2: 1/36, 3:2/36, 4: 3/36, ... 7: 6/36, 8: 5/36 ... 12: 1/36
    • Sucet tychot hodnot je 1
  • Pokrytie genomu: predpokladame, ze kazdy segment zacina na nahodnej pozicii zo vsetkych moznych G
  • Takze ak premenna Y_i bude zaciatok i-teho segmentu, jej rozdelenie bude rovnomerne
    • P(Y_i=1) = P(Y_i=2) = ... = P(Y_i=G-L+1) = 1/G
  • Aka je pravdepodobnost ze nejaky konkretny i-ty segment pokryva konkretnu poziciu j?
    • P(Y_i>=j-L+1 and Y_i<=j) = P(Y_i=j-L+1)+...+P(Y_i=j) = L/G, oznacme tuto hodnotu p, nasom priklade p=0.001
  • Uvazujme premennu X_j, ktora udava pocet segmentov pokryvajucich poziciu j
    • mozne hodnoty 0..N
    • i-ty segment pretina poziciu j s pravdepodobnostou p=L/G
    • to iste ako keby sme N krat hodili mincou, na ktorej spadne hlava s pravd. p a znak 1-p a oznacili ako X_j pocet hlav
    • taketo rozdelenie pravdepodobnosti sa vola binomicke
    • P(X_j = k) = (N choose k) p^k (1-p)^(N-k)
    • Zle sa pocita pre velke N, preto sa niekedy pouziva aproximacia Poissonovym rozdelenim s parametrom lambda = Np, ktore ma e^{{-\lambda }}\lambda ^{k}/k!
    • Spat k sekvenovaniu: vieme spocitat rozdelenie pravdepodobnosti a tiez napr. P(X_i<3) = P(X_i=0)+P(X_i=1)+P(X_i=2) = 0.000045+0.00045+0.0023=0.0028 (v priemere ocakavame 45 baz nepokrytych, 2800 s menej ako 3 segmentami)
    • Takyto graf, odhad, vieme lahko spravit pre rozne pocty segmentov a tak naplanovat, kolko segmentov potrebujeme
  • Chceme tiez odhadnut pocet kontigov (podla clanku Lander a Waterman 1988)
    • Ak niekolko baz vobec nie je pokrytych segmentami, prerusi sa kontig
    • Vieme, kolko baz je v priemere nepokrytych, ale niektore mozu byt vedla seba
    • Novy kontig vznikne aj ak sa susedne segmenty malo prekryvaju
    • Predpokladajme, ze na spojenie dvoch segmentov potrebujeme prekryv aspon T=50
    • Aka je pravdepodobnost, ze dany segment i bude posledny v kontigu?
    • Ziaden segment j!=i nesmie zacinat v prvych L-T bazach kontigu i
    • Kazdy segment tam zacina s pravdepodobnostou (L-T)/G, v priemere ich tam zacne N(L-T)/G
    • Pouzijeme Poissonovo rozdelenie pre \lambda =N(L-T)/G a k=0, t.j. pravdepodobnost, ze tam nezacne ziaden je zhruba exp(-N(L-T)/G)
    • Pre N segmentov dostaneme priemerny pocet kontigov N*exp(-N(L-T)/G)
    • Ako keby sme dlzku segmentu skratili o dlzku prekryvu
    • Pre T=50 dostaneme priemerny pocet koncov kontigov 0.75 (ak pokryjeme cely kruh, mame nula koncov, preto je hodnota mensia ako 1). Ak znizime N na 5000 (5x pokrytie) dostaneme 43 kontigov
  • Moze sa zdat zvlastne, ze pri priemernom pocte nepokrytych baz 45 mame pocet koncov v priemere menej ako jedna. Situacia je vsak taka, ze pri opakovaniach tohto experimentu casto dostavame jeden suvisly kontig, ale ak je uz aspon jeden koniec kontigu, byva tam pomerne velka medzera. Tu je napriklad 50 opakovani expertimentu s T=0, priemerny pocet koncov je 0.55, priemerny pocet nepokrytych baz je 49.
empty: 0 last: 0            empty: 0 last: 0	   empty: 0 last: 0      
empty: 274 last: 2	    empty: 282 last: 1	   empty: 0 last: 0      
empty: 0 last: 0	    empty: 0 last: 0	   empty: 8 last: 1      
empty: 0 last: 0	    empty: 12 last: 1	   empty: 0 last: 0      
empty: 122 last: 1	    empty: 135 last: 1	   empty: 111 last: 1    
empty: 13 last: 1	    empty: 1 last: 1	   empty: 56 last: 1     
empty: 265 last: 1	    empty: 0 last: 0	   empty: 10 last: 1     
empty: 0 last: 0	    empty: 0 last: 0	   empty: 130 last: 1    
empty: 217 last: 1	    empty: 3 last: 1	   empty: 0 last: 0      
empty: 0 last: 0	    empty: 0 last: 0	   empty: 86 last: 1     
empty: 139 last: 2	    empty: 0 last: 0	   empty: 0 last: 0      
empty: 76 last: 1	    empty: 221 last: 1	   empty: 26 last: 1     
empty: 0 last: 0	    empty: 1 last: 1	   empty: 0 last: 0      
empty: 0 last: 0	    empty: 0 last: 0	   empty: 0 last: 0      
empty: 0 last: 0	    empty: 0 last: 0	   empty: 12 last: 1     
empty: 103 last: 2	    empty: 0 last: 0	   empty: 71 last: 1     
empty: 69 last: 1	    empty: 0 last: 0	   
  • Tento jednoduchy model nepokryva vsetky faktory:
    • Segmenty nemaju rovnaku dlzku
    • Problemy v zostavovani kvoli chybam, opkaovaniam a pod.
    • Segmenty nie su rozlozene rovnomerne (cloning bias a pod.)
    • Vplyv koncov chromozomov
    • Uzitocny ako hruby odhad
    • Na spresnenie mozeme skusat spravit zlozitejsie modely, alebo simulovat data
  • Poznamka: pravdepodobnosti z binomickeho rozdelenia mozeme lahko spocitat napr. statistickym softverom R. Tu su prikazy, ktore sa na to hodia, pre pripad, ze by vas to zaujimalo:
dbinom(10,1e4,0.001);  #(12.5% miest ma pokrytie presne 10)
pbinom(10,1e4,0.001,lower.tail=TRUE); #(58% miest ma pokrytie najviac 10)
dbinom(0:30,1e4,0.001); #tabulka pravdepodobnosti
 [1] 4.517335e-05 4.521856e-04 2.262965e-03 7.549258e-03 1.888637e-02
 [6] 3.779542e-02 6.302390e-02 9.007019e-02 1.126216e-01 1.251601e-01
[11] 1.251726e-01 1.137933e-01 9.481826e-02 7.292252e-02 5.207187e-02
[16] 3.470068e-02 2.167707e-02 1.274356e-02 7.074795e-03 3.720595e-03
[21] 1.858621e-03 8.841718e-04 4.014538e-04 1.743354e-04 7.254524e-05
[26] 2.897743e-05 1.112843e-05 4.115040e-06 1.467156e-06 5.050044e-07
[31] 1.680146e-07

Zhrnutie

  • Pravdedpobnostny model: myslienkovy experiment, v ktorom vystupuje nahoda, napr. hod idealizovanou kockou
  • Vysledok je hodnota, ktoru budeme volat nahodna premenna
  • Tabulka, ktora pre kazdu moznu hodnotu nahodnej premennej urci je pravdepodobnost sa vola rozdelenie pravdepodobnosti, sucet hodnot v tabulke je 1
  • Znacenie typu P(X=7)=0.1
  • Priklad: mame genom dlzky G=1mil., nahodne umiestnime N=10000 segmentov dlzky L=1000
  • Nahodna premenna X_i je pocet segmentov pokryvajucich urcitu poziciu i
  • Podobne, ako keby sme N krat hodili kocku, ktora ma cca 1 promile sancu padnu ako hlava a 99.9% ako znak a pytame sa, kolko krat padne znak (1 promile sme dostali po zaukruhleni z L/(G-L+1))
  • Rozdelenie pravdepobnosti sa v tomto pripade vola binomicke a existuje vzorec, ako ho spocitat
  • Takyto model nam moze pomoct urcit, kolko segmentov potrebujeme osekvenovat, aby napr. aspon 95% pozicii bolo pokrytych aspon 4 segmentami

Sekvenovanie genómov 2, cvičenia pre informatikov

Zostavovanie genomu pomocou eulerovskych tahov

  • Opakovanie z teorie grafov:
    • Hamiltonovska kruznica: cyklus, ktory prechadza kazdym vrcholom prave raz
    • Eulerov tah: tah, ktory prechadza po kazdej hrane prave raz
    • Zistit, ci ma graf H.c. je NP-tazke
    • Problem obchodneho cestujuceho: najst najlacnejsiu H.c. je tiez NP-tazky
    • Zistit ci ma graf E.t. a najst ho je lahke
      • neorientovany graf na E.t. <=> je suvisly a vsetky vrcholy okrem najviac dvoch maju parny stupen
      • orientovany graf ma E.t. z u do v <=> po pridani hrany z v do u je silne suvisly a vsetky vrcholy maju rovnako vchadzajucich ako vychadzajucich hran
  • Najkratsie spolocne nadslovo: zjednodusena verzia problemu zostavovania genomov zo segmentov
  • Mame danu mnozinu retazcov, chceme zostavit najkratsi retazec, ktoremu su vsetky podslova
  • Priklad: GCCAAC,CCTGCC,ACCTTC zlozime v poradi 2,1,3: CCTGCCAACCTTC
  • Mozeme si predstavit problem ako obmenu problemu obchodneho cestujuceho:
    • retazcom priradim vrcholy
    • dlzka hrany z a do b je |b|- prekryv medzi a a b
    • specialny zaciatocny vrchol, z ktoreho hrany do kazdeho a s cenou |a|
    • specialny koncovy vrchol, do ktoreho hrana z kazdeho a s cenou 0
    • hrana z koncoveho do zaciatocneho vrcholu na uzavretie cyklu
    • Hamiltonovske kruznice zodpovedaju nadslovam
    • Ak najdeme najlacnejsiu Hamiltonovsku kruznicu, mame najkratsie nadslovo
  • Ale vieme, ze problem obchodneho cestujuceho je NP-tazky
  • Je toto dokaz, ze aj najkratsie spolocne nadslovo je NP-tazke?
  • Pevzner, Tang and Waterman 2001 navrhuju namiesto Hamiltonovskej kruznice pouzit Eulerov tah (na inom grafe)
  • deBruijnov graf stupna k:
    • vrcholy: podretazce dlzky k vsetkych vstupnych retazcov
    • hrany: nadvazujuce k-tice v ramci kazdeho segmentu (s prekryvom k-1)
  • Priklad, k=2
  • Chceme prejst po vsetkych hranach, chceme chodit co najmenej, takze po kazdej len raz - Eulerov tah
  • V com je finta? Ako sme sa dostali od NP-tazkeho problemu k lahkemu?
  • Co ak deBruijnov graf nema Eulerovsky tah? Znasobime niektore hrany, tieto budu zodpovedat opakovaniam
  • Čo ak de Bruijnov graf má viacero Eulerovských ťahov?
    • Zoberieme taký ťah, ktorý obsahuje pôvodné segmenty ako podcesty
    • Zase ťažký problém, ale v praxi pomáhajú jednoduché pravidlá
  • Opatrné riešenie: Ak z vrcholu 2 cesty, rozdeľ na kontigy
  • Pouzitie sparovanych segmentov:
    • Nájdi vrcholy v grafe, ktoré im zodpovedajú
    • Ak je v grafe jediná cesta medzi týmito vrcholmi vhodnej dĺžky, premeň spárované segmenty na jeden veľký segment
  • Dalsie problemy, ktore treba riesit
    • sekvenovacie chyby: vytvaraju "bubliny" alebo slepe cesty
    • dve vlakna
  • Realne pouzivana technologia, aj pre sekvenovanie novej generacie, napr. Zerbino and Birney 2008 program Velvet

Opakovanie dynamického programovania

  • Tuto techniku uvidime dnes na prednaske na hladanie zarovnani (alignmentov)
  • Uvazujme problem rozmienania minci
  • Napr mame mince hodnoty 1,2,5 centov, z kazdej dostatok kusov
  • Ako mozeme zaplatit urcitu sumu, napr. 13 centov, s co najmensim poctom minci?
  • Ake je riesenie? 5+5+2+1 (4 mince)
  • Vseobecna formulacia:
    • Vstup: hodnoty k minci m_1,m_2,...,m_k a cielova suma X (vsetko kladne cele cisla)
    • Vystup: najmensi pocet minci, ktore potrebujeme na zaplatenie X
  • V nasom priklade k=3, m_1 = 1, m_2 = 2, m_3 = 5, X=13
  • Jednoduchy sposob riesenia: pouzi najvacsiu mincu, ktora je najviac X, odcitaj od X, opakuj
  • Priklad: najpr pouzijeme mincu 5, zostane name X=8, pouzijeme opat mincu 5, zostane X=3, pouzijeme mincu 2, zostane X=1, pouzijeme mincu 1.
  • Nefunguje vzdy: zoberme mince hodnot 1,3,4. Pre X=6 najlepsie riesenie je 2 mince: 3+3, ale nas postup (algoritmus) najde 3 mince 4+1+1
  • Ukazeme si algoritmus na zaklade dyn. programovania, ktory pre kazdy vstup najde najlepsie riesenie
  • Zratame najlepsi pocet minci nielen pre X, ale pre vsetky mozne cielove sumy 1,2,3,...,X-1,X
  • To zda byt ako tazsia uloha, ale ukaze sa, ze z riesenia pre mensie sumy vieme zostavit riesenie pre vacsie sumy, takze nam to vlastne pomoze
  • Spravime si tabulku, kde si pre kazdu sumu i=0,1,2,...X pamatame A[i]=najmensi pocet minci, ktore treba na vyplatenie sumy i (ak je viac moznosti, zoberieme lubovolnu, napr. najvacsiu)
  • Ukazme si to na priklade s mincami 1,3,4
i      0    1    2    3    4    5    6    7    8    9  
A[i]   0    1    2    1    1    2    2    2    2    3
  • Nevyplnali sme ju ziadnym konkretnym postupom, nejde o algoritmus
  • Ale predstavme si, ze teraz chceme vyplnit A[10].
  • V najlepsom rieseni je prva minca, ktoru pouzijeme 1,3, alebo 4
  • ak je prva minca 1, zostane name zaplatit sumu 10-1=9, tu podla tabulky vieme najlepsie zaplatit na 3 mince, takze potrebujeme 4 mince na zaplatenie 10
  • ak je prva minca 3, zostane nam zaplatit 10-3 = 7, na co potrebujeme podla tabulky 2 mince, takze spolu 3 mince na zaplatenie 10
  • ak je prva minca 4, zostanem nam zaplatit 10-4 = 6, na co treba 2 mince, t.j. 3 mince na 10
  • Nevieme, ktora z tychto moznosti je naozaj v najlepsom rieseni, ale pre druhe dva pripady dostaveme menej minci, takze vysledok bude 3 mince (napr. 3+3+4)
  • Zovseobecnime: A[i] = 1+ min { A[i-1], A[i-3], A[i-4] }
  • A[11] = 1 + min { 3, 2, 2} = 1 + 2 = 3
  • Pre ine sustavy minci, napr. A[i] = 1+ min { A[i-1], A[i-2], A[i-5] }
  • Vo vseobecnosti A[i] = 1+ min { A[i-m_1], A[i-m_2], ..., A[i-m_k] }
  • Vzorec treba modifikovat pre male hodnoty i, ktore su mensie ako najvacsia minca, lebo A[-1] a pod. nie je definovane
  • Zapisme algoritmus pre vseobecne mince
A[0] = 0;
pre kazde i od 1 po X  
  min = nekonecno
  pre kazde j od 1 po k
     ak i >= m_j a A[i-m_j] < min
       min = A[i-m_j]
  A[i] = 1 + min
vypis A[X]
  • Ako najst, ktore mince pouzit?
  • Pridame druhu tabulku B, kde v B[i] si pamatame, ktora bola najlepsia prva minca, ked sme pocitali A[i]
i      0    1    2    3    4    5    6    7    8    9   10   
A[i]   0    1    2    1    1    2    2    2    2    3    3
B[i]   -    1    1    3    4    4    3    4    4    4    4
  • Potom ak chceme najst napr. mince pre 10, vidime, ze prva bola B[10]=4. Zvysok je 6 a prva minca na vyplatenie 6 je B[6]=3. Zostava nam 3 a B[3]=3. Potom nam uz zostava 0, takze sme hotovi. Takze najlepsie vyplatenie je 4+3+3
  • Algoritmus:
Kym X>0 
  vypis B[X];
  X = X-B[X];
  • Dynamicke programovanie vo vseobecnosti
    • Okrem riesenia celeho problemu, vyriesime aj spustu mensich podproblemov
    • Riesenia podproblemov ukladame do tabulky
    • Pri rieseni vacsieho podproblemu pouzivame uz vypocitane hodnoty pre mensie podproblemy
  • Aka je casova zlozitost?
    • Dva parametre: X a k.
    • Tabulka velkost O(X), kazde policko cas O(k). Celkovo O(Xk).

Uvod do proteomiky

Gélová elektroforéza (gel electrophoresis)

  • Izolovanie jednotlivých proteínov, porovnávanie ich množstva.
  • Negatívne nabité proteíny migrujú v géli v elektrickom poli. Väčšie proteíny migrujú pomalšie, dochádza v oddeleniu do pruhov. Táto metóda sa používa aj na DNA a RNA. Pre proteíny možno tiež robiť 2D gél (podľa hmotnosti a náboja).
  • Bioinformatický problém: zisti, ktoré fliačiky na dvoch 2D géloch zodpovedajú tým istým proteínom.
  • Automatizovanejšia technológia: kvapalinová chromatografia (liquid chromatography) - separácia proteínov v tenkom stĺpci

Hmotnostná spektrometria (mass spectrometry)

  • Hmotnostná spektrometria meria pomer hmostnosť/náboj molekúl vo vzorke.
  • Používa sa na identifikáciu proteínov, napr. z 2D gélu.
  • Proteín nasekáme enzýmom trypsín (seká na [KR]{P}) na peptidy
  • Meriame hmostnosť kúskov, porovnáme s databázou proteínov.
  • Tandemová hmotnostná spektrometria (MS/MS) ďalej fragmentuje každý kúsok a dosiahne podrobnejšie spektrum, ktoré obsahuje viac informácie

Sekvenovanie proteinov pomocou MS/MS

Berme do uvahy len y-iony, ktore zodpovedaju hmotnosti prefixu

  • Vsetky hmotnosti budu cele cisla, pozname celkovu hmotnost peptidu M a hmotnosti aminokyselin
  • Mame skorovaciu funkciu f(m), ktora pre prefix peptidu s hmotnostou m urci skore, ako dobre sedi so spektrom
  • Chceme najst peptid, ktory maximalizuje sucet skore svojich prefixov
  • Dynamicke programovanie s podproblemom A[m] je skore najlepsieho prefixu s hmotnostou m
    • Rekurencia? Zlozitost? Je to polynomialny algoritmus? (Co je vlastne vstup?)

Co ak berieme do uvahy aj b-iony, ktore meraju hmotnost sufixu?

  • Idea 1: upravme skorovaciu funkciou f(m): skontroluje signal na pozicii m aj M-m
  • Problem: jeden signal sa moze ratat dvakrat, raz ako b-ion, raz ako y-ion, algoritmus ma tendenciu pridavat taketo artefakty
  • Nove skorovanie: ak hmotnost nejakeho prefixu a nejakeho sufixu su rovnake, zarataj ich skore iba raz (skore peptidu je skore mnoziny hmotnosti jeho prefixov a sufixov)
  • Definuj novy podproblem: A[p,s] je najlepsie skore, ktore moze dosiahnut prefix s hmotnostou p a sufix s hmotnostou s
  • Pre p+s<=M a p<=s mame A[p,s] = max_a A[p, s-a] + f(s) * (1-delta(p,s)) a naopak pre p>s mame A[p,s] = max_a A[p-a, s] + f(p)
  • Ako ukoncime dynamicke programovanie? Zlozitost?
  • Zrychlenie: staci uvazovat s od p-w po p+w kde w je maximalna hmotnost aminokyseliny

Detekcia znamych proteinov pomocou MS

  • Predikcia spektra pre dany peptid, porovnanie s realnym spektrom, zlozite skorovacie schemy
  • Filtrovanie kandidatov na proteiny, ktore obsahuju peptidy s pozorovanou hmotnostou
  • Problem: mame danu databazu proteinov a cielovu hmotnost peptidu M, pozname hmotnost kazdej aminokyseliny. Najdite vsetky podretazce s hmotnostou M.
  • Databazu proteinov si vieme predstavit aj ako postupnost cisel - hmotnosti aminokyselin, hladame intervaly su suctom M.
  • Trivialny algoritmus: zacni na kazdej pozicii, pricitavaj kym nedosiahnes hmotnost>=M. Zlozitost? Vieme zlepsit?
  • Predspracovanie: pocitajme hmotnosti vsetkych podretazcov, potom vyhladajme binarne. Zlozitost?

Zarovnávanie sekvencií, cvičenia pre biológov

Opakovanie dynamickeho programovania

  • Uvazujme skorovanie zhoda +2, nezhoda -1, medzera -1
  • Retazce TAACGG a CACACT

Globalne zarovnanie

  • Rekurencia: A[i,j] = max {A[i-1,j]-1, A[i,j-1]-1, A[i-1,j-1]+c(p_i, q_j) }, pricom A[0,i]=-i, A[i,0]=-i
        C   A   C   A   C   T
    0  -1  -2  -3  -4  -5  -6
T  -1  -1  -2  -3  -4  -5  -3
A  -2  -2   1   0  -1  -2  -3
A  -3  -3   0   0   2   1   0
C  -4  -1  -1   2   1   4   3
G  -5  -2  -2   1   1   3   3
G  -6  -3  -3   0   0   2   2

TA-ACGG
CACAC-T

Lokalne zarovnanie

  • Rekurencia: A[i,j] = max {0, A[i-1,j]-1, A[i,j-1]-1, A[i-1,j-1]+c(p_i, q_j) }, pricom A[0,i]=0, A[i,0]=0
        C   A   C   A   C   T
    0   0   0   0   0   0   0
T   0   0   0   0   0   0   2
A   0   0   2   1   2   1   1
A   0   0   2   1   3   2   1
C   0   2   1   4   3   5   4
G   0   1   1   3   3   4   4
G   0   0   0   2   2   3   3

ACAC
A-AC

Dotploty

  • Dotplot je graf, ktory ma na kazdej osi jednu sekvenciu a ciarky zobrazuju lokalne zarovnania (cesty v matici)
  • Na slidoch mame niekolko prikladov dotplotov porovnavajucich rozne mitochondrialne genomy
  • Tieto boli vytvorene pomocou nastroja YASS http://bioinfo.lifl.fr/yass/yass.php
  • Dalsi priklad je zarovnanie genu Oaz Drosophila zinc finger s genomickym usekom chr2R:10,346,241-10,352,965
  • Trochu iny dotplot, ktory funguje pre proteiny a nerobi lokalne zarovnania, iba spocita skore bez medzier v kazdom okne danej vysky a nakresli ciaru ak pre kroci urcenu hodnotu
  • http://emboss.bioinformatics.nl/cgi-bin/emboss/dotmatcher
  • Vyskusame protein escargot voci sebe s hodnotami http://pfam.sanger.ac.uk/protein/ESCA_DROME window 8 threshold 24
  • Pomocou YASSu vyskusame kluster zhlukov PRAME z ludskeho genomu
  • Obrázky dotplotov na slidoch

Prakticke cvicenie: Yass a dotploty

  • Na stranke UCSC genome browseru http://genome.ucsc.edu/ si zadajte ludsky genom, najnovsiu verziu (hg19)
  • V druhom okne/tabe si otvorte YASS server na adrese http://bioinfo.lifl.fr/yass/yass.php
  • V genome browseri zadajte region chr21:10,018,860-10,019,178
    • tento región obsahuje Alu repeat. Tieto opakovania tvoria cca 10% ľudského genómu, viac ako milión kópií
    • zobrazte si DNA sekvenciu tohto useku takto: na hornej modrej liste zvolte DNA, na dalsej obrazovke tlacidlo get DNA
  • DNA sekvenciu Alu opakovania chceme zarovnat samu k sebe programom YASS
    • DNA sekvenciu Alu opakovania skopirujte do okienka "Paste your sequences" v stranke Yass-u a dvakrat stlacte tlacidlo Select vedla okienka
    • Nizsie v casti "Selected DNA sequence(s)" by sa Vam malo v oboch riadkoch objavit "Pasted file 1"
    • Nizsie v casti "Parameters" zvolte "E-value threshold" 0.01 a stlacte "Run YASS"
    • Vo vysledkoch si pozrite Dotplot, co z neho viete usudit o podobnosti jednotlivych casti Alu opakovania?
    • Vo vysledkoch si pozrite Raw: blast, ake su suradnice opakujucej sa casti a kolko zarovnanie obsahuje zhod/nezhod/medzier? (Pozor, prve zarovnanie je cela sekvencia sama k sebe, druhe je asi to, co chcete)
  • V genome browseri zadajte poziciu chr21:9,440,000-9,450,000 (10kb sekvencie na chromozome 21, s niekolkymi vyskytmi Alu)
  • Chceme teraz porovnat tento usek genomu so sekvenciou Alu pomocou YASSu
    • Ako predtym si stiahnite DNA sekvenciu tohto useku
    • V YASSe chodte sipkou spat na formular
    • Skopirujte DNA sekvenciu do YASSoveho formulara, do okienka vpravo (vyznacit si ju mozete klavesovou kombinaciou Ctrl-A alebo Select All v menu Edit),
    • V casti formulara Selected DNA sequence(s) stlacte Remove pri hornom riadku
    • Pri pravom okienku, kam ste nakopirovali sekvenciu, stlacte Select
    • Zase stlacte Run YASS
    • Pozrite si vysledok ako Dotplot, kolko opakovani Alu ste nasli? Preco je jedno cervene?
    • Pozrite si Raw: blast, na kolko percent sa podoba najpodobnejsia a na kolko druha najpodobnejsia kopia?

Sekvenovanie v UCSC genome browseri

  • Vráťte sa na UCSC genome browser http://genome.ucsc.edu/
  • Pozrieme si niekoľko vecí týkajúcich sa sekvenovania a skladania genómov
  • Hore v modrom menu zvoľte Genomes
  • Na ďalšej stránke zvoľte človeka a v menu Assembly zistite, kedy boli pridané posledné dve verzie ľudského genómu (hg18 a hg19)
  • Na tej istej stránke dole nájdete stručný popis zvolenej verzie genómu. Pre ktoré oblasti genómu máme v hg19 viacero alternatívnych verzií?
  • Zadajte región chr21:31,200,000-31,350,000
  • Zapnite si tracky Mapability a RepeatMasker na "full"
  • Mapability: nakoľko sa daný úsek opakuje v genóme a či teda vieme jednoznačne jeho ready namapovať pri použití Next generation sequencing
  • Ako a prečo sa pri rôznych dĺžkach readov líšia? (Keď kliknete na linku "Mapability", môžete si prečítať bližšie detaily.)
  • Približne v strede zobrazeného regiónu je pokles mapovateľnosti. Akému typu opakovania zodpovedá? (pozrite track RepeatMasker)
  • Zapnite si tracky "Assembly" a "Gaps" a pozrite si región chr2:110,000,000-110,300,000. Aká dlhá je neosekvenovaná medzera (gap) v strede tohto regiónu? Približnú veľkosť môžete odčítať z obrázku, presnejší údaj zistíte kliknutím na čierny obdĺžnik zodpovedajúci tejto medzere (úplne presnú dĺžku aj tak nepoznáme, nakoľko nie je osekvenovaná).
  • Prejdite na genóm Rhesus, región chr7:59,022,000-59,024,000, zapnite si tracky Contigs, Gaps, Quality scores
  • Aké typy problémov v kvalite sekvencie v tomto regióne vidíte?

Zarovnávanie sekvencií 2, cvičenia pre biológov

Uvod do pravdepodobnosti

Opakovanie E-value:

  • Priklady k tejto casti v prezentacii [2]
  • Mame dotaz dlzky m, databazu dlzky n, skore najlepsieho lok. zarovnania S
  • E-value je ocakavany pocet zarovnani so skore aspon S ak dotaz aj databaza su nahodne
  • Hrackarsky priklad: dotaz dlzky m=4, databaza dlzky n=200, S=4, t.j. presny vyskyt dotazu v databaze (pre presne vyskyty sa pravdepodobnosti pocitaju ovela lahsie ako ked dovolime nezhody a medzery)
  • Pravdepodobnostny model: Myslienkovy experiment obsahujuci nahodne javy (hod kockou a pod.)
  • Priklad: pravdepodobnostny model na generovanie nahodnej sekvencie:
  • Mame vrece s gulockami oznacenyni A,C,G,T, pricom gulocok oznacenych A je 30%, C 20%, G 20% a T 30%.
  • Vytiahneme gulicku, zapiseme si pismeno, hodime ju naspat, zamiesame a opakujeme s dalsim pismenom atd az kym nevygenerujeme m pismen pre dotaz a n pismen pre databazu
    • V nasom modeli mame obsah GC 40%
  • Pre nase vygenerovane sekvencie spocitame, kolkokrat sa dotaz vyskytuje v databaze
  • Cely experiment opakujeme vela krat a spocitame priemerny pocet vyskytov, co bude odhad E-value
  • Vieme spocitat aj presne, ale na to potrebujeme trochu pravdepodobnosti

Zaklady pravdepodobnosti

  • Vytiahnime z mechu 2x gulicku. Prve pismeno ktore nam vyjde oznacme X1 a druhe X2
  • Pr(X1=A) = 0.3, Pr(X2=C)=0.2
  • Pr(X1=A a X2=C) = Pr(X1=A)*Pr(X2=C) = 0.3*0.2 = 0.06
    • T.j. sanca ze dostaneme sekvenciu AC po dvoch tahaniach je 6%
    • Ak ratame pravdepodobnost, ze sa dve nezavisle udalosti stanu, ich pravdepodobnosti nasobime. V tomto pripade to ci X1=A je nezavisle od toho, ci X2=C
  • Pr(X1 je A alebo G) = Pr(X1=A)+Pr(X1=G) = 0.3+0.2 = 0.5
    • Pravdepodobnost ze prve pismeno bude A alebo G je 50%
    • Pravdepodobnosti navzajom sa vylucujucich udalosti (X1=A a X1=G) sa mozu scitat, cim dostaneme pravdepodobnost, ze aspon jedna z nich nastane
  • Pr(v sekvencii je aspon jedno A) = Pr(X1=A alebo X2=A) nemozeme pocitat ako Pr(X1=A)+Pr(X2=A), lebo sa navzajom nevylucuju a pripad ze X1=X2=A by sme zapocitali dvakrat
  • Spravne je Pr(v sekvencii je aspon jedno A) = Pr(X1=A) + Pr(X1 <> A a X2=A) = 0.3+0.7*0.3 = 0.51
  • Pr(X1=X2) = Pr(X1=X2=A) + Pr(X1=X2=C) + Pr(X1=X2=G) + Pr(X1=X2=T) = 0.3*0.3+0.2*0.2+0.2*0.2+0.3*0.3 = 0.26.
  • Ak u označíme pravdepodobnost u = Pr(X1=A)=Pr(X1=T)=Pr(X2=A)=Pr(X2=T) a v=Pr(X1=C)=Pr(X1=G)=Pr(X2=C)=Pr(X2=G), aky bude vzorec na Pr(X1=X2)?

Naspat k E-value

  • Mame dotaz X1X2...Xm a databazu Y1Y2...Yn. Aka je sanca, ze X sa nachadza na zaciatku Y, t.j. ze X1=Y1, X2=2... Xm=Ym?
  • Nezavisle udalosti, t.j. Pr(X1=Y1)*Pr(X2=Y2)*...*Pr(Xm=Ym) = 0.26 * 0.26 * ... * 0.26 = 0.26^m (0.26 na m-tu)
  • Pravdepodobnost, ze sa X nachadza hocikde v Y je tazsie zratat - moze sa vyskytovat aj viackrat, udalosti za sa nachadza na pozicii i sa navzajom nevylucuju
  • Ale priemerny pocet vyskytov na pozicii i je 0.26^m, mame n-m+1 pozicii zaciatku, takze celkovy ocakavany pocet vyskytov je (n-m+1)0.26^m
  • Ak je n velke v porovnani s m, clen -m+1 mozeme zanedbat, t.j. mame zhruba n*0.26^m
  • Ako sa meni toto cislo s velkostou databazy n? linearne rastie (zdvojnasobime databazu, zdvojnasobi sa e-value)
  • Ako sa meni s m? Exponencialne klesa, t.j. ak predlzime dotaz o 1, E-value klesne zhruba na stvrtinu
  • Ako sa meni s GC obsahom? Zakodovane v cisle 0.26 - vyskusame si pri pocitaci v tabuľkovom procesore

Práca v tabuľkovom procesore (Excel, OpenOffice, ...)

  • Okrem konkrétnych hodnôt, napr. 0.3, môžu byť aj vzorce, ktoré začínajú =, napr =0.3*0.3 dá do políčka 0.09 (* znamená násobenie)
  • Vo vzorcoch môžeme používať aj hodnoty z iných políčok, napr. =A2+B2 dáme do políčka C2, zobrazí sa tam súčet
  • Ak políčko so vzorcom skopírujeme do iného políčka, Excel sa snaží uhádnuť, ako zmeniť vzorec
    • Ak sme v C2 mali =A2+B2 a skopírovali sme to do C3, vzorec sa zmení na =A3+B3
  • Ak niektoré adresy políčok majú zostávať rovnaké aj pri kopírovaní, dáme pred písmeno aj číslo $,
    • Ak v C2 máme =A2+$B$2 a skopírujeme to do C3, dostaneme =A3+B2

BLAT vs BLAST, nets v UCSC browseri

  • Program BLAT v UCSC browseri rychlo vyhladava sekvencie v genome, ale nevie najst slabsie podobnosti
    • Vhodne pouzitie: zarovnanie EST ku genomu, presne urcenie suradnic nejakej sekvencie, a pod.
  • NCBI BLAST je pomalsi, ale najde viacej podobnosti
  • Aj BLAST vsak toho moze vela vynechat
  • Net tracky v UCSC genome browseri nam umoznuju prechadzat medzi homologickymi oblastami roznych genomov

Prakticke cvicenie pri pocitaci

E-values

  • Stiahnite si z tejto stranky subor evalue.ods, ulozte si ho na plochu, potom ho otvorte v OpenOffice
  • Doplnte chybajuci vzorec v stlpci D, potom rozkopirujte vzorce v stlpcoch B-F na celu dlzku tabulky
  • Aky rozsah E-value dostavate v poslednom stlpci? Pre ktore obsahy GC je najvyssi a najnizsi? Ako sa zmenia, ked zvysite hodnotu m o 1? Ak chcete, mozete si nakreslit aj graf.

BLAT/BLAST

  • Na stránke so súbormi otvorte subor rtpcr-seq.txt. Obsahuje sekvenciu, ktorá vznikla pomocou RT-PCR na ľudských cDNA knižniciach
  • Choďte na UCSC genome browser http://genome.ucsc.edu/ , na modrej lište zvoľte BLAT, zadajte túto sekvenciu a hľadajte ju v ľudskom genóme. Akú podobnosť (IDENTITY) má najsilnejší nájdený výskyt? Aký dlhý úsek genómu zasahuje? (SPAN). Všimnite si, že ostatné výskyty sú oveľa kratšie.
  • V stĺpci ACTIONS si pomocou Details môžete pozrieť detaily zarovnania a pomocou Browser si pozrieť príslušný úsek genómu.
  • V tomto úseku genómu si zapnite track Vertebrate net na full a kliknutím na farebnú čiaru na obrázku pre tento track zistite, na ktorom chromozóme sliepky sa vyskytuje homologický úsek.
  • Skusme tu istu sekvenciu namapovat do genomu sliepky: stlacte najprv na hornej modrej liste Genomes, zvolte Vertebrates a Chicken a potom na hornej liste BLAT. Do okienka zadajte tu istu sekvenciu. Akú podobnosť a dĺžku má najsilnejší nájdený výskyt teraz? Na ktorom je chromozóme?
  • Skúsme to isté v NCBI blaste: Choďte na http://blast.ncbi.nlm.nih.gov/ zvoľte nucleotide blast, database others a z menu reference genomic sequence, organism chicken (taxid:9031), program blastn
  • Aka je dlzka, identity a E-value najlepsieho zarovnania? Na ktorom je chromozome?

RT PCR sekvencia z cvičenia vyššie

AACCATGGGTATATACGACTCACTATAGGGGGATATCAGCTGGGATGGCAAATAATGATTTTATTTTGAC
TGATAGTGACCTGTTCGTTGCAACAAATTGATAAGCAATGCTTTCTTATAATGCCAACTTTGTACAAGAA
AGTTGGGCAGGTGTGTTTTTTGTCCTTCAGGTAGCCGAAGAGCATCTCCAGGCCCCCCTCCACCAGCTCC
GGCAGAGGCTTGGATAAAGGGTTGTGGGAAATGTGGAGCCCTTTGTCCATGGGATTCCAGGCGATCCTCA
CCAGTCTACACAGCAGGTGGAGTTCGCTCGGGAGGGTCTGGATGTCATTGTTGTTGAGGTTCAGCAGCTC
CAGGCTGGTGACCAGGCAAAGCGACCTCGGGAAGGAGTGGATGTTGTTGCCCTCTGCGATGAAGATCTGC
AGGCTGGCCAGGTGCTGGATGCTCTCAGCGATGTTTTCCAGGCGATTCGAGCCCACGTGCAAGAAAATCA
GTTCCTTCAGGGAGAACACACACATGGGGATGTGCGCGAAGAAGTTGTTGCTGAGGTTTAGCTTCCTCAG
TCTAGAGAGGTCGGCGAAGCATGCAGGGAGCTGGGACAGGCAGTTGTGCGACAAGCTCAGGACCTCCAGC
TTTCGGCACAAGCTCAGCTCGGCCGGCACCTCTGTCAGGCAGTTCATGTTGACAAACAGGACCTTGAGGC
ACTGTAGGAGGCTCACTTCTCTGGGCAGGCTCTTCAGGCGGTTCCCGCACAAGTTCAGGACCACGATCCG
GGTCAGTTTCCCCACCTCGGGGAGGGAGAACCCCGGAGCTGGTTGTGAGACAAATTGAGTTTCTGGACCC
CCGAAAAGCCCCCACAAAAAGCCG

Zarovnávanie sekvencií, cvičenia pre informatikov

Opakovanie dynamického programovania pre globálne zarovnanie

Uvažujme napríklad skórovanie zhoda +1, nezhoda -1, medzera -1 a vstupné sekvencie X=x_{1}\dots x_{m} a Y=y_{1}\dots y_{n}. Nech s(x,y) je skóre písmen x a y, t.j. 1 ak sa zhodujú a -1 ak nie. Máme rekurenciu:

A[i,j]=\max \left\{A[i-1,j-1]+s(x_{i},y_{j}),A[i-1,j]-1,A[i,j-1]\right\}

Reprezentácia pomocou grafu

Takéto dynamické programovanie vieme reprezentovať vo forme acyklického orientovaného grafu:

  • vrchol (i,j) pre každé 0\leq i\leq m,0\leq j\leq m, t.j. pre každé políčko dyn. prog. tabuľky
  • hrana z (i-1,j-1) do (i,j) s cenou s(x_{i},y_{j})
  • hrana z (i-1,j) do (i,j) s cenou -1
  • hrana z (i,j-1) do (i,j) s cenou -1
  • súčet súradníc na každej hrane rastie, graf teda nemôže obsahovať cyklus, je acyklický
  • každá cesta z (0,0) do (m,n) zodpovedá zarovnaniu, jej cena je cenou zarovnania (každá hrana jeden stĺpec)
  • optimálne zarovnanie teda zodpovedá ceste s maximálnou cenou

Krátka vsuvka o acyklických orientovaných grafoch

  • Mame dany acyklicky orientovany graf s ohodnotenymi hranami a startovaci vrchol s, koncovi vrchol t a chceme najst cestu s max. cenou z s do t.
  • Hladanie cesty s maximalnou cenou je vo vseobecnosti NP-tazke (podobne na Hamiltonovsku cestu)
  • V acyklickom grafe to vsak vieme riesit efektivne
  • Najskor si graf zotriedime topologicky, t.j. usporiadame vrcholy tak, aby kazda hrana isla z vrcholu z mensim cislom do vrcholu s vacsim cislom. To sa da modifikaciou prehladavania do hlbky v case O(|V|+|E|)
  • Potom pocitame dynamickym programovanim, kde A[u] je dlzka najdlhsej cesty z s do u: A[u]=\max _{{v:v\rightarrow u\in E}}A[v]+c(v\rightarrow u)

pricom na zaciatku nastavime A[s]=0 a na konci mame cenu cesty v A[t].

  • Cas vypoctu je O(|V|+|E|)
  • Vsimnime si, ze tiez dostaneme najdlhsie cesty z s do vsetkych vrcholov.

Ak tento algoritmus nasadime na graf pre globalne zarovnanie, dostavame presne nasu rekurenciu (topologicke triedenie mozno vynechat - poradie zhora dole a zlava doprava je topologicky utriedene). Vyhoda je, ze mozeme modifikaciou grafu ziskavat riesenia roznych pribuznych problemov bez toho, aby sme vzdy vymyslali novu rekurenciu.

Lokalne zarovnanie

  • Zarovnanie moze zacat a skoncit hocikde v matici
  • Pridaj startovaci vrchol s, koncovy vrchol t
  • Pridaj hrany s->(i,j) a (i,j)->t s cenou 0 pre kazde (i,j)
  • Opat ekvivalentne s rekurenciou z prednasky

Variant: chceme zarovnat cely retazec X k nejake casti retazca Y (napr. mapovanie sekvenovacich readov na genom)

  • Iba zmenime hrany z s a hrnay do t (ako?)

Afinne skore medzier

  • Napr. otvorenie medzery -2, pokracovanie medzery -1

A - - - T C G A C G C T C C 1 -2 -1 -1 1 1 -1

Riesenie 1:

  • Pridame hrany pre cele suvisle useky medzier so spravnou cenou
  • (i,j)->(i,k) s cenou o+(k-j)e
  • (i,j)->(k,j) s cenou o_(k-i)e
  • Cas O(mn(m+n)), t.j. kubicky
  • pozor, mame aj cesty, ktore nezopodvedaju ziadnemu spravnemu skore, napr. (i.j)->(i+1,j)->(i+2,j) ma cenou 2o, ale ma mat o+e. Nastastie hrana (i,j)->(i+2,j) ma vyssiu cenu, takze ta dlhsia cesta sa nepouzije.

Riesenie 2:

  • ztrojnasobime kazdy vrchol (i,j)_{u},(i,j)_{v},(i,j)_{z}
  • v indexe si pamatame, odkial sme do (i,j) prisli (u=uhlopriecne, v=vodorovne, z=zvislo)
  • DOKONCIT

Linearna pamat: Hirshbergov algoritmus 1975

  • DOKONCIT

Vypisanie vsetkych najlepsich rieseni

  • Namiesto jednej spatnej sipky si pamatame vsetky, ktore v danom A[i,j] viedli k maximalnej cene
  • Potom mozeme rekurzivne prehladavat a vypisovat vsetky cesty z (m,n) do (0,0) ktore pozostavaju iba zo zapamatanych hran
  • Cas na vypisanie jednej cesty je polynomialny, ale ciest moze byt exponencialne vela!
  • Mozno namiesto toho chceme len pocet takych ciest, alebo vsetky dvojice pismen, ktore mozu byt spolu zarovnane v niektorom optimalnom zarovnani

Evolúcia, cvičenia pre informatikov

Felsensteinov algoritmus 1981

  • Mame dany strom T s dlzkami hran a bazy v listoch (jeden stlpec zarovnania) a maticu rychlosti R. Spocitajme pravdepodobnost, ze z modelu dostaneme prave tuto kombinaciu baz v listoch.
  • Nech X_v je premenna reprezentujuca bazu vo vrchole v a nech x_v je konkretna baza v liste v. Nech listy su 1..n a vnut. vrcholy n+1..2n-1. Nech dlzka hrany z v do rodica je t_v. Nech P(a|b,t) je pravdepodobnost, ze b sa zmeni na a za cas t (spocitame z matice R, ako nabuduce). Nech q_a je pravdepodobnost bazy a v koreni (ekvilibrium matice R)
  • Napr. v Jukes-Cantorovom modeli P(A|A,t)=(1+3e^{{-{\frac  {4}{3}}t}})/4, P(C|A,t)=(1-e^{{-{\frac  {4}{3}}t}})/4
  • Chceme pravdepodobnost P(X_{1}=x_{1},X_{2}=x_{2},\dots X_{n}=x_{n}|T,R)=\sum _{{x_{{n+1}}\dots x_{{2n-1}}}}P(X_{1}=x_{1}\dots X_{{2n-1}}=x_{{2n-1}}|T,R)
  • Spocitame rychlejsie dynamickym programovanim.
  • Nech A[v,a] je pravdedpodobnost dat v podstrome s vrcholom v ak X_v=a
  • A[v,a] pocitame od listov ku korenu
  • v liste A[v,a] = [a=x_v]
  • Vo vnut. vrchole s detmi x a y mame A[v,a]=\sum _{{b,c}}A[x,b]A[y,c]P(b|a,t_{x})P(c|a,t_{y})
  • Celkova pravdepodobnost je P(X_{1}=x_{1},X_{2}=x_{2},\dots X_{n}=x_{n}|T,R)=\sum _{a}A[r,a]q_{a} pre koren r.

Zlozitost, zlepsenie

  • Zlozitost O(n|\Sigma |^{3})
  • Pre nebinarne stromy exponencialne
  • Zlepsenie A[v,a]=(\sum _{{b}}A[x,b]P(b|a,t_{x}))(\sum _{c}A[y,c](c|a,t_{y}))
  • Zlozitost O(n|\Sigma |^{2}) aj pre nebinarne stromy

Chybajuce data

  • Ak v niektorom liste mame neznamu bazu N, nastavime A[v,a]=1
  • Podobne sa spracovavaju medzery v zarovnani, aj ked mohli by sme mat aj model explicitne ich modelujuci

Aposteriorna pravdepodobnost

  • Co ak chceme spocitat pravdepodobnost P(X_v=a|X_1=x_1, X_2=x_2,\dots X_n=x_n,T,R)?
  • Potrebujeme B[v,a]=pravdpodobnost dat ak podstrom v nahradim listom s bazou a.
  • B[v,a] pocitame od korena k listom
  • V koreni B[v,a] = q_a
  • Vo vrchole v s rodicom u a surodencom x mame B[v,a]=\sum _{{b,c}}B[u,b]A[x,c]P(a|b,t_{v})P(c|b,t_{v})
  • Ziadana pravdepodobnost je B[v,a]A[v,a]/P(X_{1}=x_{1},X_{2}=x_{2},\dots X_{n}=x_{n}|T,R)

Substitucne modely - odvodenie

  • Nech P(b|a,t) je pravdepodobnost, ze ak sme zacneme s bazou a, tak po case t budeme mat bazu b.
  • Pre dane t mozeme take pravdepodobnosti usporiadat do matice 4x4 (ak studujeme DNA), kde S(t)_{{a,b}}=P(b|a,t)
  • Intuitivne cim vacsie t, tym vacsia pravdepodobnost zmeny; S(0)=I (jednotkova matica), S(t),t\rightarrow \infty ma vsetky riadky rovnake, napr. 1/4, 1/4, 1/4, 1/4
  • Ak mame matice pre casy t_{1} a t_{2}, vieme spocitat maticu pre cas t_{1}+t_{2}: P(b|a,t_{1}+t_{2})=\sum _{x}P(x|a,t_{1})\cdot P(b|x,t_{2}) a teda v maticovej notacii S(t_{1}+t_{2})=S(t_{1})S(t_{2}). Takyto model nazyvame multiplikativny a predpoklada, ze pravdepodobnost mutacie zavisi len od aktualnej bazy, nie od minulych stavov.
  • Ak by sme uvazovali iba diskretne (celocislene) casy, stacilo by nam urcit iba S(1) a vsetky ostatne casy dostaneme umocnenim tejto matice. Je vsak elegantnejsie mat S(t) definovane aj pre realne t.
  • Jukes-Cantor-ov model evolucie predpoklada, ze vsetky substitucie su rovnako pravdepodobne.
  • Pre velmi maly cas mame maticu
S(\epsilon )=\left({\begin{array}{cccc}1-3p&p&p&p\\p&1-3p&p&p\\p&p&1-3p&p\\p&p&p&1-3p\\\end{array}}\right)
kde p je tiez velmi male cislo.
  • Pre cas 2\epsilon dostavame maticu
S(2\epsilon )=S(\epsilon ^{2})=\left({\begin{array}{cccc}1-6p+12p^{2}&2p-4p^{2}&2p-4p^{2}&2p-4p^{2}\\\dots \end{array}}\right)
  • Ale cleny s p^{2} su ovela mensie ako cleny s p, takze tato matica je priblizne
S(2\epsilon )=S(\epsilon ^{2})\approx \left({\begin{array}{cccc}1-6p&2p&2p&2p\\\dots \end{array}}\right)
  • Vytvorme si teraz maticu rychlosti (rate matrix)
R=\left({\begin{array}{cccc}-3\alpha &\alpha &\alpha &\alpha \\\alpha &-3\alpha &\alpha &\alpha \\\alpha &\alpha &-3\alpha &\alpha \\\alpha &\alpha &\alpha &-3\alpha \\\end{array}}\right)
  • Dostavame, ze pre velmi male casy plati S(\epsilon )\approx I+R\epsilon (p pouzivane vyssie by malo hodnotu \alpha /\epsilon ).
  • S(t+\epsilon )=S(t)S(\epsilon )\approx S(t)(I+R\epsilon ) a teda (S(t+\epsilon )-S(t))/\epsilon \approx S(t)R a v limite pre \epsilon \rightarrow o dostavame S'(t)=S(t)R (diferencialne rovnice, pociatocny stav S(0)=I).
  • Ak diagonalne prvky S(t) oznacime r(t) a nediagnoalne s(t), dostavame, ze diagonalny prvok S(t)R je -3\alpha r(t)+3\alpha s(t) a nediagonalny -\alpha s(t)+\alpha r(t). Takze dostavame diferencialne rovnice r'(t)=-3\alpha (s(t)-r(t)) a s'(t)=\alpha (r(t)-s(t)).
  • Overme, ze riesenim tejto rovnice je r(t)=(1+3e^{{-4\alpha t}})/4 a s(t)=(1-e^{{-4\alpha t}})/4:
Zderivujeme r'(t)=-3\alpha e^{{-4\alpha t}} a s'(t)=\alpha e^{{-4\alpha t}}, dosadime do rovnic.
  • Takze mame maticu:
S(t)=\left({\begin{array}{cccc}(1+3e^{{-4\alpha t}})/4&(1-e^{{-4\alpha t}})/4&(1-e^{{-4\alpha t}})/4&(1-e^{{-4\alpha t}})/4\\\dots \end{array}}\right)
  • V case t je pravdepodobnost, ze uvidime zmenenu bazu D_{t}={\frac  {3}{4}}(1-e^{{-4\alpha t}}) a teda ak v skutocnosti vidime d\% zmenenych baz, vieme spatne zratat t, ktore by hodnote D_{t}=d prinalezalo.
  • Aby sme nemali naraz aj \alpha aj t, zvykneme maticu R normalizovat tak, aby priemerny pocet substitucii za jednotku casu bol 1. V pripade Jukes-Cantorovho modelu je to ked \alpha =1/3.
  • Dostavame teda vzorec pre vzdialenost, ktory sme videli na prednaske t=-{\frac  {3}{4}}\log \left(1-{\frac  {4}{3}}d\right)
  • Preco sme ten vzorec odvodili takto? V skutocnosti chceme najst najvierohodnejsiu hodnotu t, t.j. taku, pre ktore hodnota P(data|t) bude najvacsia. Zhodou okolnosti vyjde takto.
  • V praxi sa pouzivaju komplikovanejsie substitucne modely, ktore maju vseobecnejsiu maticu rychlosti R
  • Kimurov model napr. zachytava, ze puriny sa castejsie menia na ine puriny (A a G) a pyrimidiny na ine pyrimidiny (C a T) ma dva parametre:
R=\left({\begin{array}{cccc}-2\beta -\alpha &\beta &\alpha &\beta \\\beta &-2\beta -\alpha &\beta &\alpha \\\alpha &\beta &-2\beta -\alpha &\beta \\\beta &\alpha &\beta &-2\beta -\alpha \\\end{array}}\right)
  • HKY model (Hasegawa, Kishino & Yano) tiez umoznuje rozne pravdepodobnosti A, C, G a T v ekvilibriu.
  • Vo vseobecnosti pre rate matrix R dostavame S(t)=e^{{Rt}}. Ak R diagonalizujeme (urcite sa da pre symetricke R) R=UDU^{{-1}}, kde D je diagonalna matica (na jej diagonale budu vlastne hodnoty R), tak e^{{Rt}}=Ue^{{Dt}}U^{{-1}}, t.j. exponencialnu funkciu uplatnime iba na prvky na uhlopriecke matice D.

Evolúcia a HMM, cvičenia pre biológov

Príklady stavových automatov pre HMM

Uvazujme HMM so specialnym zaciatocnym stavom b a koncovym stavom e, ktore nic negeneruju.

  • Nakreslite HMM (stavovy diagram), ktory generuje sekvencie, ktore zacinaju niekolkymi cervenymi pismenami a potom obsahuju niekolko modrych
  • Ako treba zmenit HMM, aby dovoloval ako "niekolko" aj nula?
  • Ako treba zmenit HMM, aby pocet cervenych aj modrych bol vzdy parne cislo?
  • Ako zmenit HMM, aby sa striedali cervene a modre kusy parnej dlzky?

V dalsich prikladoch uvazujeme aj to, ktore pismena su v ktorom stave povolene (pravdepodobnost emisie > 0) a ktore su zakazane

  • cervena sekvencia dlzky dva, ktora zacina na A
  • cervena sekvencia dlzky dva, ktora je hocico okrem AA

Dalsi biologicky priklad HMM: topologia transmembranovych proteinov.

Fylogeneticke stromy

  • Terminologia: zakoreneny/nezakoreneny strom, hrana, vrchol, list, vnutorny vrchol, koren
  • Ak zmazeme hranu, strom sa rozpadne na dve suvisle casti. Strom mozeme teda povazovat za sadu biparticii.
  • Ak mame zakoreneny strom s n listami a kazdy vnutorny vrchol ma 2 deti, bude mat n-1 vnutornych vrcholov (preco?)
  • V nezakorenenom strome s n listami, ak ma kazdy vrchol 3 susedov, bude mat n-2 vnutornych vrcholov
  • Kolkymi sposobmi mozeme zakorenit nezakoreneny strom?
  • Ak nakreslime zakoreneny strom obvyklym sposobom, listy su usporiadane zhora nadol. Kolko roznych poradi listov vieme dostat roznym zakreslovanim toho isteho stromu? Kolko je vobec roznych poradi listov, ak neberieme do uvahy strom?
  • Ine pouzitie stromov v informatike: uvidime hierarchicke clustrovanie, bayesovske siete, ale tiez efektivne datove struktury

Bootstrap

  • Nahodne vyberieme niektore stlpce zarovnania, zostrojime strom vybranou metodou
  • Cele to opakujeme vela krat
  • Znacime si, kolkokrat sa ktora vetva opakuje v stromoch, ktore dostavame
    • Pri nezakoreneneych stromoch je vetva rozdelenie listov na dve skupiny
  • Nakoniec zostavime strom s casto sa vyskytujucich hran (napr tych, ktore su vo viac ako 50% stromov)
  • Bootstrap hodnoty nam daju urcity odhad spolahlivosti, hlavne ak mame celkovo malo dat (kratke zarovnanie)
  • Ak vsak data velmi dobre nezodpovedaju vybranej metode tak aj pre zly strom mozeme dostat vysoky bootstrap

Fitchov algoritmus

Fitch.png
  • Parsimony/uspornost
    • Vstup: fylogeneticky strom, 1 stlpec zarovnania (jedna baza v kazdom liste stromu)
    • Vystup: priradenie baz predkom minimalizujuce pocet substitucii
  • Priklad - obr 1
  • Uvazujme, co vieme povedat o strome s dvoma susednymi listami vo vacsom strome (oznacenie: obr. 2, listy v1 a v2, hrany do listov e1, e2, ich predok v3, hrana z v3 vyssie e3).
  • Ak oba listy maju bazu rovanku bazu, napr. A, predok v3 v optimalnom rieseni bude urcite mat bazu A
    • Dokaz sporom: nech to tak nie je, nech optimalne riesenie ma nejaku inu bazu, napr. C. Vymenme v tomto rieseni toto C za A. Moze nam pribudnut jedna mutacia na hrane e3, ale ubudnu dve na hranach e1 a e2. Tym celkova cena riesenia klesne o 1, takze nebolo optimalne.
  • Ak tieto dva listy maju rozne bazy, napr. A a C, tak existuje optimalne riesenie, ktore ma v predkovi v3 bazu A alebo C.
    • Dokaz: vezmime optimalne riesenie. Ak ma v3 bazu A alebo C, tvrdenie plati. Ak ma v3 nejaku inu bazu, napr T, mozeme ju vymenit napr. za A, ci mozno pribudne jedna muracia na e3 ale urcite ubudne mutaci na e1. Teda celkovy pocet mutacii sa nezvysi a nase nove riesenie je stale optimalne. Pozor, vo vseobecnosti nevieme povedat, ci ma v3 mat bazu A alebo C. V niektorych pripadoch su optimalne obe, v niektorych len jedna z nich.
  • Fitchov algoritmus 1971
  • Kazdemu vrcholu v priradime mnozinu baz M(v)
  • M(v) pocitame od listov smerom ku korenu
  • Pre list v bude M(v) obsahovat bazu v tomto liste
  • Uvazujme vnutorny vrchol v s detmi x a y. Mame uz spocitane M(x) a M(y), chceme M(v)
  • Ak M(x) a M(y) maju nejake spolocne bazy, vsetky tieto spolocne bazy dame do M(v), t.j. M(v)=M(x)\cap M(y)
  • Ak M(x) a M(y) nemaju spolocne bazy, do M(v) dame vsetky bazy z M(x) aj M(v), t.j. M(v)=M(x)\cup M(y)
V tomto pripade pocet mutacii vzrastie o jedna
  • Ked mame M(v) spocitane pre vsetky vrcholy, ideme od korena smerom k listom a vyberieme vzdy jednu bazu z M(v).
  • Ak sme vybrali pre rodica bazu x a x je v M(v), zvolime x aj pre v, inak zvolime lubovolnu bazu z M(v).
  • Priklad algoritmu na obr 3

Opakovanie pravdepodobnostnych modelov

Ake sme doteraz videli modely

  • E-value v BLASTe: nahodne vygenerujeme databazu a dotaz (query), kolko bude v priemere medzi nimi lokalnych zarovnani so skore aspon T?
  • Hladanie genov: model generujuci sekvenciu+anotaciu naraz (parametre nastavene na znamych genoch). Pre danu sekvenciu, ktora pravdedpodobnost je najpravdepodobnejsia?
  • Evolucia, Jukes-Cantorov model: model generujuci stlpec zarovnania. Nezname parametre: strom, dlzky hran. Pre danu sadu stlpcov zarovnania, ktore parametre povedu k najvacsej pravdepodobnosti? \max _{{param}}\Pr(data|param)
  • Trochu detailov: pravdepodobnost zmeny/nezmeny na hrane dlzky t: P(A|A,t)=(1+3e^{{-{\frac  {4}{3}}t}})/4, P(C|A,t)=(1-e^{{-{\frac  {4}{3}}t}})/4
  • Ak pozname ancestralne sekvencie, vieme spocitat pravdepodobnost dat
  • Ancestralne sekvencie su nahodne premenne, ktore nas nezaujimaju: marginalizujeme ich (uvazujeme vsetky ich mozne hodnoty)

Zlozitejsie evolucne modely

  • Jukes-Cantorov model uvazuje len dlzku hrany udanu v priemernom pocte substitucii (vratane tych, ktore nevidime, kvoli tomu, ze su dve na tom istom mieste)
  • Nie vsetky substitucie sa deju rovnako casto: tranzicie (v ramci pyrimidinov T<->C, v ramci purinov A<->G) su pravdepodobnjesie ako transverzie (A,G)<->(C,T)
  • Nie vsekty nukleotidy sa v danom genome objavuju rovnako casto (napr. mitochondrialne genomy velmi male C,G)
  • Tieto javy zachytava HKY model
  • Matica rychlosti

\left({\begin{array}{cccc}-\mu _{A}&\beta \pi _{C}&\alpha \pi _{G}&\beta \pi _{T}\\\beta \pi _{A}&-\mu _{C}&\beta \pi _{G}&\alpha \pi _{T}\\\alpha \pi _{A}&\beta \pi _{C}&-\mu _{G}&\beta \pi _{T}\\\beta \pi _{A}&\alpha \pi _{C}&\beta \pi _{G}&-\mu _{T}\\\end{array}}\right)

  • \kappa =\alpha /\beta je pomer rychlosti, ktorymi sa deju tranzicie vs. transverzie
  • \pi _{j} je frekvencia bazy j v sekvencii
  • Rychlost, ako sa deje substitucia z X do Y je sucin pravdepodobnosti Y a faktoru, ktory zavisi od toho, ci ide o tranziciu alebo transverziu
  • Sucet kazdeho stlpca matice ma byt 0, t.j. \mu _{A}=\beta \pi _{A}+\alpha \pi _{A}+\beta \pi _{A}
  • Matica sa znormalizuje tak, aby priemerny pocet substitucii za jednotku casu bol 1
  • Matica ma styri parametre: \kappa a tri frekvencie (stvrta musi doplnit do 1) plus dlzka hrany
  • Zlozitejsi model lepsie zodpoveda skutocnym procesom, ale na odhad viac parametrov potrebujeme viacej dat.
  • Existuju metody, ktore pre dany cas t z matice spocitaju pravdepodobnost, ze baza X zmutuje na bazu Y Pr(Y|X,t)
  • Napr. pre velmi velmi maly cas \epsilon mame \Pr(C|A,\epsilon ) je zhruba \epsilon \beta \pi _{C}
  • Pre rozumne dlhe casy toto neplati, preto sa pouzivaju algebraicke metody, ktore beru do uvahy moznost viacerych substitucii na tom istom mieste
  • Je aj vela inych modelov s mensim alebo vacsim poctom parametrov

Prakticka ukazka tvorby stromov

  • V UCSC browseri mozeme ziskavat viacnasobne zarovnania jednotlivych genov (nukleotidy alebo proteiny). Nasledujuci postup nemusite robit, subor si stiahnite tu: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb06/cb06-aln.fa
    • UCSC browseri si pozrieme usek ludskeho genomu chr6:136,214,527-136,558,402 s genom PDE7B (phosphodiesterase 7B)
    • Na modrej liste zvolime Tables, v nej RefSeq genes, zaklikneme Region: position, a Output fomat: CDS FASTA alignment a stlacime Get output
    • Na dalsej obrazovke zaklikneme show nucleotides. Z primatov zvolime chimp, rhesus, tarsier, z inych cicavcov mouse, rat, dog, elephant a z dalsich organizmov opposum, platypus, chicken, lizard, stlacime Get output.
    • Vystup ulozime do suboru, z mien sekvencii zmazeme spolocny prefix NM_018945_, pripadne celkovo prepiseme mena na anglicke nazvy
  • Skusme zostavit strom na stranke http://mobyle.pasteur.fr/cgi-bin/portal.py
  • Pouzijeme program quicktree, metodu neighbor joining, bootstrap 100
  • Na zobrazenie stromu vysledok dalej prezenieme cez zobrazovacie programy drawtree alebo newicktops (zvolit v menu pri tlacidle further analysis)
    • Vysledok z drawtree, nezakoreneny, nezobrazuje bootstrap hodnoty
    • Vysledok z newicktops, zakoreneny na nahodnom mieste (nie spravne) zobrazuje bootstrap hodnoty
    • v drawtree sme nastavili sme formát výstupu MS-Windows Bitmap a X,Y resolution aspoň 1000, v newicktops sme nastavili show bootstrap values
  • "Spravny strom" [3] v nastaveniach Conservation track-u v UCSC browseri (podla clanku Murphy WJ, Eizirik E, O'Brien SJ, Madsen O, Scally M, Douady CJ, Teeling E, Ryder OA, Stanhope MJ, de Jong WW, Springer MS. Resolution of the early placental mammal radiation using Bayesian phylogenetics. Science. 2001 Dec 14;294(5550):2348-51.)
  • Nas strom ma long branch attraction (zle postavenie hlodavcov, ktori maju dlhu vetvu aj slona, co moze byt zapricene sekvenovacimi chybami).
  • Ine programy, ktore mozete skusit na mobyle
    • phyml: metoda maximalnej vierohodnosti (daju sa nastavit detaily modelu, bootstraps, ktory ale moze dost dlho trvat, typy operacii na strome pri heuristickom hladani najlepsieho stromu)
    • dnapars alebo protpars na parsimony
    • viacnasobne zarovnanie pomocou clustalw alebo modernejsou alternativou muscle
    • Ak chcete skusat zarovnania, zacnite z nezarovnanych sekvencii: http://compbio.fmph.uniba.sk/vyuka/mbi/poznamky/cb06/cb06-seq.fa

HMM a phyloHMM, cvičenia pre informatikov

Vzoraky DU1

Opakovanie

Parametre HMM:

  • a_{{u,v}}: prechodová pravdepodobnosť zo stavu u do stavu v
  • e_{{u,x}}: pravdepodobnosť emisie x v stave u
  • \pi _{{u}}: pravdepodobnosť, že začneme v stave u


  • Sekvencia S=S_{1}S_{2}\dots S_{n}
  • Anotácia A=A_{1}A_{2}\dots A_{n}

Pr(S,A)=\pi _{{A_{1}}}e_{{A_{1},S_{1}}}\prod _{{i=2}}^{n}a_{{A_{{i-1,A_{i}}}}}e_{{A_{i},S_{i}}}

Trénovanie

Proces, pri ktorom sa snažíme čo najlepšie odhadnúť pravdepodobnosti a_{{u,v}} a e_{{u,x}} v modeli podľa trénovacích dát

Usudzovanie (inferencia)

Proces, pri ktorom sa snažíme pre sekvenciu S nájsť anotáciu A, ktorá sekvenciu S emituje s veľkou pravdepodobnosťou.

Inferencia pomocou najpravdepodobnejšej cesty, Viterbiho algoritmus

Hľadáme najpravdepodobnejšiu postupnosť stavov A, teda \arg \max _{A}\Pr(A,S). Úlohu budeme riešiť dynamickým programovaním.

  • Podproblém V[i,u]: Pravdepodobnosť najpravdepodobnejšej cesty končiacej po i krokoch v stave u, pričom vygeneruje S_{1}S_{2}\dots S_{i}.
  • Rekurencia:
    • V[1,u]=\pi _{u}e_{{u,s_{1}}} (*)
    • V[i,u]=\max _{w}V[i-1,w]a_{{w,u}}e_{{u,x_{i}}} (**)

Algoritmus:

  1. Nainicializuj V[1,*] podľa (*)
  2. for i=2 to n=dĺžka reťazca
for u=1 to m=počet stavov
vypočítaj V[i,u] pomocou (**)
  1. Maximálne V[n,j] je pravdepodobnosť najpravdepodobnejšej cesty

Aby sme vypísali anotáciu, pamätáme si pre každé V[i,u] stav w, ktorý viedol k maximálnej hodnote vo vzorci (**).

Zložitosť: O(nm^{2})

Poznámka: pre dlhé sekvencie budú čísla V[i,u] veľmi malé a môže dôjsť k podtečeniu. V praxi teda používame zlogarimované hodnoty, namiesto násobenia súčet.

Inferencia - dopredný algoritmus

Aká je celková pravdepodobnosť, že vygenerujeme sekvenciu S, t.j. \sum _{A}Pr(A,S). Podobný algoritmus ako Viterbiho.

Podproblém F_{{i,u}}: pravdepodobnosť, že po i krokoch vygenerujeme s_{1},s_{2},\dots s_{i} a dostaneme sa do stavu u.

F_{{i,u}}=\Pr(A_{i}=u\wedge S_{1},S_{2},\dots ,S_{i})=\sum _{{A_{1},A_{2},\dots ,A_{i}=j}}\Pr(A_{1},A_{2},...,A_{i}\wedge S_{1},S_{2},...,S_{i})

F_{{1,u}}=\pi _{u}e_{{u,x_{1}}}

F_{{i,u}}=\sum _{v}F_{{i-1,v}}a_{{v,u}}e_{{u,x_{i}}}

Celková pravdepodobnosť \sum _{u}F_{{n,u}}

Inferencia - posterior decoding

Aposteriórna pravdepodobnosť stavu u na pozícii i: Pr(A_{i}=u|S_{1}\dots S_{n})

Pre každý index i chceme nájsť stav u s najväčšiou aposteriórnou pravdepodobnosťou, dostaneme tak inú možnú anotáciu.

Spustíme dopredný algoritmus a jeho symetrickú verziu, spätný algoritmus, ktorý počíta hodnoty B[i,u]=\Pr(A_{i}=u\wedge S_{{i+1}}\dots S_{n})

Aposteriórna pravdepodobnosť stavu u na pozícii i: Pr(A_{i}=u|S_{1}\dots S_{n})=F[i,u]B[i,u]/\sum _{u}F_{{n,u}}.

Posterior decoding uvažuje všetky anotácie, nielen jednu s najvyššou pravdepodobnosťou. Môže však vypísať anotáciu, ktorá má sama o sebe nulovú pravdepodobnosť (napr. počet kódujúcich báz v géne nie je deliteľný 3).

Trénovanie HMM

  • Stavový priestor + povolené prechody väčšinou ručne
  • Parametre (pravdepodobnosti prechodu, emisie a počiatočné) automaticky z trénovacích sekvencií
    • Ak máme anotované trénovacie sekvencie, jednoducho počítame frekvencie
    • Ak máme iba neanotované sekvencie, snažíme sa maximalizovať vierohodnosť trénovacích dát v modeli. Používajú sa heuristické iteratívne algoritmy, napr. Baum-Welchov, ktorý je verziou všeobecnejšieho algoritmu EM (expectation maximization).
  • Čím zložitejší model a viac parametrov máme, tým potrebujeme viac trénovacích dát, aby nedošlo k preučeniu, t.j. k situácii, keď model dobre zodpvedá nejakým zvláštnostiam trénovacích dát, nie však ďalším dátam.
  • Presnosť modelu testujeme na zvláštnych testovacích dátach, ktoré sme nepoužili na trénovanie.

Tvorba stavového priestoru modelu

  • Promótor + niekoľko eukaryotických génov
  • Repeaty v intrónoch: multiple path problem
  • Intrón má dĺžku aspoň 10

Zovšeobecnené HMM

  • Problém s modelovaním rozdelenia dĺžok - v základnom modeli je geometrické
  • Zovseobecnene HMM v jednom stave vygenerujú viac znakov
  • Viterbi alg. a spol budú pomalšie (kvadratické od dĺžky sekvencie)

Fylogeneticke HMM

  • Spojenie HMM a fylogenetickeho stromu
  • Konecne mnozina stavov
  • a_{{u,v}}: prechodová pravdepodobnosť zo stavu u do stavu v
  • \pi _{{u}}: pravdepodobnosť, že začneme v stave u
  • Namiesto emisnej pravdepodobnosti mame pre kazdy stav dlzky hran, maticu rychlosti R

Priklad:

  • PhastCons: 2 stavy: zachovana a nezachovana sekvencia
  • Komparativne hladanie genov

Opakovanie: Viterbiho algoritmus pre HMM

  • Podproblém V[i,u]: Pravdepodobnosť najpravdepodobnejšej cesty končiacej po i krokoch v stave u, pričom vygeneruje S_{1}S_{2}\dots S_{i}.
  • V[i,u]=\max _{v}V[i-1,v]a_{{v,u}}e_{{u,x_{i}}}

Modifikacia pre fylogeneticke HMM:

  • Pre kazdy stlpec zarovnania i a stav u spustime Felsensteinov algoritmus
  • Vyslednu pravdepodobnost pouzijeme namiesto e_{{u,x_{i}}}
  • Zlozitost pre k stavov, dlzku zarovnania n, pocet organizmov m: O(nmk + nk^2)

Gény, proteíny a komparatívna genomika, cvičenia pre biológov

  • Pozri slidy [4]

Hľadanie génov v prokaryotických genómoch

  • ORF: open reading frame, jednoduche hladanie
  • ako najst zaciatok, ako rozlisit psedogeny a nahodne ORF-y
  • samotrenujuce sa HMM, codon bias, GC%

E. coli http://nar.oxfordjournals.org/content/34/1/1.full

  • Prvykrat sekvenovana a anotovana 1997
  • Porovnanie s verziou 2005 (oprava sekvenovacích chýb aj chýb v anotácii)
    • 682 zmien v start kodone
    • 31 génov zrušených
    • 48 nových génov
    • Celkovo asi 4464 génov

Programy na anotovanie prokaryotických genómov

  • ORFfinder at NCBI [5]
  • Glimmer at NCBI [6]
  • GeneMark at NCBI [7]
  • tRNAscan-SE [8]

Histónové modifikácie

  • A. Barski, S. Cuddapah, K. Cui, T. Roh, D. Schones, Z. Wang, G. Wei, I. Chepelev, K. Zhao (2007) High-Resolution Profiling of Histone Methylations in the Human Genome Cell, Volume 129, Issue 4, Pages 823-837 pdf

Gény v ľudskom genóme

  • What is a gene, post-ENCODE? History and updated definition. Gerstein MB, Bruce C, Rozowsky JS, Zheng D, Du J, Korbel JO, Emanuelsson O, Zhang ZD, Weissman S, Snyder M.
  • Most "dark matter" transcripts are associated with known genes. H Van Bakel, C Nislow, BJ Blencowe, TR Hughes - PLoS Biol, 2010
  • Transcribed dark matter: meaning or myth? CP Ponting, TG Belgard - Human molecular genetics, 2010

Geny, evolucia a komparativna genomika v UCSC genome browseri

  • Chodte na stranku http://genome.ucsc.edu/
  • Zvolte starsiu verziu ludskeho genomu hg18, ktora ma viac informacii
  • Do okienka position zadajte gen MAGEA2B a potom zvolte vyskyt na pozicii cca chrX:151636040-151637735 (ma dva vyskyty)
    • Dostanete sa tam aj touto linkou: [9]
  • Ak date 3x zoom out, mozete si vsimnut, ze tento gen ma viacero foriem zostrihu, ktore sa ale lisia iba v 5' UTR
  • Vsimnite si ENCODE Regulation Super-track, ktory zobrazuje ChIP data pre niektore histonove modifikacie
  • Vela veci sa mozete dozvediet klikanim na rozne casti broswera: napr, kliknutim na gen si mozete precitat o jeho funkcii, kliknutim na listu ku tracku (lavy okraj obazku) sa dozviete viac o tracku a mozete nastavovat parametre zobrazenia
  • V casti Genes and Gene Prediction Tracks zapnite track Pos Sel Genes, ktory obsahuje geny s pozitivnym vyberom (cervenou, pripadne slabsie fialovou a modrou)
  • Ked kliknete na cerveny obdlznik pre tento gen, uvidite, v ktorych castiach fylogenetickeho stromu bol detekovany pozitivny vyber
  • V casti multiz alignments tracku Conservation vidite zarovnania k roznym inym genomom (da sa zapinat, ze ku ktorym). Mozete si pozriet, ako sa uroven zarovnania zmeni ked sa priblizujeme a vzdalujeme (zoom in/zoom out).
  • Ked sa priblizite spat na gen MAGEA2B a potom tak, aby ste boli na urovni "base", t.j. zobrazenych cca 100bp, v obdlzniku multiz alignment uvidite zarovnanie s homologickym usekom v inych genomoch. Konkretne v MAGEA2B vidime pomerne dost rozdielov v proteine medzi clovekom a makakom rezus, vdaka ktorym bol zrejme klasifikovany ako pod pozitivnym vyberom.
  • V casti conservation by PhyloP vidime graf toho, ako silne su zachovane jednotlive stlpce zarovnania
  • Da sa zapnut aj track 28-Way Most Cons, ktory zobrazuje konkretne useky, ktore su najvac konzervovane
    • Ak chceme zistit, kolko percent genomu tieto useky pokryvaju, ideme na modrej liste do casti Tables, zvolime group Comparative genomics, track 28-way most cons, table Mammal alebo Vertebrate, region zvolime genome (v celom genome) a stlacime tlacidlo Summary/statistics

Objavenie génu HAR1 pomocou komparatívnej genomiky

  • Pollard KS, Salama SR, Lambert N, et al. (September 2006). "An RNA gene expressed during cortical development evolved rapidly in humans". Nature 443 (7108): 167–72. doi:10.1038/nature05113. PMID 16915236. pdf
  • Zobrali všetky regióny dĺžky aspoň 100 s > 96% podobnosťou medzi šimpanzom a myšou/potkanom (35,000)
  • Porovnali s ostatnými cicavcami, zistili, ktoré majú veľa mutáci v človeku, ale málo inde (pravdepodobnostný model)
  • 49 štatisticky významných regiónov, 96% nekódujúcich oblastiach
  • Najvýznamnejší HAR1: 118nt, 18 substitúcii u človeka, očakávali by sme 0.27. Iba 2 zmeny medzi šimpanzom a sliepkou (310 miliónov rokov), ale nebol nájdený v rybách a žabe.
  • Nezdá sa byť polymorfný u človeka
  • Prekrývajúce sa RNA gény HAR1R a HAR1F
  • HAR1F je exprimovaný v neokortexe u 7 a 9 týždenných embrií, neskôr aj v iných častiach mozgu (u človeka aj iných primátov)
  • Všetky substitúcie v človeku A/T->C/G, stabilnejšia RNA štruktúra (ale tiež sú blízko k telomére, kde je viacej takýchto mutácii kvôli rekombinácii a biased gene conversion)
  • Môžete si pozrieť tento region v browseri: chr20:61,203,911-61,204,071 (hg18), pricom ak sa este priblizite, uvidite zarovnanie aj s bazami a mozete vidiet, ze vela zmien je specifickych pre cloveka
  • Vynimkou je slon, niektore zmeny v slonovi su sposobene nizkou kvalitou sekvencie. Ked pomocou nastroja Convert na hornej liste premapujete do najnovsej verzie ludskeho genomu (hg19), uvidite, ze aj v najnovsej verzii genomu slona su mnohe zmeny, nechyba tam uz vsak cast sekvencie, ako vo verzii pouzitej v hg18.

Proteíny

  • Toto cvičenie je z časti inšpirované stránkou [10]
  • Pozrieme sa na enzým Bis(5'-adenosyl)-triphosphatase
  • Nájdime ho na stránke http://www.uniprot.org/ pod názvom FHIT_HUMAN
    • O mnohých údajoch na stránke sme sa rozprávali na prednáške (GO kategórie, domény, sekundárna a 3D štruktúra)
    • Všimnime si Pfam doménu a pozrime si jej stránku, do akej super-rodiny (klanu) patrí?


  • Tento enzým je vzdialene podobný na enzým galactose-1-phosphate uridylyltransferase (GALT/GAL7)
  • Skúsme nájsť túto podobnosť v BLASTe: http://blast.ncbi.nlm.nih.gov/ v časti proteíny, zvoľme databázu Swissport, ako Query zadajme Accesion nášho proteínu P49789
  • GAL gén (konkrétne GAL7_HAEIN) sa nachádza medzi výsledkami, ale s vysokou E-value
  • Odložme si tieto výsledky a v novom okne spustíme PSI-BLAST, dve iterácie
  • Aká je E-value teraz? V čom sa líšia zarovnania?


  • Nájdime v Uniprote proteín GAL7_HAEIN.
  • Ak sa pozrieme na jeho Pfam domény, v akom sú klane?

HMM - pokračovanie, cvičenia pre informatikov

Opakovanie - Viterbiho algoritmus

Hľadáme najpravdepodobnejšiu postupnosť stavov A, teda \arg \max _{A}\Pr(A,S). Úlohu budeme riešiť dynamickým programovaním.

  • Podproblém V[i,u]: Pravdepodobnosť najpravdepodobnejšej cesty končiacej po i krokoch v stave u, pričom vygeneruje S_{1}S_{2}\dots S_{i}.
  • Rekurencia:
    • V[1,u]=\pi _{u}e_{{u,s_{1}}} (*)
    • V[i,u]=\max _{w}V[i-1,w]a_{{w,u}}e_{{u,x_{i}}} (**)

Algoritmus:

  1. Nainicializuj V[1,*] podľa (*)
  2. for i=2 to n=dĺžka reťazca
for u=1 to m=počet stavov
vypočítaj V[i,u] pomocou (**)
  1. Maximálne V[n,j] je pravdepodobnosť najpravdepodobnejšej cesty

Zložitosť: O(nm^{2})

Poznámka: pre dlhé sekvencie budú čísla V[i,u] veľmi malé a môže dôjsť k podtečeniu. V praxi teda používame zlogarimované hodnoty, namiesto násobenia súčet.


Inferencia - dopredný algoritmus

Aká je celková pravdepodobnosť, že vygenerujeme sekvenciu S, t.j. \sum _{A}Pr(A,S). Podobný algoritmus ako Viterbiho.

Podproblém F_{{i,u}}: pravdepodobnosť, že po i krokoch vygenerujeme s_{1},s_{2},\dots s_{i} a dostaneme sa do stavu u.

F_{{i,u}}=\Pr(A_{i}=u\wedge S_{1},S_{2},\dots ,S_{i})=\sum _{{A_{1},A_{2},\dots ,A_{i}=j}}\Pr(A_{1},A_{2},...,A_{i}\wedge S_{1},S_{2},...,S_{i})

F_{{1,u}}=\pi _{u}e_{{u,x_{1}}}

F_{{i,u}}=\sum _{v}F_{{i-1,v}}a_{{v,u}}e_{{u,x_{i}}}

Celková pravdepodobnosť \sum _{u}F_{{n,u}}

Trénovanie HMM

  • Stavový priestor + povolené prechody väčšinou ručne
  • Parametre (pravdepodobnosti prechodu, emisie a počiatočné) automaticky z trénovacích sekvencií
    • Ak máme anotované trénovacie sekvencie, jednoducho počítame frekvencie
    • Ak máme iba neanotované sekvencie, snažíme sa maximalizovať vierohodnosť trénovacích dát v modeli. Používajú sa heuristické iteratívne algoritmy, napr. Baum-Welchov, ktorý je verziou všeobecnejšieho algoritmu EM (expectation maximization).
  • Čím zložitejší model a viac parametrov máme, tým potrebujeme viac trénovacích dát, aby nedošlo k preučeniu, t.j. k situácii, keď model dobre zodpvedá nejakým zvláštnostiam trénovacích dát, nie však ďalším dátam.
  • Presnosť modelu testujeme na zvláštnych testovacích dátach, ktoré sme nepoužili na trénovanie.

Tvorba stavového priestoru modelu

  • Promótor + niekoľko eukaryotických génov
  • Repeaty v intrónoch: multiple path problem
  • Intrón má dĺžku aspoň 10

Zovšeobecnené HMM

  • Problém s modelovaním rozdelenia dĺžok - v základnom modeli je geometrické
  • Zovseobecnene HMM v jednom stave vygenerujú viac znakov
  • Viterbi alg. a spol budú pomalšie (kvadratické od dĺžky sekvencie)

Komparatívna genomika, cvičenia pre biológov

Na týchto cvičeniach sa budeme venovat trom statistickym temam suvisiacim s komparativnou genomikou, konkretne s detekciou pozitivneho vyberu. Tieto techniky sa vsak vyuzivaju aj v inych oblastiach a mozete sa s nimi casto stretnut v genomickych clankoch.

Likelihood ratio test

Opakovanie z prednasky:

  • Mame sekvenciu urciteho genu z niekolkych druhov (viacnasobne zarovnanie, fylogeneticky strom), chceme testovat, ci nanho posobi pozitivny vyber
  • Mame pravdepodobnostny model evolucie kodonov, ktory urcuje, ako casto nastavaju rozne typy mutacii v kodonoch [Goldman, Yang 1994]
    • Tato rychlost zavisi od toho, ako casto sa vyskytuju jednotlive kodony (zmena na castejsi kodon je pravdepodobnejsia), ci ide o tranziciu alebo tranzverziu (tranzicie su pravdepodobnejsie) a ci ide o synonymnu alebo nesynonymnu mutaciu.
    • Pomer nesynonymnych a synonymnych mutacii sa oznacuje omega
    • pri negativnom (purifikacnom) vybere je omega mensie ako 1, pri pozitivnom vacsie ako 1, pre neutralnej evolucii 1

Nas model je teda skrinka s páčkou, ktorou mozeme nastavit omega (a dalsie parametre, ktore teraz nie su podstatne)

  • skrinka ma gombik, ktory ked stlacime, vygeneruje nahodne zarovnanie na danom fylogenetickom strome vygenerovane s prislusnou hodnotou omega
  • s urcitou pravdepodbnostou to bude presne to nase zarovnanie X, tuto prabdepodobnost oznacme Pr(X|omega)
  • tato pravdepodobnost sa bude lisit pre rozne omega
  • pravdepodobnost ako funkcia parametre sa nazyva vierohodnost, likelihood

Jednoduche pouzitie modelu: vezmeme zarovnanie genu a odhadneme hodnotu omega, ktora najlepsie zodpoveda datam, pri ktorej bude vierohodnost najvacsia, maximalizujeme Pr(X|omega).

  • Problem je, ze pre mnohe hodnoty omega moze byt tato vierohodnost podobna
  • Zvolime omegu s najvacsou vierohodnostou, ale ta moze byt len o nepatrny kusok lepsia ako mnohe ine omegy

Za gen s pozitivnym vyberom chceme oznacit len taky gen, kde su vyynamne viac vierohodne hodnoty omega>1 nez tie <=1

  • Spocitame dve hodnoty vierhodnosti:
    • maximalnu vierohodnost ked omega<1 (oznacme ju LA)
    • maximlanu vierohodnost ked omega nie je obmedzena (oznacme ju LB)
  • Vzdy plati LA<=LB
  • Ak skutocne omega<1
    • LA a LB by mali byt zhruba rovnako velke
    • 2 log(LA/LB) by mala byt nahodna premenna z rozdelenia chi kvadrat s jednym stupnom volnosti
  • Spocitame teda, aka je pravdepodobnost, ze 2 log(LA/LB) by cisto nahodou mala hodnoptu taku, ako sme namerali alebo vyssiu (P-value)
  • Ak je P-value mala, tvrdime, ze gen je pod vplyvom pozitivneho vyberu.

Nadreprezentacia, obohatenie (enrichment)

  • Mnohe celogenomove analyzy nam daju zoznam genov, ktore sa v nejakom ukazovateli vyrazne lisia od priemeru.
  • Napriklad geny s pozitivnym vyberom v komparativnej genomike, geny vyrazne nadexprimovane alebo podexprimovane v microrarray experimentoch, geny regulovane urcitym transkripcnym faktorom a pod.
  • Niektore z nich budu preskumanejsie (znama funkcia a pod.), niektore mozu mat nejake udaje o funkcii prenesene z homologov a dalsie mozu byt uplne nezname
  • Co s takym zoznamom "zaujimavych genov"?
  • moznost 1: vybrat si z neho niekolko malo zaujimavych kandidatov a preskumat ich podrobnejsie (experimentalne alebo informaticky)
  • moznost 2: zistit, ci tato cela skupina je obohatena o geny urcitych skupin
    • napr. v pripade pozitivneho vyberu nam casto vychadzaju geny suvisiace s imunitou, lebo su pod velkym evolucnym tlakom od patogenov
    • takato analyza nam teda da informaciu o suvislostiach medzi roznymi procesmi
  • Priklad (Kosiol et al)
    • 16529 genov celkovo, 70 genov v GO kategorii innate immune response (0.4% zo vsetkych genov)
    • 400 genov s pozivnym vyberom, mame 8 genov s innate immune response (2% zo vsetky genov s poz. vyb.)
  • Celkovy pocet genov n, imunitnych ni, pozitivny vyber np, imunitnych s poz. vyb. nip.
  • Nulova hypoteza: geny v nasom zozname boli nahodne vybrane z celeho genomu, t.j. ak v celom genome je frekvencia imunitnych genov ni/n, vo vzorke velkosti np (geny s pozitivnym vyberom) ocakavame cca np * ni / n imunitnych genov.
    • v nasom priklade by sme ocakavali 1.7 genu s innate immune response, ale mame 8 (4.7xviac)
  • Aj v nulovej hypoteze vsak vzorka velkosti ni cisto nahodou moze obsahovat viac alebo menej takych genov.
  • Rozdelenie pravdepodbnosti nip je hypergeometricke, t.j. pravdepodobnost ze nip=x je {n_{i} \choose x}{n-n_{i} \choose n_{p}-x}/{n \choose n_{p}}
  • Aka je pravdepodobnost, ze v nulovej hypoteze bude nip tolko, kolko sme namerali alebo viac? (Chvost rozdelenia). V nasom pripade p-value 2.8e-4.
  • Hypergeometric or Fisher's exact test, pripadne ich aproximacie pre velke hodnoty v tabulke (chi^2 test) zisti, ci sa nasa tabulka velmi lisi od toho, co by sme ocakavali v nulovej hypoteze
  • Suvisiace clanky
    • Rivals I, Personnaz L, Taing L, Potier MC (February 2007). "Enrichment or depletion of a GO category within a class of genes: which test?". Bioinformatics (Oxford, England) 23 (4): 401–7. doi:10.1093/bioinformatics/btl633. PMID 17182697.
    • Huang da W, Sherman BT, Lempicki RA (January 2009). "Bioinformatics enrichment tools: paths toward the comprehensive functional analysis of large gene lists". Nucleic Acids Research 37 (1): 1–13. doi:10.1093/nar/gkn923. PMID 19033363.
  • Kod v statistickom systeme R na pocitanie hypergeometrickeho rozdelenia
> dhyper(0:70, 70, 16529-70, 400);
 [1]  1.793421e-01  3.126761e-01  2.679872e-01  1.505169e-01  6.231088e-02
 [6]  2.027586e-02  5.400796e-03  1.210955e-03  2.332580e-04  3.920215e-05
[11]  5.818723e-06  7.702558e-07  9.166688e-08  9.873221e-09  9.678760e-10
[16]  8.677204e-11  7.143849e-12  5.420388e-13  3.802134e-14  2.472342e-15
[21]  1.493876e-16  8.405488e-18  4.412274e-19  2.164351e-20  9.935473e-22
[26]  4.273662e-23  1.724446e-24  6.533742e-26  2.326517e-27  7.791092e-29
[31]  2.455307e-30  7.285339e-32  2.036140e-33  5.361856e-35  1.330660e-36
[36]  3.112566e-38  6.862558e-40  1.426089e-41  2.792792e-43  5.153006e-45
[41]  8.955105e-47  1.465159e-48  2.255667e-50  3.265636e-52  4.442631e-54
[46]  5.674366e-56  6.797781e-58  7.629501e-60  8.012033e-62  7.860866e-64
[51]  7.193798e-66  6.129013e-68  4.851139e-70  3.558526e-72  2.412561e-74
[56]  1.506983e-76  8.641725e-79  4.530590e-81  2.161126e-83  9.326620e-86
[61]  3.617279e-88  1.250737e-90  3.817900e-93  1.016417e-95  2.323667e-98
[66] 4.469699e-101 7.034762e-104 8.698702e-107 7.924236e-110 4.728201e-113
[71] 1.386176e-116
phyper(7, 70, 16529-70, 400, lower.tail=FALSE);

Multiple testing correction

  • V mnohych situaciach robime vela testov toho isteho typu, kazdy ma urcitu p-value
  • Napr. testujeme 1000 genov v genome na pozitivny vyber, zvolime tie, kde p-value <= 0.05
  • Alebo testujeme obohatenie 1000 kategorii v nejakej vzorke genov, zvolime tie, kde p-value <= 0.05
  • Problem: ak kazda z 1000 kategorii ma 5% sancu tam byt len nahodou, ocakavali by sme 50 cisto nahodnych pozitivnych vysledkov. Ak sme napr. nasli 100 pozitivnych vysledkov (obohatenych kategorii), cca polovica z nich je zle
  • Preto potrebujeme pri velkom mnozstve testov umelo znizit prah na p-value tak, aby nahodny sum netvoril velke percento nasich vysledkov
  • Toto sa vola multiple testing correction, je viac technik, napr. FDR (false discovery rate)

Populačná genomika, cvičenia pre informatikov

Haplotypovanie pomocou celočísleného lineárneho programovania

  • Obcas chceme najst optimalne riesenie nejakeho NP-tazkeho problemu
  • Jedna moznost je previest na iny NP tazky problem, pre ktory existuju pomerne dobre prakticke programy, napriklad integer linear programming (ILP)

Prakticke programy na NP tazke problemy

  • najdu optimalne riesenie, mnohe instancie zrataju v rozumnom case, ale mozu bezat aj velmi dlho
  • CPLEX [11] a Gurobi [12] komercne baliky na ILP, akademicka licencia zadarmo
  • SYMPHONY v projekte COIN-OR [13] open source
  • Minisat [14] open source SAT solver
  • Concorde TSP solver [15] - riesi problem obchodneho cestujuceho so symetrickymi vzdialenostami, zadarmo na akademicke ucely
    • Pre zaujimavost: TSP art [16]

ILP

Linearny program:

  • Mame realne premenne x_1...x_n, minimalizujeme nejaku ich linearnu kombinaciu \sum _{i}a_{i}x_{i}\, kde a_i su dane vahy.
  • Mame tiez niekolko podmienok v tvare linearnych rovnosti alebo nerovnosti, napr. \sum _{i}b_{i}x_{i}\leq c
  • Hladame teda hodnoty premennych, ktore minimalizuju cielovu sumu, ale pre ktore platia vsetky podmienky
  • Da sa riesit v polynomialnom case

Integer linear program

  • Program, v ktorom vsetky premenne musia mat celociselne hodnoty, alebo dokonca povolime oba hodnoty 0 a 1.
  • NP uplny problem

Ako zapisat (NP-tazke) problemy ako ILP

Knapsack

  • Problem: mame dane predmety s hmotnostami w_1..w_n a cenami c_1..c_n, ktore z nich vybrat, aby celkova hmotnost bola najviac T a cena bola co najvyssia?
  • Pouzijeme binarne premenne x_1..x_n, kde x_i = 1 prave vtedy ked sme zobrali i-ty predmet.
  • Chceme maximalizovat \sum _{i}c_{i}x_{i}\,
  • za podmienky ze \sum _{i}w_{i}x_{i}\leq T

Set cover:

  • Mame n mnozin S_1...S_n nad mnozinou {1...m}. Chceme vybrat co najmensiu pomnozinu A tak, aby kazde S_i obsahovalo aspon jeden prvok z A
  • Binarne premenne x_i=1 ak vyberieme i-ty prvok
  • Chceme minimalizovat \sum _{i}x_{i}\,
  • za podmienky, ze pre kazde i plati \sum _{{j\in S_{i}}}x_{j}\geq 1

Haplotypovanie

  • Haplotyp: hodnoty SNPov na jednom chromozome, vieme zapisat ako binarny retazec (všetko okrem SNPov vynecháme, 0: menšinová alela, 1: väčšinová alela)
  • Dve kópie chromozómu a preto dve kópie každého SNPu:
haplotyp 1:   001100010110
haplotyp 2:   001000011110
            --------------
genotyp:      002100021220
  • Bežnými metódami získame väčšinou iba genotyp, ktory ziskame scitanim haplotypov (pre heterozygotov ma hodnotu 1, pre homozygotov 0 alebo 2). Na prednaske a v biologickej literature sa casto pouziva opacne oznacenie, kde pre homozygotov pozuime ich hodnotu 0 alebo 1 a pre heterozygotov 2
  • Jeden genotyp vieme ziskat z viacerych kombinacii halpotypov, preto len z jedneho genotypu nevieme haplotypy jednoznacne urcit
haplotyp 1:   001100010110     haplotyp 1:   001100011110
haplotyp 2:   001000011110     haplotyp 2:   001000010110
              ------------                   ------------
genotyp:      002100021220     genotyp:      002100021220
  • ak mame vela genotypov a predpokladame, ze vznikli z malého množstva haplotypov (founding population) malým počtom mutácií, počet rôznych haplotypov v populácii by mal byť malý
    • toto plati pre krátky región, s malou pravdepodobnosťou rekombinácie

Haplotype inference by pure parsimony (HIPP)

  • Predpoklad: malý počet haplotypov v populácii
  • Vstup: veľa genotypov
  • Vystup: najmenší počet haplotypov, z ktorých je možné poskladať všetky vstupné genotypy.
Genotypy:     Riešenie 1:       Riešenie 2:
0121         (0010, 0111)       (0010, 0111)
1122         (0011, 1111)       (0111, 1011)  
1021         (0010, 1011)       (0010, 1011)
              ------------      ------------
              5 haplotypov      3 haplotypy
  • Nanešťastie HIPP je NP-ťažký problém

HIPP ako celočíselné lineárne programovanie

  • Z clanku Gusfield CPM 2003
  • Dovolíme iba celočíselné premenné s hodnotami 0 alebo 1
  • Genotyp g_{1}=0121 môže mať dve rôzne riešenia:
    1. (0010,0111) alebo
    2. (0011,0110)
  • y_{{1,1}}=1 práve ak pre g_{1} použijeme riešenie 1
  • y_{{1,2}}=1 práve ak pre g_{1} použijeme riešenie 2
  • Musi platit y_{{1,1}}+y_{{1,2}}=1
  • Pre kazdy genotyp g a pre kazdu dvojicu haplotov j, ktore sa skladaju do g mame premennu y_{{g,i}}, ktora je jedna prave vtedy, ak dvojica i je riesenim.
  • Pre každý možný haplotyp h premennú x_{h}
    • x_{h}=1, práve ak sa haplotyp h použije aspoň v jednom genotype
    • y_{{1,1}}\leq x_{{0010}},\quad y_{{1,1}}\leq x_{{0111}},
    • y_{{1,2}}\leq x_{{0110}},\quad y_{{1,2}}\leq x_{{0011}}
  • Počet použitých haplotypov v danom riešení: \sum x_{h}

Príklad pre 0121,1122,1021:

  • Minimalizuj \sum x_{h} za podmienok:
  • y_{{1,1}}+y_{{1,2}}=1
  • y_{{1,1}}\leq x_{{0010}},\quad y_{{1,1}}\leq x_{{0111}}
  • y_{{1,2}}\leq x_{{0110}},\quad y_{{1,2}}\leq x_{{0011}}
  • y_{{2,1}}+y_{{2,2}}=1
  • y_{{2,1}}\leq x_{{0011}},\quad y_{{2,1}}\leq x_{{1111}}
  • y_{{2,2}}\leq x_{{0111}},\quad y_{{2,2}}\leq x_{{1011}}
  • y_{{3,1}}+y_{{3,2}}=1
  • y_{{3,1}}\leq x_{{0010}},\quad y_{{3,1}}\leq x_{{1011}}
  • y_{{3,2}}\leq x_{{0011}},\quad y_{{3,2}}\leq x_{{1010}}
  • Pocet premennych je v najhorsom pripade exponencialny od dlzky genotypov!

Iná formulácia ako ILP (nerobili sme)

Existuju aj celociselne programy s polynomialnym poctom premennych a nerovnosti (Halldorsson et al 2004), ale casto ich riesenie trva dlhsie (Brown and Harrower 2006)

  • Pre n genotypov mame 2n haplotypov, par haplotypov pre kazdy genotyp
  • Genotyp prepíšeme ako sumu halptypov, t.j. heterozygoti budu 1 (0+1) a homozygoti 0 a 2
  • Premenna y_{{i,k}} reprezentuje hodnotu haplotypu i na pozicii k (0 alebo 1)
  • Musi splnat rovnost y_{{2i-1,k}}+y_{{2i,k}}=g_{i}[k] t.j. sa rovna genotypu i na pozicii k
  • Premenna d_{{i,j}} je 1 prave vtedy ked haplotypy i a j sa nerovnaju
  • Toto je d_{{i,j}}\geq y_{{i,k}}-y_{{j,k}} a d_{{i,j}}\geq y_{{j,k}}-y_{{i,k}}
  • Premenna x_{{i}} je jedna, ak sa haplotyp lisi od vsetkych predchadzajucich haplotypov {1,2,...,i-1}
  • x_{i}\geq 2-i+\sum _{{j=1}}^{{i-1}}d_{{j,i}} (ak su vsetky d_{{i,j}}=1, prava strana je 1, teda aj x_i musi byt 1. Ak je niektore x_i 0, prava strana <=0, teda x_i moze byt hocico)
  • Minimalizujeme sucet \sum _{{i=1}}^{{2n}}x_{i}

Bezkontextove gramatiky

Populačná genomika a RNA štruktúra, cvičenia pre biológov

RNA

Nussinovov algoritmus

Z cvičných príkladov na skúšku

  • Vyplnte maticu dynamického programovania (Nussinovov algoritmus) pre nájdenie najväčšieho počtu dobre uzátvorkovaných spárovaných báz v RNA sekvencii GAACUUCACUGA (dovoľujeme len komplementárne páry A-U, C-G) a nakreslite sekundárnu štruktúru, ktorú algoritmus našiel.
 G A A C U U C A C U G A
 0 0 0 1 1 2 3 3 3 4 4 4  G
   0 0 0 1 2 2 2 2 3 4 4  A
     0 0 1 1 1 2 2 2 3 4  A
       0 0 0 0 1 1 1 2 3  C
         0 0 0 1 1 1 2 3  U
           0 0 1 1 1 2 3  U
             0 0 0 1 2 2  C
               0 0 1 1 1  A
                 0 0 1 1  C
                   0 0 1  U
                     0 0  G
                       0  A

Bezkontextove gramatiky

  • Na modelovanie struktury RNA sa pouzivaju stochasticke bezkontextove gramatiky
  • My si teraz ukazeme bezkontextove gramatiky, ktore nemaju pravdepodobnosti
  • Zaviedol Noam Chomsky v lingvistike 50-te roky 20. storocia, tiez dolezite v informatike
  • Gramatika
    • Dva typy symbolov: terminaly (male pismena), neterminaly (velke pismena)
    • Pravidla prepisujuce neterminal na retazec terminalov a neterminalov (moze byt aj prazdny retazec, ktory oznacujeme epsilon)
    • Neterminal S je "startovaci"
    • Priklad: S->aSb, S->epsilon (piseme aj skratene S->aSb|epsilon)
  • Pouzitie gramatiky na generovanie retazcov
    • Zacneme so startovacim neterminalom S
    • V kazdom kroku prepiseme najlavejsi neterminal podla niektoreho pravidla
    • Skoncime, ked nezostanu ziadne neterminaly
  • Priklad: S->aSb->aaSbb->aaaSbbb->epsilon
    • Ake vsetky slova vie tato gramatika generovat?
    • V tvare aa...abb...b s rovnakym poctom acok a bciek (informatici pisu a^kb^k)
  • Zostavte gramatiku na slova typu aa..abb..b kde acok je rovnako alebo viac ako bcok
    • S->aSb|aS|epsilon
  • zostavte gramatiku pre slova toho isteho typu, kde acok je viac ako bcok
    • S->aSb|aT T->aT|epsilon (alebo S->aSb|aS|a)
  • uvazujme dobre uzatvorkovane vyrazy zo zatvoriek (,),[,] napr. [()()([])] je dobre uzatvorkovany, ale [(]) nie je.
    • S->SS|(S)|[S]|epsilon
    • S->[S]->[SS]->[SSS]->[(S)SS]->[()SS]->[()(S)S]->[()()S]->[()()(S)]->[()()([S])]->[()()([])]
    • Parsovanie retazca pomocou gramatiky: urcit, ako mohol byt retazec vygenerovany pomocou pravidiel
    • Tato gramatika nam pomoze urcit, ktora zatvorka patri ku ktorej: tie, ktore boli vygenerovane v jednom kroku
  • Zostavte gramatiku na DNA palindromy, t.j. sekvencie, ktore zozadu po skomplementovani baz daju to iste, ako napr. GATC
    • S->gSc|cSg|aSt|tSa|epsilon
  • Zostavte gramatiku na slova s rovnakym poctom acok a bcok v lubovolnom poradi
    • S->epsilon|aSbS|bSaS
    • preco vie vygenerovat vsetky take retazce?

Populacna genomika

  • vynechana cast prednasky o populacnej strukture, strany 23-26
  • vynechana cast prednasky o indeloch: strana 28

Prakticke cvicenie

RNA

  • Znama databaza rodin RNA genov je Rfam
  • Najdite si v nej rodinu RF00015 (U4 spliceosomal RNA)
  • V casti Secondary structure si mozete pozriet obrazky farebne kodovane podla roznych kriterii
    • Skuste pochopit, co jednotlive obrazky a ich farby znamenaju
  • Jedna z mnohych ludskych kopii je tato:
AGCTTTGCGCAGTGGCAGTATCGTAGCCAATGAGGTTTATCCGAGGCGCG
ATTATTGCTAATTGAAAACTTTTCCCAATACCCCGCCATGACGACTTGAA
ATATAGTCGGCATTGGCAATTTTTGACAGTCTCTACGGAGA
  • Skuste ju najst v ludskom genome verzia hg18 nastrojom BLAT v UCSC genome browseri
  • Pozrite si tracky Mapability, Ensembl genes, conservation, Repeats v jej okoli
  • Pozrite si track "CSHL Sm RNA-seq" ktory obsahuje RNASeq kratky RNA z roznych casti buniek, zapnite si v jeho nastaveniach aj zobrazenie RNA z jadra (nucleus)
  • Zadajte sekvenciu na RNAfold serveri [17]
  • Ak vypocet dlho trva, pozrite si vysledok tu
  • Podoba sa na strukturu zobrazenu v Rfame? v com sa lisi?

Populacna genomika v UCSC genome browseri

  • Verzia hg18 na UCSC genome browseri ma viacero trackov tykajucich sa populacnej genomiky a polymorfizmov
  • V casti Phenotype and Disease Associations si zapnite GAD view
  • V casti Variation and Repeats si zapnite
    • HGDP Allele Freq na Pack (po kliknuti na SNP zobrazi mapu sveta s distribuciou alel)
    • "HapMap LD Phased" na Full
    • "DGV Struct Var" na Pack
  • Pozrite si napriklad region chr2:164,862-426,468
  • Track Genome Variants obsahuje genomy niekolkych ludi, napr Jim Watsona
  • Takisto sa da pozriet genom ludi z jaskyne Denisova a Neandertalcov
  • Browser diverzity u S.cerevisae: [18]

Zhlukovanie a populačná genomika, cvičenia pre informatikov

Zhlukovanie

Príklad dvoch zhlukov

Využitie:

  • taggovanie nových príspevkov na blogu pomocou taggov príspektov, s ktorými je nový príspevok v zhluku
  • news.google.com - zhlukovanie správ podľa spoločnej témy
  • počítačová grafika
    • segmentácia obrázkov - rozdelenie obrázka na "rozumné" časti
    • zníženie počet farieb
  • výpočtová biológia - funkčné skupiny génov
  • detekcia anomálií - napr. testovanie motorov do lietadiel (predpokladám, že väčšina vyrobených motorov je dobrá, na základe meraní motory pozhlukujem a tie mimo hlavného vyhlásim za potencionálne závadné)


K-Means

Znázornenie vzdialenosti bodov od príslušných centroidov
Vstup: Body x_{1},x_{2},...,x_{t},{\mbox{ kde }}(x_{i}\in R^{n}) a počet zhlukov k
Výstup: Rozdelenie do k zhlukov takéto:
c_{1},c_{2},...,c_{t}\;(1\leq c_{i}\leq k) - priradenie bodu k zhluku
\mu _{1},\mu _{2},...,\mu _{k}\;(\mu _{i}\in R^{n}) - centrá každého zhluku centroidy


Úloha: minimalizovať chybovú funkciu J(\mu ,c)=\sum _{{i=1}}^{k}\sum _{{j:c_{j}=i}}{\big \|}x_{j}-\mu _{i}{\big \|}_{2}^{2} (inými slovami, počítam ako ďaleko (Euklidovská vzdialenosť) je každý bod od svojho centroidu?)


Algoritmus

  1. inicializácia: náhodne vyber k centroidov \ \mu _{1},\mu _{2},...,\mu _{k}
  2. opakuj až do konvergencie:
    priraď každý bod najbližšiemu centroidu: c_{i}=\operatorname {arg_{j}\,min}{\big \|}x_{i}-\mu _{j}{\big \|}_{2}
    vypočítaj nové centroidy: \mu _{j}=\operatorname {avg_{{i:c_{i}=j}}}x_{i} (spriemerujem všetky body v jednom zhluku)


Gibbs sampling, Gibbsovo vzorkovanie vseobecne

  • Cielove rozdelenie ma n premennych \pi (x_{1},...x_{n})
  • V kazdom kroku vzorkujeme jednu premennu z podmienenej pravdepodobnosti \Pr(x_{i}|x_{1},\dots ,x_{{i-1}},x_{{i+1}},\dots x_{n})
  • Ostatne hodnoty nechame rovnake ako v predchadzajucom kroku
  • Premennu x_{i} zvolime nahodne alebo periodicky i=1,2,\dots ,n
  • Vzorky nie su nezavisle, no vieme dokazat nieco o konvergencii k \pi (pozri nizsie)

Markov chain Monte Carlo MCMC

  • Chceme generovať náhodné vzorky z nejakeho cieloveho rozdelenia \pi , ale toto rozdelenie prilis zlozite.
  • Zostavime ergodicky Markovov retazec, ktoreho stacionarne rozdelenie je rozdelenie \pi , tak aby sme efektivne vedeli vzorkovat X_{{t}} ak vieme X_{{t-1}}.
  • Ak zacneme z lubovolneho bodu, po urcitom case t rozdelenie X_{{t}} priblizne \pi
  • Ale za sebou iduce vzorky nie su nezavisle!
  • Vieme vsak odhadovat ocakavane hodnoty roznych velicin {\frac  {1}{t}}\sum _{{i=1}}^{t}f(X_{t}) konverguje k E_{\pi }[f(X)]

Určovanie štruktúry populácie

  • Majme N haploidnych jedincov (lahko sa rozsiri aj na genotypy pri diploidnych jedincoch), L genotypovanych SNPov, SNPy navzajom nezavisle (v stave LE), pocet populacii K
  • X[i,l] - haplototyp jedinca i v SNPe l (zvacsa binarna premenna)
  • Z[i,l] - z ktorej subpopulacie pochadza alela X[i,l] (cislo z {1...k})
  • Q[i,k] - aka cast genomu jedinca i pochadza z populacie k (realne cislo)
  • P[k,l,a] - frekvencia alely a v SNPe l v populacii k (realne cislo)
  • P pochadza z nejakeho apriorneho rozdelenia, napr. rovnomerne rozdelenie, Dirichletovo rozdelenie, nezavisle pre kazde k,l
  • Podobne Q (nezavisle pre kazde i)
  • Pr(Z[i,l] = k|P,Q) = Q[i,k] a Pr(Z|P,Q) je sucin takychto clenov
  • Pr(X[i,l] = a|Z,P,Q) = P[Z[i,l],l,a] a Pr(X|Z,P,Q) je sucin takychto clenov (SNPy nezavisle)
  • To nam urcuje Pr(P,Q,Z,X) = Pr(P)Pr(Q)Pr(Z|P,Q)Pr(X|Z,P,Q)
  • My chceme Pr(Q|X)

Algoritmus Gibbsovho vzorkovania:

  • Zvol pociatocne Z^{{(0)}}
  • Opakuj:
    • Zvol nahodne P^{{(m)}},Q^{{(m)}} z Pr(P,Q|X,Z^{{(m-1)}})
    • Zvol nahodne Z^{{(m)}} z Pr(Z|X,P^{{(m)}},Q^{{(m)}})
  • Vzorce v clanku
  • Mierna komplikacia: ak aproximujeme E[Q[i,k]|X] pomocou priemeru Q^{{(m)}}, mali by sme dostat 1/K kvoli symetrii (K! symetrickych rieseni)
  • Nastastie sa Gibbsovo vzorkovanie malokedy presuva medzi roznymi oznackovaniami tych istych populacii
  • Inak musime pouzit nejako preznacit populacie vo vysledku aby boli ekvivalentne v roznych vzorkach

Expresia génov, cvičenia pre biológov

Zhlukovanie

Príklad dvoch zhlukov

Využitie:

  • taggovanie nových príspevkov na blogu pomocou taggov príspektov, s ktorými je nový príspevok v zhluku
  • news.google.com - zhlukovanie správ podľa spoločnej témy
  • počítačová grafika
    • segmentácia obrázkov - rozdelenie obrázka na "rozumné" časti
    • zníženie počet farieb
  • výpočtová biológia - funkčné skupiny génov
  • detekcia anomálií - napr. testovanie motorov do lietadiel (predpokladám, že väčšina vyrobených motorov je dobrá, na základe meraní motory pozhlukujem a tie mimo hlavného vyhlásim za potencionálne závadné)


K-Means

Znázornenie vzdialenosti bodov od príslušných centroidov
Vstup: Body x_{1},x_{2},...,x_{t},{\mbox{ kde }}(x_{i}\in R^{n}) a počet zhlukov k
Výstup: Rozdelenie do k zhlukov takéto:
c_{1},c_{2},...,c_{t}\;(1\leq c_{i}\leq k) - priradenie bodu k zhluku
\mu _{1},\mu _{2},...,\mu _{k}\;(\mu _{i}\in R^{n}) - centrá každého zhluku centroidy


Úloha: minimalizovať chybovú funkciu J(\mu ,c)=\sum _{{i=1}}^{k}\sum _{{j:c_{j}=i}}{\big \|}x_{j}-\mu _{i}{\big \|}_{2}^{2} (inými slovami, počítam ako ďaleko (Euklidovská vzdialenosť) je každý bod od svojho centroidu?)


Algoritmus

  1. inicializácia: náhodne vyber k centroidov \ \mu _{1},\mu _{2},...,\mu _{k}
  2. opakuj až do konvergencie:
    priraď každý bod najbližšiemu centroidu: c_{i}=\operatorname {arg_{j}\,min}{\big \|}x_{i}-\mu _{j}{\big \|}_{2}
    vypočítaj nové centroidy: \mu _{j}=\operatorname {avg_{{i:c_{i}=j}}}x_{i} (spriemerujem všetky body v jednom zhluku)

Normalizacia dat

Prakticke cvicenie

Data o expresii ludskych genov v roznych tkanivach a podobne v UCSC genome browseri

  • Chodte na stranku http://genome.ucsc.edu/, najdite PTPRZ1 gen v ludskom genome
  • Zvolte Gene Sort, sort by nechajme Expression (GNF Atlas 2), v configure nechajme iba name, search PTPRZ1, output text
  • http://biit.cs.ut.ee/gprofiler/ mena genov skopirujme do policka Query, stlacte g:Profile!
  • Co by sme na zaklade nadreprezentovanych kategorii usudzovali o tomto gene?
  • Najdite tento gen v Uniprote (http://www.uniprot.org/), potvrdzuje nase domnienky?
  • Vratme sa do do genome browsera, najdime si PTPRZ1 gen v genome
  • V browseri su rozne tracky tykajuce sa expresie, napr. GNF Atlas 2. Precitajte si, co je v tomto tracku zobrazene, zapnite si ho a pozrite si expresiu okolitych genov okolo PTPRZ1
  • Kliknite na gen v tracku UCSC known genes. V tabulke uvodite zase prehlad expresie v roznych tkanivach (podla GNF Atlasu), linku na Visigene.

NCBI Gene Expression Omnibus http://www.ncbi.nlm.nih.gov/geo/

  • Databaza gene expression dat na NCBI
  • Do okienka Data sets zadajme GDS2925
  • Mali by sme dostat (Various weak organic acids effect on anaerobic yeast chemostat cultures)
  • Mozeme si pozriet zakladne udaje, napr. citation, platform
  • Link expression profiles nam zobrazi grafy pre rozne geny
  • Pri kazdom profile mozeme kliknut na profile neighbors, aby sme videli geny s podobnym profilom
  • Data analysis tools, cast Cluster heatmaps, K-means, skuste rozne pocty clustrov

MEME

  • Vazobne miesta transkripcnych faktorov sa casto reprezentuju ako sekvencne motivy
  • Ak mame skupinu sekvencii, mozeme hladat motiv, ktory maju spolocny
  • Znamy program na tento problem je MEME
  • Chodte na stranku http://meme.nbcr.net/
  • Zvolte nastroj MEME a do okienka "actual sequences" zadajte tieto sekvencie
  • Pozrite si ostatne nastavenia. Co asi robia?
  • Ak server pocita dlho, mozete si pozriet vysledky tu

RNA štruktúra a zhrnutie semestra, cvičenia pre informatikov

RNA struktura

  • Opakovanie Nussinovho algoritmu
  • Rozsirenie na pripad, ze chceme davat vyssie skore "stackovanym parom"

Zhrnutie semestra

Pravdepodobnostné modely

  • Skryté Markovove modely (hľadanie génov, konzervovaných oblastí, fylogenetické HMM, profilové HMM)
  • Fylogenetické stromy a substitučné modely
  • Stochastické bezkontextové gramatiky
  • Gibbsovo vzorkovanie
  • Metóda maximálnej vierohodnosti

Štatistické metódy

  • Pojem štatistickej významnosti
  • E-value a P-value
  • Test na pozitívny výber
  • Linkage disequilibrium
  • Mapovanie asociácií

Precvičenie dynamického programovania

  • Zarovnávanie sekvencií, viacero variantov (globálne, lokálne, afínne medzery)
  • Skryté Markovove modely (Viterbiho algoritmus)
  • Výpočty na stromoch (úspornosť, vierohodnosť - Felsensteinov algoritmus)
  • Hmotnostná spektrometria (MS/MS)
  • Sekundárna štruktúra RNA

Iné

  • Integer linear programming
  • deBruijnove grafy
  • Zhlukovanie a klasifikácia

Ako modelovať problémy reálneho sveta

  • Rozmyslieť si, aké máme dáta, čo by sme chceli ako výsledok
  • Sformulovať ako informatický problém (napr. optimalizácia nejakého skóre)
  • Pravdepodobnostné modely nám často dovolia zvoliť skórovaciu schému systematickým spôsobom
  • Výsledný problém často NP ťažký
    • Heuristiky, aproximačne algoritmy
    • ILP a iné techniky na presné riešenie
    • Nedá sa problém trochu preformulovať?
  • Testovanie: sú vypočtové výsledky relevantné v danej doméne? (bola formulácia dostatočne realistická?)

Ďalšie predmety

Motívy a zhrnutie semestra, cvičenia pre biológov

Hľadanie motívov

Opakovanie z prednasky

  • Hladame vazobne miesta TF
  • Reprezentujeme ako sekvencne motivy (vo forme konsenzus retazcov, regularnych vyrazov alebo PSSM)
  • Dva bioinformaticke problemy:
  • Hladanie novych motivov
    • hladame motiv, ktory sa opakuje vo vstupnych sekvenciach
    • sekvencie ziskame pomocou ChIP, alebo ako promotery koregulovanych genov
    • vypoctovo narocny problem
    • nasli sme to, co sme chceli?
  • Hladanie novych vyskytov znameho motivu
    • vypoctovo jednoduchy problem
    • zvycajne najdeme vela vyskytov, nie vsetky biologicky relevantne

Programy na pracu s motivmi

  • Hladanie vyskytov znamych motivov
    • Nejake programy na pracu s motivmi najdete na stranke http://mobyle.pasteur.fr/
    • dreg, preg
    • pftools, sig
    • scan_for_matches
    • prophet, profit (matice)
    • jaspscan (jaspar db), tfscan (stara verzia transfac)
  • Hladanie novych motivov
    • Znamy program na hladanie novych motivov, webserver MEME http://meme.nbcr.net/ (minule na cviceni pro pocitaci)

Komparativne hladanie motivov

  • Z vela vyskytov motivu chceme najst tie skutocne funkcne
  • Purifikacny vyber: funkcne sekvencie sa menia pomalsie ako zvysok genomu
  • Toto by malo platit aj pre vazobne miesta TF
  • Chceme teda najst vyskyty motivu zachovane aj v pribuznych organizmoch
  • Mala fylogeneticka vzdialenost (napr. clovek-simpanz): mala sanca, ze bude mutacia v kratkom okne, nie je mozne statisticky rozpoznat "zachovane" sekvencie pre kratke motivy
  • Velka fylogeneticka vzdialenost: nekodujuce oblasti tazko zarovnatelne, takze aj homologicke vyskyty motivu nebudu zarovnane (lebo su kratke)
  • Ako zostavujeme celogenomove zarovnania:
    • najdeme signifikantne lokalne zarovnania (mala e-value)
    • tie spajame dokopy do retazi a sieti
    • ak je jeden kratky motiv uprostred neutralne sa vyvijajucej DNA, nebude mat signifikantne lokalne zarovnanie
  • Mnohe programy dovoluju posun motivu v urcitom okne zarovnania
  • Priklad: Kheradpour P, Stark A, Roy S, Kellis M (December 2007). "Reliable prediction of regulator targets using 12 Drosophila genomes". Genome Res. 17 (12): 1919–31. doi:10.1101/gr.7090407. PMID 17989251.
    • Drosophila melanogaster ako referencny genom
    • pre kazdy vyskyt motivu hladaj v ostatnych genomoch v urcitom okne
    • spocitaj v akom percente stromu najdene vyskyty
    • spocitaj p-value pomocou motivov s nahodne poprehadzovanymi stlpcami

Zhrnutie semestra

Tvorba bioinformatického nástroja:

  • Sformulujeme biologické ciele (aké máme dáta, aké typy otázok sa chceme pýtať)
  • Sformulujeme informaticky/matematicky, napr. ako pravdepodobnostný model, dostaneme informatické zadanie problému, v ktorom je presne daný vzťah medzi vstupom a želaným výstupom (napr. nájst zarovnanie s maximálnym skóre v určitej skórovacej schéme)
  • Hľadáme efektívne (rýchle) algoritmy na riešenie informatického problému
  • Ak sa nám nepodarí nájsť dosť rýchly algoritmus, použijeme heuristiky, ktoré dávaju približné riešenia
  • Testujeme na reálnych dátach, či sú výsledky biologicky správne (či bol model dobre zvolený, či heuristiky dobre fungujú)

Použitie bioinformatického nástroja:

  • Sformulujeme biologické ciele (aké máme dáta, aké typy otázok sa chceme pýtať)
  • Na základe nášho prehľadu v bioinformatike porozmýšľame, aký typ nástroja, resp. ich kombinácia by nám mohli pomôcť
  • Alebo hľadáme v literatúre nástroj na typ problému, s ktorým sme sa ešte nestretli
  • Konkrétne nástroje a webstránky sa rýchlo menia, celkové princípy sa menia pomalšie
  • Pre správne nastavenie parametrov a interpretovanie výsledkov je dôležité poznať model, predpoklady, ktoré autori nástroja použili, resp. zdroj dát v príslušnej databáze

Prehľad preberaných tém:

  • Zostavovanie genómov (najkratšie spoločné nadslovo, heuristiky, analýza pokrytia)
  • Zarovnania (skórovanie ako pravdepodobnostný model, dynamické programovanie, heuristické zarovnávanie, E-value, lokálne vs. globálne, párove vs. viacnásobné, celogenómové)
  • Evolúcia (pravdepodobnostné modely substitúcií, metóda maximálnej vierohodnosti, metóda maximalnej úspornosti, metóda spájania susedov)
  • Komparatívna genomika (hľadanie konzervovaných oblastí, komparatívne hľadanie génov, pozitívny výber, fylogenetické HMM, kodónové matice)
  • Populačná genetika (genetický drift, mapovanie asociácií, linkage disequilibrium, štruktúra populácie)
  • Hľadanie génov (skryté Markovove modely)
  • Proteíny (predikcia štruktúry, profily a profilové HMM rodín/domén, protein threading)
  • Expresia génov (zhlukovanie, klasifikácia, regulačné siete)
  • Transkripčné faktory (hľadanie výskytov známych motívov, hľadanie nových motívov, regulárne výrazy, profily)
  • RNA štruktúra (dynamické programovanie, stochastické bezkontextové gramatiky)

Dalšie predmety:

Články na journal club

3. Kent WJ, Baertsch R, Hinrichs A, Miller W, Haussler D (2003). "Evolution's cauldron: duplication, deletion, and rearrangement in the mouse and human genomes.". Proc Natl Acad Sci U S A 100 (20): 11484-9. doi:10.1073/pnas.1932072100. PMID 14500911. Čítajú Bobák, Hudec, Višňovec, Lorincz, Juríková, Šelc

5. Wapinski I, Pfeffer A, Friedman N, Regev A (2007). "Natural history and evolutionary principles of gene duplication in fungi". Nature 449 (7158): 54-61. doi:10.1038/nature06107. PMID 17805289. Čítajú Gašpierik, Kokoška, Zdechovan, Dlugoš, Zimmerman, Harmady, Mandli

6. Clamp M, Fry B, Kamal M, Xie X, Cuff J, Lin MF et al. (2007). "Distinguishing protein-coding and noncoding genes in the human genome.". Proc Natl Acad Sci U S A 104 (49): 19428-33. doi:10.1073/pnas.0709013104. PMID 18040051. Čítajú Ďuricová, Cebecauer, Sabo, Kubaščíková, Beke, Durkaj, Boža

8. Harbison CT, Gordon DB, Lee TI, Rinaldi NJ, Macisaac KD, Danford TW et al. (2004). "Transcriptional regulatory code of a eukaryotic genome.". Nature 431 (7004): 99-104. doi:10.1038/nature02800. PMID 15343339. Čítajú Magyar, Krásna, Brázdovič, Nosál, Maurer

10. Sharan R, Suthram S, Kelley RM, Kuhn T, McCuine S, Uetz P et al. (2005). "Conserved patterns of protein interaction in multiple species.". Proc Natl Acad Sci U S A 102 (6): 1974-9. doi:10.1073/pnas.0409522102. PMID 15687504. Čítajú Slezáková, Kováč, Kéry, Duník, Kruľ

11. Andronescu M, Fejes AP, Hutter F, Hoos HH, Condon A (2004). "A new algorithm for RNA secondary structure design.". J Mol Biol 336 (3): 607-24. doi:10.1016/j.jmb.2003.12.041. PMID 15095976. Čítajú Cillingová, Ridzik, Sarič, Kislan, Lang, Kaniansky

12. Hernandez RD, Hubisz MJ, Wheeler DA, Smith DG, Ferguson B, Rogers J et al. (2007). "Demographic histories and patterns of linkage disequilibrium in Chinese and Indian rhesus macaques.". Science 316 (5822): 240-3. doi:10.1126/science.1140462. PMID 17431170. Čítajú Horanský, Litvaj, Kostolányi, Jančigová, Šándorová

Ukážkové príklady na skúšku

Aspoň polovicu bodov na skúške bude možné pre biológov aj informatikov možné získať z príkladov typu uvedeného nižšie. Samozrejme, na skúške nepoužijeme všetky tieto príklady a konkrétne reťazce, čísla, stromy a pod. budú iné. Na skúške máte dovolené používať kalkulačku s bežnými matematickými funkciami (nie však zložitejšie výpočtové zariadenia) a ťahák na dvoch listoch formátu A4, ktoré môžu byť z oboch strán popísané alebo potlačené ľubovoľným obsahom. Ostatné príklady na skúške budú prekvapením.

  • Nájdite najkratšie spoločné nadslovo reťazcov GACAATAA, ATAACAC, GTATA, TAATTGTA.
  • Vyplňte maticu dynamického programovania pre lokálne (resp. globálne) zarovnanie reťazcov TACGT a CAGGATT, pričom zhodu skórujeme ako +3, nezhodu -1, medzeru -2. Napíšte aj optimálne zarovnanie, ktoré ste takto našli.
  • Spočítaje skóre nižšieuvedeného zarovnania, pričom použijete skórovaciu maticu uvedenú nižšie, začatie medzery -5, rozšírenie medzery o jednu ďalšiu bázu -2. Nájdite globálne zarovnanie s vyšším skóre pre tieto dve sekvencie (netreba nájsť optimálne zarovnanie; pri hľadaní môžete použiť ľubovoľný postup alebo úvahu) a spočítajte aj skóre vášho nového zarovnania.
Zarovnanie:                             Matica:
ATAGTTTAA                                 A   C   G   T
A-GGG--AA                             A   2  -2  -1  -2
                                      C  -2   1  -2  -1    
                                      G  -1  -2   1  -2
                                      T  -2  -1  -2   2
  • Uvažujme BLASTn, ktorý začína z jadier veľkosti w=3. Koľko jadier nájde pri porovnávaní sekvencií GATTACGGAT a CAGGATT? Ktoré to budú?
  • Pre model na strane 16 prednášky o hľadaní génov (bol by v zadaní) spočítajte pravdepodobnosť vygenerovania báz AGT a stavov modrý,červený,modrý.
  • Na strome na strane 6 v prednáške o evolúcii (bol by v zadaní) nájdite najúspornejšie ancestrálne znaky pre stĺpec zarovnania TTAAA (v poradí glum, hobit, človek, elf, ork). Nemusíte použiť algoritmy z prednášky resp. cvičení.
  • Nájdite najúspornejší strom pre zarovnanie uvedené nižšie. Aká je jeho cena (koľko mutácií je nutných na vysvetlenie týchto sekvencií)? Odpoveď môžete spočítať ľubovoľným spôsobom.
vtáčik biely       ACAACGTCT
vtáčik čierny      TCTGAATCA
vtáčik sivý        TGTGAAAGA
vtáčik modrý       ACTACGTCT
vtáčik zelený      TGTGAAAGA
  • Uvažujme maticu vzdialeností uvedenú nižšie. Ktorú dvojicu vrcholov spojí metóda spájania susedov ako prvú a aká bude nová matica po spojení?
                biely   čierny  sivý   modrý
vtáčik biely      0       5       7       4
vtáčik čierny     5       0       8       5
vtáčik sivý       7       8       0       5
vtáčik modrý      4       5       5       0
  • Uvažujme strom ako na strane 6 v prednáške o evolúcii (bol by v zadaní), pričom každá hrana má rovnakú dĺžku a pravdepodobnosť každej mutácie na jednej hrane je 0.1 (t.j. napr. Pr(C|A,t)=0.1) a teda pravdepodobnosť zachovania tej istej bázy je 0.7, pravdepodobnosť každej bázy v koreni je 0.25. Aká je pravdepodobnosť, že v listoch dostaneme TTAAA a vo vnútorných vrcholoch samé Áčka? Nájdite priradenie ancestrálnych báz vo vnútorných vrcholoch, ktoré má väčšiu pravdepodobnosť a spočítajte, aká tá pravdepodobnosť je (nemusíte nájsť najlepšie možné priradenie).
  • Zostavte profil (PSSM) pre zarovnanie sekvencií uvedené nižšie, pričom predpokladáme, že v celej databáze A tvorí 60% a T 40% všetkých sekvencií (iné bázy neuvažujeme). Použite prirodzený logaritmus (ln) a nepoužívajte pseudocounty.
AATA
TATA
TAAA
TTAT
TTAA
  • Uvažujme microarray experimenty pre 5 génov. Medzi každými dvomi profilmi sme spočítali vzdialenosť (napr. pomocou Pearsonovho korelačného koeficientu) a dostali sme tabuľku vzdialeností uvedenú nižšie. Nájdite hierarchické zhlukovanie týchto génov, pričom vzdialenosť medzi dvoma zhlukmi (clustrami) bude vzdialenosť najbližších génov v nich.
         A    B    C    D    E
gén A    0   0.6  0.1  0.3  0.7    
gén B   0.6   0   0.5  0.5  0.4
gén C   0.1  0.5   0   0.6  0.6
gén D   0.3  0.5  0.6   0   0.8
gén E   0.7  0.4  0.6  0.8   0
  • Uvažujte motív reprezentovaný profilom (skórovaciou maticou, PSSM) uvedenou nižšie. Spočítajte skóre reťazca GGAG. Ktorá sekvencia dĺžky 4 bude mať najmenšie a ktorá najväčšie skóre?
A   -3    3   -2   -2
C   -2   -2    1   -2
G    0   -2   -1    3
T    1   -1    1   -2
  • Nájdite všetky výskyty regulárneho výrazu TA[CG][AT]AT v sekvencii GACGATATAGTATGTACAATATGC.
  • Doplňte chýbajúce hodnoty za otázniky v matici dynamického programovania (Nussinovov algoritmus) pre nájdenie najväčšieho počtu dobre uzátvorkovaných spárovaných báz v RNA sekvencii GAACUAUCUGA (dovoľujeme len komplementárne páry A-U, C-G) a nakreslite sekundárnu štruktúru, ktorú algoritmus našiel.
 0 0 0 1 1 2 2 3 3 ? ?
   0 0 0 1 1 2 2 3 3 ?
     0 0 1 1 2 2 2 3 3
       0 0 1 1 1 1 2 3
         0 1 1 ? 1 2 3
           0 1 1 1 2 2
             0 0 0 1 2
               0 0 1 1
                 0 0 1
                   0 0
                     0
  • Pre dvojice SNPov, ktorých tabuľky sú uvedené nižšie, určite, či môžeme štatisticky vylúčiť hypotézu, že sú v stave LE (linkage equilibrium) pri hladine významnosti p=0.05, resp. \chi ^{2}>3.841. Pre každú dvojicu spočítajte veličinu \chi ^{2}.
    Q   q              Q  q             Q  q
P  100 200          P 10  20         P  1  2
p  300 200          p 30  20         p  3  2