La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Computation of Median Gene Clusters Marco Argiolas Valentina Marioli.

Presentazioni simili


Presentazione sul tema: "Computation of Median Gene Clusters Marco Argiolas Valentina Marioli."— Transcript della presentazione:

1 Computation of Median Gene Clusters Marco Argiolas Valentina Marioli

2 Durante il corso dell'evoluzione, alcuni geni si sono persi e altri si sono duplicati, provocando una divergenza tra genomi che inizialmente avevano lo stesso ordine di geni e lo stesso contenuto. Introduzione al problema

3 Il confronto tra genoma, basato sull'ordine dei geni, è l'approccio più comune, ma in alcuni casi può essere utile identificare cluster di geni, ovvero insiemi di 2 o più geni che occorrono in molti genomi. Introduzione al problema

4 Il confronto tra genoma, basato sull'ordine dei geni, è l'approccio più comune, ma in alcuni casi può essere utile identificare cluster di geni, ovvero insiemi di 2 o più geni che occorrono in molti genomi. Introduzione al problema

5 Il confronto tra genoma, basato sull'ordine dei geni, è l'approccio più comune, ma in alcuni casi può essere utile identificare cluster di geni, ovvero insiemi di 2 o più geni che occorrono in molti genomi. Introduzione al problema

6 Definizione di Gene Clusters Un genoma S è una stringa di interi in cui ogni intero rapprensenta un gene. Geni che appartengono alla stessa famiglia vengono codificati con lo stesso intero.

7 1 2 3 4 5 6 7 8 Un genoma S è una stringa di interi in cui ogni intero rapprensenta un gene. Geni che appartengono alla stessa famiglia vengono codificati con lo stesso intero. Definizione di Gene Clusters

8 π1π1 π2π2 π3π3 π4π4 1 2 3 4 5 6 7 8 8 7 6 4 5 2 1 3 3 1 2 5 8 7 6 4 6 7 4 2 1 3 8 5 Un genoma S è una stringa di interi in cui ogni intero rapprensenta un gene. Geni che appartengono alla stessa famiglia vengono codificati con lo stesso intero. Definizione di Gene Clusters

9 In molte applicazioni la richiesta di avere le esatte occorrenze del gene cluster in un genoma, risulta essere troppo restrittiva. Pertanto è preferibile estendere la definizione di gene cluster permettendo piccole devianze. Questo nuovo tipo di cluster viene chiamato gene cluster approssimato. Gene cluster approssimato

10 Rilassando il vincolo dell'uguaglianza, lo spazio di ricerca di cluster di geni aumenta esponenzialmente (dipende sia dal numero di confronti che dal numero di deviazioni permesse). Gene cluster approssimato

11 Max-gap cluster Permette un numero arbitrario di gaps nei clusters. G1 = 1 * 2 3 4 * 5 6 * 7 G2 = 3 * 5 2 1 * 6 * * 7 4 *rappresenta i geni che possono non essere condivisi tra i due genomi Alcuni algoritmi risolutivi

12 Max-gap cluster Non è in grado di trovare cluster approssimati. La complessità di questo problema cresce esponenzialemente con il numero di sequenze e risulta essere: O(n 2 ) per 2 sequenze, dove n è la lunghezza della sequenza più lunga.

13 ILP Cerchiamo locazioni perfette in un genoma e un'occorrenza approssimata in un'altra sequenza. La complessità dell’algoritmo risulta essere: O(n 3 + |occ|) in tempo O(n 3 ) in spazio. Alcuni algoritmi risolutivi

14 Quello che noi presenteremo è un algoritmo che risolve questo problema in O( n 2 (1+  ) 2 ) in tempo O(n 2 ) in spazio, dove  << n. Introdurremo un nuovo concetto di cluster, chiamato median gene cluster che permette di vincolare solo la somma degli errori che possono essere presenti nelle occorrenze approssimate di un gene cluster. Alcuni algoritmi risolutivi

15 Gene cluster in cui sono permessi:  ordine variabile dei geni  occorrenze multiple dello stesso gene sono noti come: intervalli comuni. Definizioni di base: intervallo comune

16 1 2 3 4 5 6 7 8 8 7 6 4 5 2 1 3 3 1 2 5 8 7 6 4 6 7 4 2 1 3 8 5 π1π1 π2π2 π3π3 π4π4 Un intervallo comune di S 1,...,S k si ha quando sottostringhe (S 1 [i 1,j 1 ],..., S k [i k,j k ]) di due o più stringhe hanno lo stesso insieme di caratteri. Definizioni di base: intervallo comune

17 1 2 3 4 5 6 7 8 8 7 6 4 5 2 1 3 3 1 2 5 8 7 6 4 6 7 4 2 1 3 8 5 π1π1 π2π2 π3π3 π4π4 Un intervallo comune di S 1,...,S k si ha quando sottostringhe (S 1 [i 1,j 1 ],..., S k [i k,j k ]) di due o più stringhe hanno lo stesso insieme di caratteri. Definizioni di base: intervallo comune

18 1 2 3 4 5 6 7 8 8 7 6 4 5 2 1 3 3 1 2 5 8 7 6 4 6 7 4 2 1 3 8 5 π1π1 π2π2 π3π3 π4π4 Un intervallo comune di S 1,...,S k si ha quando sottostringhe (S 1 [i 1,j 1 ],..., S k [i k,j k ]) di due o più stringhe hanno lo stesso insieme di caratteri. Definizioni di base: intervallo comune

