08.01.2015 Views

Biologia Molecolare Computazionale

Biologia Molecolare Computazionale

Biologia Molecolare Computazionale

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Biologia</strong> <strong>Molecolare</strong> <strong>Computazionale</strong><br />

Paolo Provero - paolo.provero@unito.it<br />

2008-2009


Argomenti<br />

◮ Allineamento di sequenze<br />

◮ Ricostruzione di alberi filogenetici<br />

◮ Gene prediction


Allineamento<br />

Allineamento di sequenze<br />

1. Scoring<br />

2. Algoritmi esatti (programmazione dinamica)<br />

3. Algoritmi euristici (BLAST)<br />

4. Allineamento multiplo


Allineamento di sequenze<br />

Problema<br />

Date due sequenze (nucleotidiche, aminoacidiche o altro)<br />

determinare se sono sufficientemente simili da farci ritenere<br />

che siano derivate da un progenitore comune attraverso<br />

processi di mutazione.


Allineamento<br />

Un esempio di allineamento delle sequenze<br />

CGGGTATCCAA e CCCTAGGTCCCA è<br />

C G G G T A - - T C C A A<br />

C C C - T A G G T C C C A<br />

◮ Il simbolo “-” (indel) rappresenta un’inserzione o una<br />

delezione avvenuta durante la storia evolutiva che ha<br />

portato alle due sequenze<br />

◮ Una sequenza di L indel consecutivi si dice gap di<br />

lunghezza L: questo allineamento ha un gap di lunghezza<br />

1 e uno di lunghezza 2


Tipi di allineamento<br />

◮ Globale: si allineano le sequenze intere<br />

◮ Locale: si allineano sottosequenze delle sequenze di<br />

partenza<br />

◮ Gapped: sono permessi indels<br />

◮ Ungapped: non sono permessi indel<br />

◮ Pairwise: di due sequenze<br />

◮ Multiple: di più di 2 sequenze


Score di un allineamento<br />

◮ Due possibili allineamenti di CTGTA e CGTA<br />

C T G T A<br />

1.<br />

C - G T A<br />

2.<br />

C T G T A -<br />

- C - G T A<br />

◮ Il primo è migliore in quanto richiede un numero minore di<br />

cambiamenti (sostituzioni e inserzioni/delezioni)<br />

◮ E’ necessario definire uno score per confrontare<br />

quantitativamente gli allineamenti


Scoring per allineamenti di sequenze nucleotidiche<br />

◮ Per il momento adottiamo uno score semplice:<br />

◮ Ogni match conta +1<br />

◮ Ogni mismatch conta -1<br />

◮ Ogni indel conta -2<br />

◮ Esempio 1:<br />

C T G T A<br />

C - G T A<br />

+1 -2 +1 +1 +1 +2<br />

◮ Esempio 2:<br />

C T G T A -<br />

- C - G T A<br />

-2 -1 -2 -1 -1 -2 -9


Algoritmi di allineamento<br />

◮ Gli algoritmi di allineamento risolvono il seguente<br />

problema: dato un sistema di scoring e due sequenze,<br />

trovare l’allineamento (gli allineamenti) con lo score più<br />

alto tra tutti quelli possibili<br />

◮ Gli algoritmi esatti individuano certamente il migliore<br />

allineamento, ma richiedono molte risorse di calcolo<br />

1. Needleman-Wunsch: global gapped alignments<br />

2. Smith-Waterman: local gapped alignments<br />

◮ Gli algoritmi euristici non garantiscono che l’allineamento<br />

trovato sia il migliore possibile, ma sono molto più veloci<br />

1. BLAST (gapped or ungapped local alignments)


Perché abbiamo bisogno di algoritmi<br />

◮ In linea di principio sarebbe possibile trovare l’allineamento<br />

ottimale di due sequenze semplicemente:<br />

1. Scrivere tutti gli allineamenti possibili<br />

2. Calcolare il relativo score<br />

