08.01.2015 Views

Biologia Molecolare Computazionale

Biologia Molecolare Computazionale

Biologia Molecolare Computazionale

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<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!