19 Definizioni di base: character set Data: Una stringa S su un alfabeto finito Σ Notatione: S[i] = il i-esmio carattere di S S[i,j] = sottostringa di S che inizia da i e finisce in j Definizione:Un character set CS(S[i,j]) := {S[k] | i ≤ k ≤ j} è l'insieme di tutti i caratteri che occorrono in S[i,j]. Esempio: CS(S[2,5]) := {1,2,3} 1 2 3 4 5 6 7 8 S : 3 1 2 3 1 5 2 6

20 Definizioni di base: cs-location Dato: Un sottoinsieme C  Σ Definizione: (i, j) è una CS-location di C in S, sse CS(S[i,j]) = C Esempio: la coppia (3,5) è una CS-location di un insieme C={1,2,3}, perchè CS(S[3,5]) = {1,2,3}. S : 3 1 2 3 1 5 2 6 1 2 3 4 5 6 7 8

21 Definizioni di base: massimale Median Gene Cluster Dato:Un sottoinsieme C  Σ e una stringa S Definizione: S[i,j] è massimale-sinistro = S[i-1]  CS(S[i,j]) massimale-destro = S[j+1]  CS(S[i,j]) massimale = massimale-destro e massimale-sinistro Esempio: S : 3 1 2 3 1 5 2 6 1 2 3 4 5 6 7 8 S[3,5] non è massimale sinistro: S[2]=1  CS(S[3,5]), ma è massimale destro: S[6]=5  CS(S[3,5]).

22 Definizioni di base: distanza simmetrica Dati: Due insiemi di caratteri C,C'  Σ Definizione: la distanza simmetrica tra insiemi è data da D(C,C')=|C\C'|+|C'\C| Esempio: S 1 : 3 1 2 3 1 5 2 6 C 1 ={1,2,3,5,6}, C 2 ={1,2,4,5,7} |C 1 \C 2 |= |{3,6}|=2 |C 2 \C 1 |= |{4,7}|=2 D(C 1,C 2 ) = 2+2= 4 S 2 : 2 1 4 4 1 2 5 7

23 Definizioni di base: d-location Dati: Un insieme di caratteri C  Σ e una stringa S Definizione: una d-location è una sottostringa S[i,j] tale che D(C,CS(S[i,j])) ≤ d Esempio: S : 3 1 2 3 1 5 2 6 1 2 3 4 5 6 7 8 C={1,2,3} e d= 3 CS(S[4,8])={1,2,3,5,6} D(C,CS(S[4,8])) = 2 ≤ d quindi S[4,8] è una 3-locazione

24 Definizioni di base: la mediana in statistica In statistica la mediana indica il numero che occupa la posizione centrale in un insieme di numeri, ovvero la metà dei numeri ha un valore superiore rispetto alla mediana, mentre l'altra metà ha un valore inferiore. Per definire la mediana di un insieme di caratteri, sfrutteremo una sua importante proprietà: la mediana rende minima la somma dei valori assoluti degli scarti.

25 Definizioni di base: mediana di un insieme Dati: degli insiemi di caratteri C, C 1,....C k  Σ Definizione:C è una mediana dei k set di caratteri C 1,....C k se e solo se per ogni C' 

26 Definizioni di base: mediana di un insieme C 1 : {1,2,6} C 2 : {2,4,5,7,8} C 3 : {1,3,8,9} C 4 : {3,4,10,11} D(C,C 1 ) = 3 D(C,C 2 ) = 5 D(C,C 3 ) = 4 D(C,C 4 ) = 4 La mediana di un insieme non è necessariamente unica, infatti, se k è pari, un carattere che occorre nella mediana può occorrere in esattamente k insiemi di caratteri. Pertanto se andiamo a rimuovere quel carattere della mediana, la distanza totale dagli insiemi C 1,..,C k rimane inalterata e i caratteri rimanenti formeranno una mediana alternativa. Esempio: C: {1,2,3,4}

27 Definizioni di base: mediana di un insieme C 1 : {1,2,6} C 2 : {2,4,5,7,8} C 3 : {1,3,8,9} C 4 : {3,4,10,11} D(C,C 1 ) = 3 D(C,C 2 ) = 5 D(C,C 3 ) = 4 D(C,C 4 ) = 4 La mediana di un insieme non è necessariamente unica, infatti, se k è pari, un carattere che occorre nella mediana può occorrere in esattamente k insiemi di caratteri. Pertanto se andiamo a rimuovere quel carattere della mediana, la distanza totale dagli insiemi C 1,..,C k rimane inalterata e i caratteri rimanenti formeranno una mediana alternativa. Esempio: C: {1,2,3,4}

28 Definizioni di base: mediana di un insieme C 1 : {1,2,6} C 2 : {2,5,7,8} C 3 : {1,3,8,9} C 4 : {3,10,11} D(C,C 1 ) = 3 – 1 = 2 D(C,C 2 ) = 5 + 1 = 6 D(C,C 3 ) = 4 – 1 = 3 D(C,C 4 ) = 4 + 1 = 5 La mediana di un insieme non è necessariamente unica, infatti, se k è pari, un carattere che occorre nella mediana può occorrere in esattamente k insiemi di caratteri. Pertanto se andiamo a rimuovere quel carattere della mediana, la distanza totale dagli insiemi C 1,..,C k rimane inalterata e i caratteri rimanenti formeranno una mediana alternativa. Esempio: C: {1,2,3} _ 16 _ E’ ancora una mediana.