3. Scegliere il migliore<br />

◮ Tuttavia questo è possibile soltanto per sequenze molto<br />

corte, in quanto il numero di allineamenti possibili cresce<br />

molto rapidamente al crescere della lunghezza della<br />

sequenza


Perchè abbiamo bisogno di algoritmi<br />

◮ Supponiamo di avere due sequenze di n = 1000 residui<br />

◮ Il numero di allineamenti possibili è<br />

( 2n<br />

N =<br />

n<br />

)<br />

∼ 22n<br />

√ πn<br />

= 22000<br />

√<br />

1000π<br />

∼ 2 · 10 600


Programmazione dinamica<br />

◮ Gli algoritmi di programmazione dinamica suddividono il<br />

problema iniziale (trovare l’allineamento ottimale di due<br />

sequenze) in sottoproblemi più semplici e costruiscono<br />

progressivamente la soluzione del problema globale<br />

usando le soluzioni dei sottoproblemi<br />

◮ L’algoritmo di Needleman-Wunsch calcola lo score<br />

dell’allineamento ottimale di due sequenze in base agli<br />

score degli allineamenti ottimali delle loro sottosequenze,<br />

progressivamente più lunghe


Algoritmo di Needleman-Wunsch<br />

◮ Sequenze:<br />

x = X 1 X 2 . . . X m<br />

y = Y 1 Y 2 . . . Y n<br />

◮ L’algoritmo costruisce la matrice B tale che B ij è lo score<br />

dell’allineamento ottimale tra le prime i lettere di x e le<br />

prime j lettere di y<br />

◮ I valori di B ij vengono calcolati progressivamente fino a<br />

ottenere B mn , che è lo score dell’allineamento ottimale tra<br />

x e y


Algoritmo di Needleman-Wunsch<br />

◮ L’algoritmo di Needleman-Wunsch si basa sul fatto<br />

seguente:<br />

se si conoscono B i−1,j , B i,j−1 e B i−1,j−1 è possibile<br />

calcolare B ij<br />

◮ Una volta ottenuto lo score dell’allineamento ottimale il<br />

traceback consente di ottenere l’allineamento o gli<br />

allineamenti corrispondenti


Esercizio<br />

Trovare un allineamento globale ottimale tra le sequenze<br />

CATT<br />

GAATCT<br />

Soluzione: score -2<br />

Allineamento (non l’unico):<br />

C - A T - T<br />

G A A T C T<br />

-1 -2 +1 +1 -2 +1 -2


Algoritmo di Smith-Waterman<br />

◮ L’algoritmo di Smith-Waterman trova l’allineamento locale<br />

ottimale tra due sequenze, ovvero l’allineamento di score<br />

più alto tra tutti quelli possibili tra una qualsiasi<br />

sottosequenza di x e una qualsiasi sottosequenza di y<br />

◮ L’algoritmo procede in modo simile a Needleman-Wunsch<br />

eccetto che:<br />

1. Ogni volta che B ij è negativo, si scrive 0<br />

2. Il traceback non parte da B mn ma dallo score più alto<br />

trovato sulla tabella


Esercizio<br />

Trovare un allineamento locale ottimale tra le sequenze<br />

CATT<br />

GAATCT<br />

Soluzione: score 2<br />

Allineamento:<br />

A T<br />

A T<br />

+1 +1 +2


Gap penalties<br />

◮ Il tipo di gap penalty che abbiamo usato si chiama lineare:<br />

la penalty (score negativo) associata a un gap è<br />

proporzionale alla lunghezza del gap:<br />

δ(L) = −d · L<br />

◮ Un altro tipo di gap penalty usato spesso si chiama affine:<br />

δ(L) = −d − (L − 1) · e<br />

con e < d. In questo modo aprire un nuovo gap è più<br />

penalizzato che allungarne uno esistente


Gap penalty affine: esempio<br />

◮ Esempio: d = 2, e = 1<br />

