Computation of Median Gene Clusters Marco Argiolas Valentina Marioli.

Slides:



Advertisements
Presentazioni simili
Premessa: si assume di aver risolto (correttamente
Advertisements

Algoritmi e Strutture dati Mod B
FUNZIONI REALI DI DUE VARIABILI REALI
2. Introduzione alla probabilità
Intervalli di confidenza
RICONOSCIMENTO DI SEQUENZE DI EVENTI
Università degli Studi di Roma Tor Vergata
Algoritmi e Strutture Dati
Iterazione enumerativa (for)
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Macchine non completamente specificate
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e strutture dati
Introduzione agli stream e alle classi
Access: Query semplici
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
Modelli simulativi per le Scienze Cognitive
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Relatori: Emanuele e Denis Tornei Informatici. Introduzione In queste prime lezioni abbiamo affrontato linformatica procedendo a soluzioni di problemi,
Corso di Matematica Discreta cont. 2
Espressioni condizionali
IL GIOCO DELLA LOGICA.
Algoritmi di String Matching
Elementi di Informatica di base
Radix-Sort(A,d) // A[i] = cd...c2c1
Passo 3: calcolo del costo minimo
Vedremo in seguito che (n log n) è un limite stretto per il problema dellordinamento. Per ora ci limitiamo a dimostrare che: La complessità nel caso pessimo.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Algoritmi e Strutture Dati
Prof. Cerulli – Dott.ssa Gentili
ESTENSIONI SEMPLICI e TEOREMA DELL’ELEMENTO PRIMITIVO
ALGORITMI a.
Valutare la difficoltà dei problemi
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Rappresentazione dell’informazione nel calcolatore.
La ricorsione.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Ordinamento in tempo lineare Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, ossia per algoritmi che non fanno alcuna.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Rappresentazione dell'informazione
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
La codifica dei numeri.
Automi temporizzati.
Conversione binario-ottale/esadecimale
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
Complessità Computazionale
Algoritmi e Strutture Dati
GLI ALGORITMI DI ORDINAMENTO
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione.
Forma normale delle equazioni di 2° grado Definizione. Un'equazione di secondo grado è in forma normale se si presenta nella forma Dove sono numeri.
Operazioni di campionamento CAMPIONAMENTO Tutte le operazioni effettuate per ottenere informazioni sul sito /area da monitorare (a parte quelle di analisi)
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
La funzione CASUALE. Gli istogrammi.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Autoresizing e autolayout. Posizionare gli elementi All’interno dello storyboard, gli elementi possono essere posizionati trascinandoli nella posizione.
Transcript della presentazione:

Computation of Median Gene Clusters Marco Argiolas Valentina Marioli

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

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

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

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

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.

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

π1π1 π2π2 π3π3 π4π 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

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

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

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

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.

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

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

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

π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

π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

π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

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} S :

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 :

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 : S[3,5] non è massimale sinistro: S[2]=1  CS(S[3,5]), ma è massimale destro: S[6]=5  CS(S[3,5]).

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

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

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.

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' 

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}

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}

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 ) = = 6 D(C,C 3 ) = 4 – 1 = 3 D(C,C 4 ) = = 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.

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.

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 ]) ≤ δ

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 δ

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:

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.

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

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à.

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)

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

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

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

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

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

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

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.

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)

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)

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.

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

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

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

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.

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)

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.

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

Algoritmo CIE: Pseudocodice

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

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

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

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).

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

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)

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) p = 7 \

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) p = 7 l 1 (7) = 6

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) p = 7 l 1 (7) = 6 l 2 (7) = 1

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) p = 7 l 1 (7) = 6r 1 (7) = 10 l 2 (7) = 1

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) p = 7 l 1 (7) = 6r 1 (7) = 10 l 2 (7) = 1r 2 (7) = 12

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)

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)

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)

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)

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

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

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.

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

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

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

S 1 [i,|S 1 |]S 2 : RANK[1] = ? S1S1 S2S2 i RANK[2] = 1 RANK[3] = 3 RANK[4] = 2 RANK[5] = 5 RANK[6] = 6 Esempio : Calcoliamo RANK : ∑→{1,...., |∑|}. Preprocessing: rinomino con Rank

S 2 : S' 2 : RANK[1] = 4 RANK[2] = 1 RANK[3] = 3 RANK[4] = 2 RANK[5] = 5 RANK[6] = Preprocessing: rinomino con Rank Esempio: Rinominiamo i caratteri di S2 con il loro rango.

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

S 2 : S' 2 : l 1 : Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

S 2 : S' 2 : l 1 : Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

S 2 : S' 2 : l 1 : Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

S 2 : S' 2 : l 1 : Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

S 2 : S' 2 : l 1 : Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

S 2 : S' 2 : l 1 : l 2 : l 3 : Tabella L Preprocessing: creo L e R Esempio: Inizializziamo la tabella L.

Preprocessing: creo L e R S 2 : S' 2 : r 1 : r 2 : r 3 : Esempio: Inizializziamo la tabella R.

Preprocessing: Creo L e R S 2 : S' 2 : r 1 : r 2 : r 3 : Esempio: Inizializziamo la tabella R.

Preprocessing: creo L e R S 2 : S' 2 : r 1 : r 2 : r 3 : Esempio: Inizializziamo la tabella R.

Preprocessing: creo L e R S 2 : S' 2 : r 1 : r 2 : r 3 : Tabella R Esempio: Inizializziamo la tabella R.

Preprocessing: aggiorno il Rank S 1 : i RANK[2] = = 2 RANK[4] = = 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:

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 : S'' 2 : RANK[2] = = 2 RANK[4] = = 1

Preprocessing: aggiorno il Rank S'' 2 : l 1 : l 2 : l 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:

Preprocessing: aggiorno il Rank S'' 2 : l 1 : l 2 : l 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:

Preprocessing: aggiorno il Rank S'' 2 : l 1 : l 2 : l 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:

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.

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

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

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

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

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 : S 2 : S 3 : S 4 :

S 1 : S 2 : S 3 : S 4 : 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

S 1 : S 2 : S 3 : S 4 : 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])) ‏

S 1 : S 2 : S 3 : S 4 : 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])) ‏

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 : S 2 : S 3 : S 4 :

S 1 : S 2 : S 3 : S 4 : 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.

S 1 : S 2 : S 3 : S 4 : 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.

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

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

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)‏

S 1 : S 2 : S 3 : S 4 : 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])) ≤ δ.

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])) = = 8 ≤ d E’ soddisfatto. Abbiamo dunque individuato le k-tuple che useremo nel prossimo passo. C'={1,2} S 1 : S 2 : S 3 : S 4 : Collezione di  locazioni (Passo 2)‏

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)‏

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

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

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.

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

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

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

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

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

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

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.

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.

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).

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.

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.

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 δ

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

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.

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, δ).

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.

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.

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.