29 Definizioni del problema Date k sequenze S 1,...,S k, una dimensione minima di cluster s e una soglia , vogliamo calcolare tutti gli insiemi C  Σ con |C| ≥ s per i quali esistono S 1 [i 1,j 1 ],..., S k [i k,j k ] e C è una mediana di CS(S 1 [i 1,j 1 ]),..., CS(S k [i k,j k ]) con Un tale insieme C viene chiamato median gene cluster di S 1,...,S k.

30 Lemma: Premesse Siano date le sequenze S 1 ….S k, aventi come sottostringhe S 1 [i 1,j 1 ],…,S k [i k,j k ], tali che per una data soglia di tolleranza δ ≥ 0 esista un Character Set C appartenente all’alfabeto ∑, e la sommatoria D(C, CS (S[i l,j l ]) ≤ δ

31 Lemma: Conclusioni Con queste premesse possiamo dire che esiste almeno una sottostringa S m [i m,j m ], dove 1 ≤ m ≤ k, con C' = CS (S m [i m,j m ] e che esiste la sommatoria D(C', CS (S l [i l,j l ]) ≤ 2 δ

32 Lemma: Dimostrazione Tra le sottostringhe S 1 [i 1,j 1 ],…,S k [i k,j k ], prendiamo la sottostringa S m [i m,j m ], dove 1 ≤ m ≤ k, tale che D(C, CS (S m [i m,j m ])) ≤. Dalla disuguaglianza triangolare possiamo dire che:

33 Lemma: Considerazioni Il character set che abbiamo indicato con C' viene utilizzato per filtrare lo spazio di ricerca di un potenziale Median Gene Cluster e quindi viene chiamato Cluster Filter; Il Lemma ci fornisce l’approccio per definire i passi dell’algoritmo Median Gene Cluster.

34 Median Gene Cluster: Approccio 1. Calcolare l’insieme dei Cluster Filters C' per le sequenze S 1 ….S k ; 2. Calcolare, per ogni C', k-tuple in forma S 1 [i 1,j 1 ],…,S k [i k,j k ], dove almeno uno degli elementi sia una locazione di C' e soddisfi le condizioni del Lemma; 3. Calcolare per ogni k-tupla la mediana del corrispondente Character Set (CS). Una mediana che soddisfa il Lemma è detta Median Gene Cluster

35 Calcolo dei Cluster Filter (Passo 1) In k sequenze di lunghezza n possiamo avere O(kn 2 ) sottostringhe. Un algoritmo naif può determinare tutti i cluster filter in O(k 2 n 4 ) confrontando le differenze tra le coppie di tutte le sottostringhe. Presentiamo ora due approcci diversi basati sull’algoritmo Connecting Intervals per diminuire la complessità.

36 Algoritmo Connecting Intervals (CI) L’algoritmo Connecting Intervals trova gli intervalli comuni tra sequenze S 1 ….S k, di lunghezza n, appartenenti all’alfabeto ∑ Ha un passo di preprocessing dove crea un’array POS e una tabella NUM. Vediamo un’esempio di esecuzione dell’algoritmo con:  k = 2∑ = {1,2,3,4,5,6}  S 1 = (2,4,5)  S 2 = (1,3,5,2,4,5,2,4,3,6,2,5)

37 Preprocessing: Array POS L’array POS è lungo |∑| e serve per elencare, per ogni carattere c appartenente a ∑, tutte le posizioni in cui occorrono in S 2 = (1,3,5,2,4,5,2,4,3,6,2,5) POS[1] = 1POS[2] = 4, 7, 11 POS[3] = 2, 9POS[4] = 5, 8 POS[5] = 3, 6, 12POS[6] = 10

38 Preprocessing: Array POS L’array POS è lungo |∑| e serve per elencare, per ogni carattere c appartenente a ∑, tutte le posizioni in cui occorrono in S 2 = (1,3,5,2,4,5,2,4,3,6,2,5) POS[1] = 1POS[2] = 4, 7, 11 POS[3] = 2, 9POS[4] = 5, 8 POS[5] = 3, 6, 12POS[6] = 10

39 Preprocessing: Array POS L’array POS è lungo |∑| e serve per elencare, per ogni carattere c appartenente a ∑, tutte le posizioni in cui occorrono in S 2 = (1,3,5,2,4,5,2,4,3,6,2,5) POS[1] = 1POS[2] = 4, 7, 11 POS[3] = 2, 9POS[4] = 5, 8 POS[5] = 3, 6, 12POS[6] = 10

40 Preprocessing: Tabella NUM La tabella NUM è grande |S 2 | x |S 2 | e ogni sua entry contiene il numero di caratteri diversi che occorrono in ogni sottosequenza S 2 [i,j] S 2 [2,5] = (3,5,2,4)NUM[2,5] = 4 S 2 [2,7] = (3,5,2,4,5,2)NUM[2,7] = 4

41 Preprocessing: Tabella NUM La tabella NUM è grande |S 2 | x |S 2 | e ogni sua entry contiene il numero di caratteri diversi che occorrono in ogni sottosequenza S 2 [i,j] S 2 [2,5] = (3,5,2,4)NUM[2,5] = 4 S 2 [2,7] = (3,5,2,4,5,2)NUM[2,7] = 4

42 Preprocessing: Tabella NUM La tabella NUM è grande |S 2 | x |S 2 | e ogni sua entry contiene il numero di caratteri diversi che occorrono in ogni sottosequenza S 2 [i,j] S 2 [2,5] = (3,5,2,4)NUM[2,5] = 4 S 2 [2,7] = (3,5,2,4,5,2)NUM[2,7] = 4

43 Algoritmo CI: Esecuzione 1. Considera tutte le sottostringhe massimali di S 1 ; 2. Marca, utilizzando l’array POS, le posizioni che contengono i simboli di S 1 [i,j] nella sequenza S 2 in maniera iterativa; 3. Trova gli intervalli comuni confrontando i simboli della sottostringa S 1 [i,j] con quelli marcati in S 2.

44 Algoritmo CI: Esempio Supponiamo che i = 1 e j = 3: S 1 [1,3]= (2,4,5) S 2 = (1,3,5,2,4,5,2,4,3,6,2,5)

45 Algoritmo CI: Esempio Supponiamo che i = 1 e j = 3: S 1 [1,3]= (2,4,5) S 2 = (1,3,5,2,4,5,2,4,3,6,2,5)

46 Algoritmo CI: Considerazioni Ad ogni passo dell’algoritmo, il CS degli intervalli marcati in S2 è un sottoinsieme del CS di ogni S1[i,j]. Questo può essere verificato tenendo traccia del numero dei caratteri diversi in un array OCC e confrontandoli con la tabella NUM, usando il valore per la entry corrispondente. L’algoritmo considera solo gli intervalli estesi durante l’ultima iterazione.

47 Algoritmo CI: Esempio S 1 = (2,4,5)|OCC| = 3 S 2 = (1,3,5,2,4,5,2,4,3,6,2,5) NUM[3,8] = 3NUM[11,12] = 2

48 Algoritmo CI: Esempio S 1 = (2,4,5)|OCC| = 3 S 2 = (1,3,5,2,4,5,2,4,3,6,2,5) NUM[3,8] = 3NUM[11,12] = 2

49 Algoritmo CI: Esempio S 1 = (2,4,5)|OCC| = 3 S 2 = (1,3,5,2,4,5,2,4,3,6,2,5) NUM[3,8] = 3NUM[11,12] = 2

50 Algoritmo CI: Considerazioni Ogni carattere è al più |S 1 | volte l’ultimo carattere della sottostringa di S 1 e ogni posizione in S 2 può essere marcata al più |S 1 | volte. Questo perché per ogni ciclo ho una i fissa e la j che incrementa di una posizione. Ad ogni ciclo viene esteso un intervallo, vengono fusi due intervalli oppure vengono creati nuovi intervalli. Ci sono al più |S 1 | x |S 2 | estensioni di intervalli e lo stesso numero di confronti di character set.

51 Algoritmo CI: Complessità La complessità dell’algoritmo risulta essere: O(n 2 ) in tempo (confronti tra sottostringhe) O(n 2 ) in spazio (costruzione array POS e tabella NUM)

52 Algoritmo CI: Problema L’algoritmo Connecting Intervals considera solo le sottosequenze che hanno esattamente gli stessi geni. Quindi non può essere usato per trovare sequenze che differiscano di qualche simbolo.

53 Algoritmo Connecting Intervals with Errors (CIE) Questo algoritmo ci consente di trovare Cluster Filters che differiscano al massimo di un valore δ arbitrario. Per semplicità confrontiamo 2 sequenze (k=2). Quindi per il Lemma abbiamo che

54 Algoritmo CIE: Pseudocodice

55

56

57

58

59

60

61

62 Differenza con CI La differenza sostanziale con l’algoritmo CI è il calcolo e l’utilizzo di l e r

63 Differenza con CI La differenza sostanziale con l’algoritmo CI è il calcolo e l’utilizzo di l e r

64 Calcolo di l e r Indichiamo con p come una posizione marcata in S 2 l x (p) = max({l | S 2 [l, p] contenente x differenti simboli non marcati} U {0}) r y (p) = min({r | S 2 [p, r] contenente x differenti simboli non marcati} U {|S 2 | + 1}) x, y ≥ 1

65 Uso di l e r Per costruzione, gli intervalli S 2 [l x +1, r y -1] contengono al più x+y-2 simboli non presenti in S 1 [i,j] e sono massimali per ogni i e j, con i ≤ j, l’uso di l e r serve per determinare il numero di simboli diversi all’interno dell’intervallo corrente (dist).

66 Uso di l e r La variabile dist viene confrontata con quella minDist e quella più piccola viene confrontata con il valore di soglia δ Se minDist è inferiore a δ allora la coppia i, j viene inserita nel resultSet che contiene i Cluster Filter

67 Algoritmo CIE: Esempio S 1 = (1,3,4,2)S 1 [2,4]= (3,4,2) δ = 1 S 2 = (1, 3, 5, 2, 4, 5, 2, 4, 3, 6, 2, 5)

68 Algoritmo CIE: Esempio S 1 = (1,3,4,2)S 1 [2,4]= (3,4,2) δ = 1 S 2 = (1, 3, 5, 2, 4, 5, 2, 4, 3, 6, 2, 5) 1 2 3 4 5 6 7 8 9 10 11 12 p = 7 \

69 Algoritmo CIE: Esempio S 1 = (1,3,4,2)S 1 [2,4]= (3,4,2) δ = 1 S 2 = (1, 3, 5, 2, 4, 5, 2, 4, 3, 6, 2, 5) 1 2 3 4 5 6 7 8 9 10 11 12 p = 7 l 1 (7) = 6

70 Algoritmo CIE: Esempio S 1 = (1,3,4,2)S 1 [2,4]= (3,4,2) δ = 1 S 2 = (1, 3, 5, 2, 4, 5, 2, 4, 3, 6, 2, 5) 1 2 3 4 5 6 7 8 9 10 11 12 p = 7 l 1 (7) = 6 l 2 (7) = 1

71 Algoritmo CIE: Esempio S 1 = (1,3,4,2)S 1 [2,4]= (3,4,2) δ = 1 S 2 = (1, 3, 5, 2, 4, 5, 2, 4, 3, 6, 2, 5) 1 2 3 4 5 6 7 8 9 10 11 12 p = 7 l 1 (7) = 6r 1 (7) = 10 l 2 (7) = 1

72 Algoritmo CIE: Esempio S 1 = (1,3,4,2)S 1 [2,4]= (3,4,2) δ = 1 S 2 = (1, 3, 5, 2, 4, 5, 2, 4, 3, 6, 2, 5) 1 2 3 4 5 6 7 8 9 10 11 12 p = 7 l 1 (7) = 6r 1 (7) = 10 l 2 (7) = 1r 2 (7) = 12

73 Algoritmo CIE: Esempio Quindi devo considerare le sottostringhe 1. S2 [2,9]= (3,5,2,4,5,2,4,3) 2. S2 [2,11]= (3,5,2,4,5,2,4,3,6,2) 3. S2 [7,9]= (2,4,3) 4. S2 [7,11]= (2,4,3,6,2)

74 Algoritmo CIE: Esempio Quindi devo considerare le sottostringhe 1. S2 [2,9]= (3,5,2,4,5,2,4,3) 2. S2 [2,11]= (3,5,2,4,5,2,4,3,6,2) 3. S2 [7,9]= (2,4,3) 4. S2 [7,11]= (2,4,3,6,2)

75 Algoritmo CIE: Esempio Quindi devo considerare le sottostringhe 1. S2 [2,9]= (3,5,2,4,5,2,4,3) 2. S2 [2,11]= (3,5,2,4,5,2,4,3,6,2) 3. S2 [7,9]= (2,4,3) 4. S2 [7,11]= (2,4,3,6,2)

76 Algoritmo CIE: Esempio Quindi devo considerare le sottostringhe 1. S2 [2,9]= (3,5,2,4,5,2,4,3) 2. S2 [2,11]= (3,5,2,4,5,2,4,3,6,2) 3. S2 [7,9]= (2,4,3) 4. S2 [7,11]= (2,4,3,6,2)

77 Algoritmo CIE: Esempio Quindi devo considerare le sottostringhe 1. S2 [2,9]= (3,5,2,4,5,2,4,3) 2. S2 [2,11]= (3,5,2,4,5,2,4,3,6,2) 3. S2 [7,9]= (2,4,3) 4. S2 [7,11]= (2,4,3,6,2) Le sottostringhe 1,3,4 vengono inserite in ResultSet La sottostringa 2 non viene inserita

78 Algoritmo CIE: Complessità O(n 2 ) in tempo (operazione di marcatura) O(n) in tempo (calcolo di l e r) O((δ+1) 2 ) (verificare della distanza di ogni coppia) O(n 2 ) in spazio (costruzione array POS e tabella NUM) L’algoritmo CIE costa in totale O(n 2 (n+δ 2 )) in tempo e O(n 2 ) in spazio

79 Algoritmo CIE: Variazione Possiamo limitare il numero delle ripetizioni di un simbolo in S 2 con il valore b. In questo modo:  il numero di passi per la determinazione di l e r viene limitato da O(min{bδ})  la complessità diventa O(n 2 (1+ min{bδ} + δ 2 )). Questa variazione risulta particolarmente importante in certe sequenze genetiche che hanno un valore b molto basso.

80 Posso ridurre a O(n 2 (1+  2 )) il tempo avendo a disposizione uno spazio di O(n  ). L'osservazione chiave è che per ogni posizione p nella sequenza S 2 i valori di l x e r x sono gli stessi per tutti gli intervalli S 1 [i,j] con un bordo sinistro comune. Preprocessing: Rank

81 I valori l x e r x sono memorizzati in due tabelle L e R di dimensioni  x |S 2 | ciascuna. Il valori di questi array deve essere aggiornato ogni volta che il bordo sinistro i in S 1 è mosso a destra e questo accade O(n) volte. Preprocessing: Rank

82 Passi per l’inizializzazione e l’aggiornamento delle tabelle L e R: 1)Per poter creare le tabelle L e R è necessario rinominare i caratteri delle sequenze S1 e S2 con il rango della prima occorrenza nella concatenazione della stringa S1[i,|S1|]S2, inizialmente per i=1 e poi per ogni incremento di i. Preprocessing: rinomino con Rank