A C C C T<br />

A - - C T<br />

+1 -3 +1 +1 0<br />

A C C C T<br />

A - C - T<br />

+1 -2 +1 -2 +1 -1


Allineamento di sequenze aminoacidiche<br />

◮ Nel caso di allineamento di sequenze di aminoacidi, un<br />

sistema di scoring come quello usato per le sequenze<br />

nucleotidiche non è adeguato, in quanto alcune sostituzioni<br />

sono più probabili di altre<br />

◮ Quindi i mismatch avranno score diversi a seconda degli<br />

aminoacidi coinvolti (matrici di sostituzione)<br />

◮ Gli algoritmi di allineamento funzionano nello stesso modo,<br />

eccetto che lo score per un match/mismatch varia a<br />

seconda degli aminoacidi coinvolti<br />

◮ Le matrici di sostituzione più usate sono BLOSUM e PAM


Esercizio<br />

Usare le matrici di sostituzione BLOSUM62 e una linear gap<br />

penalty uguale a -5 per trovare un allineamento ottimale<br />

globale tra le sequenze<br />

HAG<br />

HEAE<br />

Soluzione: score 5<br />

Allineamento:<br />

H - A G<br />

H E A E<br />

8 -5 4 -2 5


BLAST<br />

Algoritmo euristico per allineare<br />

◮ Query sequence vs target sequence<br />

◮ Query sequence vs sequence database<br />

Versione originale: ungapped alignments.<br />

BLAST2: gapped alignments.


BLAST steps (simplified)<br />

1. Generare una lista di tutte le parole di k (p.es. k = 3 per<br />

proteine) lettere nella query<br />

PQGEFG → (PQG, QGE, GEF, EFG)<br />

2. Per ognuna di queste generare una lista di tutte le possibili<br />

parole di 3 lettere che allineate danno un punteggio<br />

maggiore di una soglia T (p.es. T = 13 con BLOSUM62)<br />

PQG → PQG (18) PEG (15) . . .<br />

3. Cercare nella sequenza target queste parole ed allinearle<br />

alla parola della query<br />

4. Estendere in modo massimale gli allineamenti nelle due<br />

direzioni (ottenendo gli High Scoring Pairs)<br />

5. Se possibile unire gli HSP per ottenere allineamenti più<br />

lunghi.


BLAST


Grafi<br />

◮ Un grafo è un insieme di nodi e di archi<br />

◮ Ogni arco unisce due nodi<br />

◮ Un cammino tra il nodo n e il nodo m è una successione di<br />

archi consecutivi che porta da n a m<br />

◮ Un circuito è un cammino tra un nodo e se stesso<br />

◮ Un grafo è connesso se per ogni coppia di nodi (n, m)<br />

esiste un cammino tra n e m


Alberi<br />

◮ Un grafo connesso e privo di circuiti si dice albero<br />

◮ Dati due nodi di un albero, esiste uno e un solo cammino<br />

che li unisce<br />

◮ Un albero si dice binario senza radice se ogni nodo è<br />

connesso a uno o tre archi<br />

◮ Un albero si dice binario con radice se ogni nodo è<br />

connesso a uno o tre archi, tranne un unico nodo, la<br />

radice, che è connesso a due archi<br />

◮ I nodi connessi a un solo arco si dicono foglie


Ricostruzione di alberi filogenetici<br />

◮ Problema: dato un insieme di specie attualmente esistenti<br />

ricostruire l’albero filogenetico che riproduce il percorso<br />

evolutivo attraverso il quale esse sono derivate da un<br />

antenato comune<br />

◮ L’albero filogenetico è rappresentato da un albero binario,<br />

con o senza radice<br />

◮ La lunghezza degli archi è proporzionale al tempo<br />

trascorso tra gli eventi di speciazione<br />

◮ Le specie esistenti sono rappresentate dalle foglie<br />

◮ La radice, se specificata, rappresenta l’antenato comune<br />