83 S 1 [i,|S 1 |]S 2 : 2 4 2 3 4 1 4 5 4 3 6 1 3 5 2 4 5 2 4 3 6 2 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 RANK[1] = ? S1S1 S2S2 i 1 2 3 4 5 6 4 RANK[2] = 1 RANK[3] = 3 RANK[4] = 2 RANK[5] = 5 RANK[6] = 6 Esempio : Calcoliamo RANK : ∑→{1,...., |∑|}. Preprocessing: rinomino con Rank

84 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 RANK[1] = 4 RANK[2] = 1 RANK[3] = 3 RANK[4] = 2 RANK[5] = 5 RANK[6] = 6 1 2 3 4 5 6 7 8 9 10 11 12 Preprocessing: rinomino con Rank Esempio: Rinominiamo i caratteri di S2 con il loro rango.

85 2) Inizializziamo le tabelle L e R nel seguente modo: Per ogni posizione p in S 2 andiamo alla sua sinistra (e poi alla sua destra) e cerchiamo i primi  +1 caratteri che hanno un rank maggiore del Rank(S 2 (p)). Memorizziamo come l 1,......, l  +1 ( e r 1,......, r  +1 )le posizioni in cui un nuovo carattere diverso viene individuato. Preprocessing: creo L e R

86 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 l 1 : 0 1 2 3 4 5 6 7 8 9 10 11 12 Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

87 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 l 1 : 0 1 1 2 3 4 5 6 7 8 9 10 11 12 Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

88 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 l 1 : 0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

89 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 l 1 : 0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

90 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 l 1 : 0 1 0 3 1 2 3 4 5 6 7 8 9 10 11 12 Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

91 S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 l 1 : 0 1 0 3 3 0 6 6 6 0 10 10 1 2 3 4 5 6 7 8 9 10 11 12 l 2 : 0 0 0 2 2 0 5 2 1 0 9 0 l 3 : 0 0 0 1 1 0 2 1 0 0 8 0 Tabella L Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

92 Preprocessing: creo L e R S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 r 1 : 3 1 2 3 4 5 6 7 8 9 10 11 12 r 2 : r 3 : Esempio: Inizializziamo la tabella R.

93 Preprocessing: Creo L e R S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 r 1 : 3 3 1 2 3 4 5 6 7 8 9 10 11 12 r 2 : r 3 : Esempio: Inizializziamo la tabella R.

94 Preprocessing: creo L e R S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 r 1 : 3 3 10 1 2 3 4 5 6 7 8 9 10 11 12 r 2 : r 3 : Esempio: Inizializziamo la tabella R.

95 Preprocessing: creo L e R S 2 : 1 3 5 2 4 5 2 4 3 6 2 5 S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 r 1 : 3 3 10 5 6 10 8 8 10 13 12 13 1 2 3 4 5 6 7 8 9 10 11 12 r 2 : 10 10 13 6 9 13 9 10 12 13 13 13 r 3 : 13 13 13 9 10 13 10 12 13 13 13 13 Tabella R Esempio: Inizializziamo la tabella R.