◮ Se l’albero filogenetico è senza radice, non è specificata la<br />

direzione del tempo evolutivo tra nodi interni


Ricostruzione di alberi filogenetici<br />

◮ Distance methods<br />

◮ Parsimony methods<br />

◮ Statistical methods


Distanze<br />

◮ Una distanza è una regola per associare a ogni coppia<br />

(x, y) di punti di un insieme S un numero d(x, y) ≥ 0 tale<br />

che<br />

1. d(x, y) = 0 se e solo se x = y<br />

2. d(x, y) = d(y, x)<br />

3. d(x, y) + d(y, z) ≥ d(x, z)<br />

◮ Per esempio la distanza geometrica tra punti di un piano<br />

soddisfa questi assiomi


Distanza evolutiva<br />

◮ La distanza evolutiva tra due specie esistenti si può<br />

definire come il doppio del tempo trascorso dal loro<br />

antenato comune più recente<br />

◮ E’ facile convincersi che questa definizione soddisfa gli<br />

assiomi che definiscono una distanza<br />

◮ Se si considera un albero filogenetico con radice, la<br />

distanza evolutiva tra le specie x e y è proporzionale alla<br />

lunghezza del cammino tra x e y


Distanza ultrametrica<br />

◮ La distanza evolutiva ha la seguente proprietà:<br />

dati tre punti x, y, z e le tre distanze tra di essi, due di<br />

queste sono uguali tra loro e maggiori della terza<br />

◮ Una distanza che soddisfi queste proprietà si dice<br />

ultrametrica


Metodi basati sulle distanze<br />

◮ Vedremo due metodi basati sulle distanze:<br />

1. UPGMA: ricostruisce alberi filogenetici con radice<br />

2. Neighbor joining: ricostruisce alberi filogenetici senza<br />

radice<br />

◮ L’algoritmo UPGMA (Unweighted Pair Group Method using<br />

Arithmetic averages) permette di risolvere il problema<br />

seguente:<br />

dato un insieme di specie esistenti e le loro distanze<br />

evolutive, ricostruire l’albero filogenetico con radice che ne<br />

rappresenta l’evoluzione da un antenato comune


UPGMA<br />

1. Individuare le due specie più vicine tra le N esistenti<br />

2. Definire un nuovo nodo come loro antenato comune,<br />

ponendolo all’altezza uguale a metà della distanza tra i<br />

due nodi<br />

3. Eliminare le due specie dalla lista e sostituirle con<br />

l’antenato comune<br />

4. Ripetere con la nuova lista di N − 1 specie<br />

5. Ripetere fino a che la lista contiene una sola specie (la<br />

radice = antenato comune)<br />

6. Si può dimostrare che il metodo riproduce l’unico albero<br />

filogenetico con radice che riproduce le distanze evolutive


Distanza tra gruppi<br />

◮ Per calcolare la distanza tra nodi interni si usa la formula<br />

d(A, B) = 1<br />

n A n B<br />

∑<br />

x∈A;y∈B<br />

d(x, y)


Esempio<br />

◮ Le distanze evolutive tra 4 specie sono date nella tabella<br />

seguente (Mya)<br />

Human Chimp Bonobo Gorilla<br />

Human 0 12 12 14<br />

Chimp 12 0 4 14<br />

Bonobo 12 4 0 14<br />

Gorilla 14 14 14 0<br />

◮ Verificare la proprietà ultrametrica<br />

◮ Ricostruire l’albero filogenetico con radice usando UPGMA


UPGMA in pratica<br />

◮ In pratica le distanze evolutive in genere non sono note<br />

◮ Si usano allora distanze surrogate, chesi suppone siano<br />

approssimativamente proporzionali alle distanze evolutive<br />

◮ Le distanze surrogate in genere non sono ultrametriche<br />

◮ La conseguenza è che le distanze calcolate sull’albero<br />

così prodotto non sono uguali alle distanze in input