96 Preprocessing: aggiorno il Rank S 1 : 2 4 2 3 4 1 4 5 4 3 6 1 2 3 4 5 6 7 8 9 10 11 i RANK[2] = 1 + 1 = 2 RANK[4] = 2 - 1 = 1 3)Aggiornamento del rank Quando il bordo sinistro di una sottostringa di S 1 viene shiftato da i a i+1, il rank di tutti i caratteri che occorrono tra i e la successiva occorrenza del carattere S 1 [i] decresce di uno, mentre il rank di c old =S 1 [i] aumenta del numero di caratteri differenti tra le due occorrenze. Esempio:

97 Preprocessing: aggiorno il Rank 3)Aggiornamento del rank Aggiorno le entry delle tabelle L e R con il nuovo valore di c old. Esempio: S' 2 : 4 3 5 1 2 5 1 2 3 6 1 5 S'' 2 : 4 3 5 2 1 5 2 1 3 6 2 5 RANK[2] = 1 + 1 = 2 RANK[4] = 2 - 1 = 1

98 Preprocessing: aggiorno il Rank S'' 2 : 4 3 5 2 1 5 2 1 3 6 2 5 l 1 : 0 1 0 3 3 0 6 6 6 0 10 10 1 2 3 4 5 6 7 8 9 10 11 12 l 2 : 0 0 0 2 2 0 5 2 1 0 9 0 l 3 : 0 0 0 1 1 0 2 1 0 0 8 0 3)Aggiornamento del rank Per le posizioni in S2 con caratteri differenti da c old le entry delle tabelle L e R cambiano solo se il rank del carattere è più piccolo del nuovo valore di c old. Esempio:

99 Preprocessing: aggiorno il Rank S'' 2 : 4 3 5 2 1 5 2 1 3 6 2 5 l 1 : 0 1 0 3 4 0 6 6 6 0 10 10 1 2 3 4 5 6 7 8 9 10 11 12 l 2 : 0 0 0 2 2 0 5 2 1 0 9 0 l 3 : 0 0 0 1 1 0 2 1 0 0 8 0 3)Aggiornamento del rank Per le posizioni in S2 con caratteri differenti da c old le entry delle tabelle L e R cambiano solo se il rank del carattere è più piccolo del nuovo valore di c old. Esempio:

100 Preprocessing: aggiorno il Rank S'' 2 : 4 3 5 2 1 5 2 1 3 6 2 5 l 1 : 0 1 0 3 4 0 6 7 6 0 10 10 1 2 3 4 5 6 7 8 9 10 11 12 l 2 : 0 0 0 2 3 0 5 6 1 0 9 0 l 3 : 0 0 0 1 2 0 2 2 0 0 8 0 3)Aggiornamento del rank Per le posizioni in S2 con caratteri differenti da c old le entry delle tabelle L e R cambiano solo se il rank del carattere è più piccolo del nuovo valore di c old. Esempio:

101 Preprocessing: Complessità L’inizializzazione richiede O(n 2  ) in tempo e l’aggiornamento O(n  ) in tempo ad ogni incremento di i. Con tali modifiche, l’algoritmo CIE costa: O(n 2  +n 2 (1+  2 )) = O(n 2 (1+  2 )) in tempo O(n  +n 2 ) = O(n 2 ) in spazio.

102 D Dovremo considerare tutti i possibili cluster filter C’, di ogni possibile sottostringa di S 1, …, S k. Un intervallo S l [i,j] sara’ un cluter filter se la somma delle distanze minime dalle altre k-1 sequenze non eccede Tra ogni coppia dovra’ ancora essere rispettata la distanza δ, altrimenti nella somma totale non sarebbe rispettata la disuguaglianza triangolare del lemma 1. Estensione a genomi multipli

103 1)Per ogni carattere S l [j] dobbiamo esaminare tutte le tutte le sue occorrenze nelle altre k-1 sequenze. S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 Estensione a genomi multipli

104 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] j Genomi multipli: esempio j Esempio:Esaminiamo tutte le tutte le occorrenze del carattere S 1 [2] nelle altre 3 sequenze.

105 S 1 [2] j Genomi multipli: esempio j S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 Esempio:Esaminiamo tutte le tutte le occorrenze del carattere S 1 [2] nelle altre 3 sequenze.

106 2)Per ogni occorrenza del carattere S l [j] dobbiamo calcolarci lx e rx nelle altre k-1 sequenze, per poter poi calcolare D(CS(S l [i,j]), CS(S j [l x +1,r y -1])) ‏ S 1 [2] j Genomi multipli: esempio S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1

107 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] Genomi multipli: esempio 2)Per ogni occorrenza del carattere S l [j] dobbiamo calcolarci lx e rx nelle altre k-1 sequenze, per poter poi calcolare D(CS(S l [i,j]), CS(S j [l x +1,r y -1])) ‏ j

108 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] j Genomi multipli: esempio 2)Per ogni occorrenza del carattere S l [j] dobbiamo calcolarci lx e rx nelle altre k-1 sequenze, per poter poi calcolare D(CS(S l [i,j]), CS(S j [l x +1,r y -1])) ‏

109 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] j Genomi multipli: esempio 2)Per ogni occorrenza del carattere S l [j] dobbiamo calcolarci lx e rx nelle altre k-1 sequenze, per poter poi calcolare D(CS(S l [i,j]), CS(S j [l x +1,r y -1])) ‏

110 3) Calcoliamo il valore di mindist in maniera separata per ogni sequenza S 1,..., S k. S 1 [2] j mindist 1 mindist 2 mindist 3 mindist 4 Genomi multipli: esempio S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1

111 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] j Genomi multipli: esempio mindist 1 mindist 2 = [1,2] mindist 3 mindist 4 3) Calcoliamo il valore di mindist in maniera separata per ogni sequenza S 1,..., S k.

112 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] j Genomi multipli: esempio mindist 1 mindist 2 = [1,2] mindist 3 = [4,7] mindist 4 = [3,4] 3) Calcoliamo il valore di mindist in maniera separata per ogni sequenza S 1,..., S k.

113 4) Se mindist i ≤ d allora ho trovato un cluster filter. S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 S 1 [2] j Genomi multipli: esempio mindist 1 mindist 2 = [1,2] mindist 3 = [4,7] mindist 4 = [3,4]

114 O(k 2 ) in tempo, per ognuno degli algoritmi precedentemente presentati; O(kn 2 ) in spazio. Genomi multipli: Complessità

115 Ora che abbiamo calcolato tutti i possibili cluster filter, li useremo per farci guidare nella ricerca dei nostri Median Gene Cluster. Per ogni cluster filter C', calcoleremo le sue massime δ-locazioni di ogni sequenza S 1,..., S k in modo da formare k-tuple (S 1 [i 1,j 1 ],..., S k [i k,j k ]), tali che gli insiemi di caratteri di ogni coppia soddisfi : Collezione di  locazioni (Passo 2)‏

116 S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 Collezione di  locazioni (Passo 2)‏ Esempio: Calcoliamo le massime 3-locazioni di ogni sequenza S 1,...,S k per il cluster filter C'={1,2} tali che soddisfino il lemma. Ricordiamo che una δ-locazione di un insieme di caratteri C in una stringa S è una sottosequenza S[i,j] tale che: D(C, CS(S[i,j])) ≤ δ.

117 S 1 [1,2] S 2 [1,6] S 3 [4,7] S 4 [1,4] Esempio: Verifichiamo se il lemma è soddisfatto per d=10: D(C', CS(S 1 [1,2])) + D(C', CS(S 2 [1,6])) + D(C', CS(S 3 [4,7])) + D(C', CS(S 4 [1,4])) = 3 + 2 +1 +2 = 8 ≤ d E’ soddisfatto. Abbiamo dunque individuato le k-tuple che useremo nel prossimo passo. C'={1,2} S 1 : 1 2 1 3 1 4 1 5 S 2 : 1 2 4 1 2 1 3 1 2 3 4 5 6 7 8 S 3 : 1 3 3 1 2 1 2 S 4 : 1 4 1 1 Collezione di  locazioni (Passo 2)‏

118 Il numero delle δ-locazioni massimali è O(kn 2 ), mentre il numero di k-tuple può essere esponenziale in k. Tuttavia per sequenze di geni, dove |∑| è Θ(n) l'esperienza mostra che questo approccio è flessibile per valori ragionevoli di δ. Collezione di  locazioni (Passo 2)‏