Esempio<br />

◮ Considerare la matrice di distanza tra 3 specie:<br />

A B C<br />

A 0 6 8<br />

B 6 0 4<br />

C 8 4 0<br />

◮ Mostrare che si tratta di una matrice di distanza<br />

◮ Mostrare che questa distanza non è ultrametrica<br />

◮ Costruire l’albero filogenetico con radice usando UPGMA e<br />

calcolare le distanze sull’albero<br />

◮ Mostrare che queste distanze sono ultrametriche e che<br />

non coincidono con quelle in input


Neighbors<br />

◮ Dato un albero filogenetico senza radice, due foglie si<br />

dicono neighbors se il cammino che le unisce passa per<br />

un solo nodo interno<br />

◮ Notare che non è necessariamente vero che il neighbor di<br />

una specie è la specie più vicina nel senso della distanza<br />

calcolata sull’albero


Tree-derived distances<br />

◮ Data una matrice di distanze il metodo del neighbor joining<br />

costruisce l’albero unrooted che riproduce le distanze date,<br />

se questo esiste<br />

◮ Una distanza per la quale esista tale albero si dice<br />

“tree-derived” o “additive”<br />

◮ Una distanza ultrametrica è tree-derived, ma l’opposto non<br />

è necessariamente vero


δ(x, y)<br />

◮ Supponiamo di avere una matrice di distanze d(x, y) tra<br />

specie<br />

◮ Definiamo la quantità<br />

δ(x, y) = (N − 4)d(x, y) − ∑<br />

(d(x, n) + d(y, n))<br />

n≠x,y<br />

◮ Se x e y sono tali che la δ(x, y) è minima, allora x e y<br />

sono neighbors


Neighbor joining<br />

◮ Calcolare la matrice delle δ<br />

◮ Unire la coppia di specie con il delta più piccolo attraverso<br />

un nodo interno r 1 con le distanze<br />

d(x, r 1 ) =<br />

d(x, n) − d(y, n) + d(x, y)<br />

2<br />

d(y, n) − d(x, n) + d(x, y)<br />

d(y, r 1 ) =<br />

2<br />

dove n è un’altra foglia qualsiasi<br />

◮ Sostituire x e y con r 1 . La distanza tra r 1 e le altre foglie è<br />

data da<br />

d(r 1 , n) =<br />

d(x, n) + d(y, n) − d(x, y)<br />

2<br />

◮ Ripetere fino a che non si ricostruisce l’intero albero


Esempio<br />

x<br />

y<br />

◮ Calcolare le distanze tra<br />

le foglie dell’albero<br />

rappresentato in figura<br />

1<br />

1<br />

1<br />

◮ Applicare l’algoritmo<br />

"neighbor joining" alle<br />

distanze calcolate e<br />

mostrare che l’albero<br />

ottenuto riproduce quello<br />

di partenza<br />

z<br />

5<br />

4<br />

w


Rooting<br />

◮ E’ possibile localizzare la radice di un albero ottenuto con<br />

neighbor-joining aggiungendo un outgroup (specie che si<br />

sa essere più distante dalle altre di quanto queste siano tra<br />

loro)<br />

◮ La radice dell’albero originario coincide con il punto da cui<br />

si diarma l’outgroup.


Esempio<br />

◮ Costruire l’albero unrooted di 3 specie dalle seguenti<br />

distanze:<br />

A B C<br />

A 0 3 4<br />

B 3 0 5<br />

C 4 5 0<br />

◮ Localizzare la radice usando l’outgroup D, con distanze<br />

d(D, A) = 12 d(D, B) = 11 d(D, C) = 14


Maximum Parsimony<br />

◮ Trovare l’albero che spiega la discendenza delle specie<br />

esistenti da un antenato comune con il minimo numero di<br />

mutazioni.<br />

◮ Per semplicità ci limiteremo a considerare sostituzioni<br />

◮ Esempio: le specie esistenti sono rappresentate dalle<br />