119 Calcolo dei Median Gene Clusters tra k-tuple (Passo 3) Per individuare una mediana: 1. Esaminare le k-tuple ricavate dal Passo 2; 2. Contare le occorrenze di ogni gene in ognuna di esse; 3. Se un gene occorre in totale k/2 volte diventa un elemento di una mediana

120 Verifica di una mediana Ogni mediana ricavata deve soddisfare le condizioni del Lemma. In questo caso viene classificata come mediana del gene cluster. Possono esserci varie mediane da testare

121 Numero delle mediane Una mediana esiste solo se il numero di geni in comune è inferiore o uguale a, per il fatto che che ogni gene aggiunge k / 2 alla somma delle distanze. In questo caso, esistono 2 possibili mediane.

122 Esempio S1 = (1 2 1 3 1 4 1 5) S2 = (1 2 4 1 2 1 3) S3 = (1 3 3 1 2 1 2) S4 = (1 4 1 1) δ = 3 C = {1, 2}cluster filter

123 Esempio S1 = (1 2 1 3 1 4 1 5) S2 = (1 2 4 1 2 1 3) S3 = (1 3 3 1 2 1 2) S4 = (1 4 1 1) δ = 3 C = {1, 2}cluster filter

124 Esempio S1 = (1 2 1 3 1 4 1 5) S2 = (1 2 4 1 2 1 3) S3 = (1 3 3 1 2 1 2) S4 = (1 4 1 1) δ = 3 C = {1, 2}cluster filter

125 Esempio S1 = (1 2 1 3 1 4 1 5) S2 = (1 2 4 1 2 1 3) S3 = (1 3 3 1 2 1 2) S4 = (1 4 1 1) δ = 3 C = {1, 2}cluster filter

126 Esempio S1 = (1 2 1 3 1 4 1 5) S2 = (1 2 4 1 2 1 3) S3 = (1 3 3 1 2 1 2) S4 = (1 4 1 1) δ = 3 C = {1, 2}cluster filter Quindi le mediane risultanti sono {1,2} e {1,2,4}

127 Verifica Lemma Le mediane sono {1, 2} e {1, 2, 4} per le quali il Lemma è verificato

128 Possibili duplicati In base alle varie k-tuple potrebbero esserci dei duplicati tra i median gene clusters. L’algoritmo, in questo caso, elimina i duplicati.

129 Costo Totale L’algoritmo MGC costa: O(n 2  +n 2 (1+  2 )) = O(n 2 (1+  2 ) in tempo O(n  +n 2 ) = O(n 2 ) in spazio.

130 Confronto con Max-Gap Clusters Vantaggi di MGC su modello max-gap clusters: 1. Non ci sono problemi in caso di bassa densità dei cluster; 2. Non è necessario specificare un determinato gap; 3. MGC è in grado di trovare cluster approssimati (importante per particolare confronti di genomi).

131 Confronto con ILP Vantaggi di MGC su modello ILP per la ricerca di gene cluster approssimati: 1. Più efficiente per il calcolo dei cluster, anche se i cluster risultanti sono simili; 2. Vantaggio superiore nell’applicazione a genomi multipli.

132 Risultati degli Esperimenti Entrambi gli approcci presentati sono applicabili a più genomi, ma non sono stati indicati risultati sperimentali in nessuna pubblicazione sul confronto di più di due genomi.

133 Risultati degli Esperimenti Per dimostrare l'applicabilità dell’MGC sui genomi multipli, abbiamo cercato di approssimare i gene cluster in tre genomi di batteri: Bacillus subtilis, Buchnera aphidicola ed Escherichia coli, con diverse combinazioni di size s e soglia δ

134 Risultati degli Esperimenti Per trovare gene clusters è necessario fissare s e incrementare δ. Fissando s = 13 e δ = 10, troviamo 5 cluster distinti tra cui il seguente

135 Conclusioni In questa presentazione abbiamo introdotto il concetto di Median Gene Cluster (MGC) per l’individuazione di gene cluster approssimati in un insieme di k genomi. Abbiamo ottenuto un’individuazione più veloce dei gene cluster grazie a un metodo di filtraggio per limitare lo spazio di ricerca di potenziali cluster.

136 Conclusioni I risultati degli esperimenti hanno mostrato che l’individuazione di genomi multipli è fattibile, ma in effetti le combinazioni di k-tuple, risultanti dal passo 2, non si presentano con una scelta di dati reali e con parametri scelti in maniera ragionevole (s, δ).

137 Conclusioni Una più ampia analisi dell’algoritmo comunque è ancora in corso, in particolare sull’influenza del numero di sequenze S 1 ….S k da analizzare e dal valore della soglia.

138 Conclusioni Il metodo risulta essere più veloce quanto più δ è piccolo. Per applicazioni pratiche si potrebbe incrementare iterativamente δ per s fissata fino a che i cluster individuati non siano potenzialmente significativi.

139 Possibili sviluppi futuri Possibili estensione dell’algoritmo: 1. Estenderlo per individuare i median gene cluster che occorrono solamente in un sottoinsieme di genomi di input; 2. Effettuare un’analisi statistica dei cluster individuati per classificarli in base alla loro rilevanza.


Scaricare ppt "Computation of Median Gene Clusters Marco Argiolas Valentina Marioli."

Presentazioni simili


Annunci Google