seguenti sequenze:<br />

AAG<br />

AAA<br />

GGA<br />

AGA


Costo di un albero<br />

1<br />

0<br />

AAA<br />

0<br />

AAA<br />

1<br />

1<br />

Cost = 3<br />

AGA<br />

0<br />

1<br />

0<br />

AAA<br />

1<br />

AAA<br />

0<br />

0<br />

Cost = 4<br />

AAA<br />

2<br />

AAG AAA GGA AGA<br />

AAG AGA AAA GGA<br />

◮ Elencare i possibili alberi<br />

◮ Calcolare il costo per ogni albero<br />

◮ Scegliere l’albero di costo minore


Alberi possibili<br />

Gli alberi si distinguono per<br />

◮ Topologia<br />

◮ Assegnazione delle specie esistenti alle foglie<br />

◮ Assegnazione di sequenze ai nodi intermedi


Topologie per 4 specie


Numero di alberi<br />

◮ Il numero di assegnazioni (sommato su tutte le topologie) è<br />

◮ Esempio: per N = 4<br />

(2N − 3)!<br />

2 N−2 (N − 2)!<br />

(2N − 3)!<br />

2 N−2 (N − 2)! = 5!<br />

4 · 2! = 15<br />

◮ Questo numero diventa rapidamente molto grande: per<br />

N = 10:<br />

17!<br />

2 8 8! = 34.459.425<br />

◮ Con metodi euristici si può usare parsimony anche per<br />

centinaia di specie


Allineamenti multipli: SP scores<br />

Il modo più comune di assegnare uno score a un allineamento<br />

multiplo è un Sum of Pairs (SP) score:<br />

◮ Lo score totale è la somma degli score delle singole<br />

colonne:<br />

S = ∑ S i<br />

i<br />

◮ Lo score di una colonna è la somma degli score di tutte le<br />

coppie di simboli (usando una matrice di sostituzione<br />

appropriata)<br />

S i = ∑ s(mi k , mi l )<br />

k


Esempio<br />

match = 1, mismatch = -1, d = -2<br />

A A C G<br />

A A C T<br />

A - C T<br />

A G C T<br />

+6 -7 +6 0 =5


SP scores: problema<br />

A A C T G G<br />

A A C T G G<br />

A A C A G G<br />

A A C T G G<br />

A A C T G G<br />

+10 +10 +10 +2 +10 +10 =52<br />

◮ Per N sequenze una colonna di T vale N(N−1)<br />

2<br />

◮ Un singolo mismatch costa N − 1<br />

◮ Costo relativo di un singolo mismatch: 2/N: decresce<br />

all’aumentare di N<br />

Over-counting of evolutionary events


Algoritmi per l’allineamento multiplo<br />

◮ Esistono algoritmi di programmazione dinamica per<br />

l’allineamento multiplo, ma sono utilizzabili solo per N<br />

piccolo<br />

◮ Tra gli algoritmi euristici i più comuni sono gli algoritmi di<br />

allineamento progressivo:<br />

◮ Allineare due sequenze<br />

◮ Allineare una terza sequenza all’allineamento ottenuto<br />

◮ Continuare ad aggiungere una sequenza alla volta<br />

all’allineamento


Algoritmo di Feng-Doolitle<br />

1. Trovare tutti gli N(N − 1)/2 pairwise alignments delle N<br />

sequenze<br />

2. Costruire un albero “filogenetico” usando come distanza<br />

una funzione dello score dei pairwise alignments<br />

3. Allineare le due sequenze “evolutivamente” più vicine<br />

4. Allineare gli altri nodi dell’albero nell’ordine i cui sono stati<br />

aggiunti all’albero<br />

Per allineare due insiemi di sequenze, calcolare tutti i pairwise<br />

alignments e usare il migliore


Esempio<br />

Usando lo scoring:<br />

match = 1; mismatch = -1; gap=-2<br />

allineare AAG, ATG, AA :<br />

A A G<br />

A T G<br />

A A -<br />

+3 -1 -3 =-1


Applicazione: Positional Weight Matrices<br />

◮ Siti di legame di TF:<br />

◮ Brevi sequenze di DNA (∼ 6 − 15 bps)<br />

◮ Non completamente conservate<br />

◮ Una descrizione possibile è la sequenza consensus,<br />

ricavabile da un allineamento multiplo di siti di legame noti:<br />

IUPAC codes:<br />

◮ Y = pyrimidine (C or T)<br />

◮ W = T or A<br />

A C C G G T<br />

A C T G G T<br />

- C T G G A<br />

A C C G G T<br />

A C Y G G W


Positional Weight Matrices<br />

Una descrizione più accurata è data dalla PWM:<br />

A C C G G T<br />

A C T G G T<br />

- C T G G A<br />

A C C G G T<br />

A C Y G G W<br />

n A C G T<br />

1 3 0 0 0<br />

2 0 4 0 0<br />

3 0 2 0 2<br />

4 0 0 4 0<br />

5 0 0 4 0<br />

6 1 0 0 3


Ricerca di TFBS con PWM<br />

Le PWM possono essere usate per identificare potenziali<br />

binding sites di TFs:<br />

◮ Considerare le sequenze regolatrici dei geni di interesse<br />

(promotore, primi introni, ...)<br />

◮ Fare “scorrere” la PWM sulla sequenza calcolando uno<br />

score a ogni posizione<br />

◮ Lo score esprime la somiglianza tra la sequenza e la<br />

matrice


Log-likelihood ratio<br />

Un sistema di scoring usato in pratica è il seguente: data una<br />

PWM M e una sequnenza S:<br />

dove<br />

S = log 2<br />

P(S|M)<br />

P(S|B)<br />

◮ P(S|M) è la probabilità di generare S a partire da M<br />

◮ P(S|B) è la probabilità di generare S a partire dalle<br />

(appropriate) frequenze nucleotidiche di background


Esempio<br />

S = ACTGGA<br />

n A C G T<br />

1 3 0 0 0<br />

2 0 4 0 0<br />

3 0 2 0 2<br />

4 0 0 4 0<br />

5 0 0 4 0<br />

6 1 0 0 3<br />

P(S|M) = 1 · 1 · 1<br />

2 · 1 · 1 · 1<br />

4 = 1 8<br />

( ) 6 1<br />

P(S|B) = = 2 −12 = 4096<br />

4<br />

P(S|M)<br />

P(S|B) = 2−3 + 2 12 = 2 9<br />

score = 9<br />

(N.B. per evitare problemi con log(0)<br />

si aggiungono “pseudocounts” per le<br />

basi che non compaiono mai in<br />

ciascuna posizione)


Ricerca di TFBS<br />

◮ Ogni volta che la sequenza supera un certo score minimo<br />

deciso a priori, la si identifica come un candidato TFBS<br />

◮ Problema: in genere si trovano troppi candidati:<br />

◮ PWM di lunghezza 6<br />

◮ Accettiamo solo il massimo score possibile (1 sola<br />

sequenza)<br />

◮ Su sequenze casuali, otteniamo un candidato ogni<br />

4 6 = 4, 000 basi<br />

◮ Sul genoma umano, ci aspettiamo<br />

3 · 10 9<br />

∼ 7.5 · 105<br />

4 · 103 candidati semplicemente per caso


Soluzioni<br />

1. Spesso i TFBS funzionali sono ripetuti nella regione<br />

regolatrice ⇒ Selezionare soltanto le regioni regolatrici<br />

in cui il numero di candidati è significativamente più<br />

alto di quanto ci si aspetta per caso<br />

2. Spesso i TFBS funzionali sono evolutivamente conservati<br />

⇒ Selezionare soltanto i candidati TFBS che si<br />

ritrovano in altre specie

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!