La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi per la concatenazione di match per il mapping del cDNA Flavia Rustici Miguel Gutierrez Michele Orbini Michelucci.

Presentazioni simili


Presentazione sul tema: "Algoritmi per la concatenazione di match per il mapping del cDNA Flavia Rustici Miguel Gutierrez Michele Orbini Michelucci."— Transcript della presentazione:

1 Algoritmi per la concatenazione di match per il mapping del cDNA Flavia Rustici Miguel Gutierrez Michele Orbini Michelucci

2 2 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

3 3 Introduzione Genomica comparativa  branca della biologia che si occupa del confronto di sequenze genomiche Confronto tra genomi di organismi in stretta relazione Confronto di regioni che conservano la sintenia (regioni in cui geni ortologhi occorrono nello stesso ordine) Stabilire le regioni codificanti e non codificanti di sequenze (struttura esoni-introni)

4 4 Introduzione (2) cDNA  DNA complementare ottenuto dall’mRNA nella fase di trascrizione inversa  Contiene solo esoni cDNA mapping  Obiettivo: trovare il gene (e riconoscere la struttura esoni- introni) nel genoma da cui il cDNA è stato estratto  Permette ulteriori analisi degli elementi regolatori del gene (promotori, fattori di trascrizione, binding sites, etc.)

5 5 Introduzione (3) Approccio software (anchor-based): 1. Calcolo dei frammenti (segmenti uguali in sequenze diverse) 2. Calcolo di una catena globale di score massimo di frammenti (ancore) 3. Allineamento delle regioni comprese tra le ancore

6 6 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

7 7 Siano P e T due sequenze tali che  P: pattern (cDNA)  T: testo (DNA) Sia M=(m 1,m 2, …,m n ) una lista di match Definizioni  Un match (frammento) m i tra due sequenze P e T è una tripla (p i,t i,l i ) tale che Terminologia e definizioni mimi T (DNA) = … G G A A A T A G T T A … P (cDNA) = … A C C A T A G T C G C C … Esempio match m i tra 2 sequenze

8 8  Due match m i e m j hanno overlap sul pattern quando  Due match m i e m j hanno overlap sul testo quando Terminologia e definizioni(2) mjmj P (cDNA) = … G G A C A C A G T A C C C G C C … T (DNA) = … G G A C A C A G T ….….. G T A C C C G C C mimi Esempio overlap sul pattern pipi pjpj p i +l i

9 9  Possono esistere casi in cui due match m i e m j hanno overlap sia su pattern che su testo Terminologia e definizioni(3) T (DNA) = … G G A C A C A G T G T G T A C C C G C C P (cDNA) = … G G A C A C A G T G T A C C C G C C … mjmj mimi text_overlap(m i, m j ) = max { 0, t i + l i - t j }=2 pattern_overlap(m i, m j ) = max { 0, p i + l i - p j }=4 overlap(m i, m j ) = max {pattern_overlap(m i,m j ), text_overlap(m i,m j )}=4

10 10 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

11 11 Match Chaining Problem Definizione del problema: Input  M = {m 1, m 2, …, m n } una lista di match ordinati in base alla loro posizione sul pattern p i Output  Catena di match : C deve massimizzare una funzione di score

12 12 Match Chaining Problem (2) score(C)  misura della “bontà” di una catena di frammenti C  Esempi, dove f è il numero di match in C, somma delle lunghezze dei match in C Algoritmo di base per la concatenazione 1.For i from 1 to n find prev(m i ) compute score(m i ) 2.Select the match with the largest score() and the construct the actual chain by tracing prev() entries.

13 13 Range Maximum Query (RMQ) Problema: Dato un array A di n interi trovare l’indice di massimo valore nel subarray A[i … j] per ogni i e j. Soluzioni:  Array statico Esempio: Tempo O(n) RMQ( A, i, j) = A …… ji Problema la cui soluzione sarà utile per il calcolo del match predecessore ( prev(m) )

14 14 Definizione del problema: Input  insieme S di elementi, inizialmente vuoto  ogni elemento I  S ha associati 2 valori a(I) b(I) Output RMQ(S, p, q)  elemento I di S tale che I  S’ & b(I)= max { b(I’) | I’  S’} dove S’ = {I’ | I’  S & p ≤ a(I’) ≤ q }  S RMQ Dinamico

15 15 Necessaria una struttura dati che supporti le seguenti operazioni:  Ricerca  Aggiornamento (inserzione/cancellazione) RMQ Dinamico: implementazione AVL TREE Caratteristiche generali: Albero binario di ricerca bilanciato in altezza Ricerca e Aggiornamento O(log 2 n), con n = n° nodi correnti

16 16 Nozioni sugli alberi Un albero è definito da un insieme di nodi V collegati tra loro da un insieme di archi E tale che:  esiste un nodo speciale detto radice (root)  tutti i nodi tranne la radice hanno un padre  ogni nodo ha un insieme di nodi figli ad eccezione di un sottoinsieme di nodi detti foglia (leaf) che non hanno figli  la relazione padre-figlio è rappresentata da un arco che collega il nodo padre al nodo figlio

17 17 Albero(V,E) rappresentazione grafica c il o q d a p m b ghf e rs n radice nodo interno foglia Ogni nodo è radice di un sottoalbero

18 18 Nozioni sugli alberi(2) Un albero è detto binario quando ogni nodo ha al più due figli Dato un nodo v indichiamo con  sx(v): il figlio sinistro di v  dx(v): il figlio destro di v  sinistra(v): il sottoalbero radicato nel figlio sinistro di v  destra(v): il sottoalbero radicato nel figlio destro di v destra(a) sinistra(a) c a b Esempio: sx(a) = b dx(a) = c

19 19 Nozioni sugli alberi(3) Un albero binario è detto di ricerca quando ogni suo nodo v rispetta le seguenti proprietà: Albero binario di ricerca ordinato su valori interi

20 20 Nozioni sugli alberi(4) Un albero binario è detto bilanciato in altezza quando, in ogni nodo, le altezze del sottoalbero destro e sinistro differiscono di al più 1  l’altezza di un albero binario bilanciato in altezza è O( log 2 n) a b c de f Albero binario non bilanciato Albero binario bilanciato a b c d ef h sx = 3 h dx = 1 h sx - h dx = 2

21 21 Nozioni sugli alberi(5) Un albero AVL è un albero binario di ricerca bilanciato in altezza Albero AVL L’albero AVL è la struttura dati che utilizzeremo per risolvere il problema dell’RMQ dinamico  Ricerca e Aggiornamento O(log n), con n = n° nodi correnti

22 22 Ogni nodo v dell’AVL-tree rappresenta un oggetto I  S, ed ha associato:  a(v), chiave (viene usata per l’ordinamento dei nodi nell’AVL)  b(v), rappresenta lo score  MAX_POINTER, puntatore al nodo con il massimo valore di b nel sottoalbero radicato in v RMQ Dinamico: implementazione(2) a(v) b(v) MAX_POINTER(v)

23 23 RMQ Dinamico: esempio Aggiornamento: insert(11,8)  Fase 1: ricerca posizione b(MAX_POINTER(6)) = 7 b(11) = 8 7 < 8 aggiornare MAX_POINTER(6) b(MAX_POINTER(8)) = 5 5 < 8 aggiornare MAX_POINTER(8) 8 3 b(MAX_POINTER(9)) = 5 5 < 8 aggiornare MAX_POINTER(9) non ha figli: aggiungo il nodo come figlio dx

24 24 RMQ Dinamico: esempio Aggiornamento: insert(11,8)  Fase 2: rotazione Dopo l’inserimento il nodo 8 è sbilanciato, c’è bisogno di una ROTAZIONE. h( sx(8) ) - h( dx(8) ) =

25 25 Aggiornamento: insert(11,8)  Fase 2: rotazione RMQ Dinamico: esempio è diventato nodo foglia, si deve aggiornare MAX_POINTER(8) Rotazione e aggiornamento dei MAX_POINTER aumentano la complessità dell’inserzione?

26 26 RMQ Dinamico: aggiornamento Complessità di un aggiornamento con rotazione v1v1 v2v2 T1T1 T2T2 T3T3 Rotazione v1v1 v2v2 T3T3 T2T2 T1T1  La rotazione richiede tempo O(1) in quanto i puntatori da aggiornare sono 3.  Anche l’aggiornamento del MAX_POINTER richiede tempo O(1), in quanto riguarda solo v 1 e v 2 : basta confrontare i loro MAX_POINTER con quelli delle radici dei sottoalberi T 1, T 2 e T 3. La rotazione e l’aggiornamento dei MAX_POINTER non aumentano l’ordine di complessità:  O(log n), dovuto a fase di ricerca della posizione in cui eseguire l’inserzione/cancellazione.

27 27 rmq(S,p,d)  Fase 1: Ricerca del nodo v left tale che a(v left ) = min { a(I) | p ≤ a(I), I  S } Ricerca del nodo v right tale che a(v right ) = max { a(I) | a(I) ≤ q, I  S } Ricerca del nodo v lca, lowest common ancestor di v left e v right  Fase 2: Controllando i MAX_POINTER dei nodi lungo il cammino da v left a v right troviamo il nodo v con il massimo b tale che p ≤ a(v) ≤ q RMQ Dinamico: algoritmo

28 28 Ricerca: r mq(S, 4, 9) FFase 1: ricerca v left ricerca v right ricerca v lca (lowest common ancestor) RMQ Dinamico: esempio p = 4 6 > 4 → sx 3 < 4 → dx 4 = 4, trovato v left q = 9 6 < 9 → dx 9 = 9, trovato v right P left = [ 6, 3, 4] P right = [ 6, 9 ] p q

29 29 MAX_POINTER(v 1 ) = MAX_POINTER(v 3 )  checkSX(dx(v1)) V1V1 RMQ Dinamico: esempio V lca V right checkSX(v,P1,m):: begin if (v == null) then return m; if (isLeaf(v)) then return max b (v,m); if (dx(v)  P1) then return checkSX(dx(v),P1,m); else //dx(v)  P1 m1 = max b (MAX_POINTER(dx(v)),v,m); return checkSX(sx(v),P1,m1); end V2V2 V3V3 fuori range V4V4 max_tmp = max b { v 3, MAX_POINTER(dx(v 3 )), max_tmp} V5V5 V left Fase2:  checkSX visita ricorsivamente tutti i nodi nel cammino P 1 = [ sx(v lca ), …,v left ] per trovare il massimo b nel range [p, a(v lca ))  checkDX è speculare per cammino P 2 = [ dx(v lca ), …,v right ] nel range (a(v lca ), q] O(log n) max_tmp

30 30 RMQ Dinamico: complessità rmq(S, p, q):: begin P left = search_v left (S, p); P right = search_v right (S, q); P lca = compute_v lca (P left, P right ); P1 = P left – P lca ; P2 = P right – P lca ; max left = checkSX(v lca, P1, null); max right = checkDX(v lca, P2, null); return max b (max left, max right, v lca ); end O(log n) O(1) O(log n)

31 31 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

32 32 MCCM (Shibuya e Kurochkin 2003) Input: M = {m 1, m 2, …, m n } una lista di match ordinati in base alla loro posizione sul pattern p i Output: catena di match C = {m c1, m c2, …, m cf } : C deve massimizzare una funzione di score Caratteristiche:  Si applica a due sequenze genomiche (un genoma ed una sequenza di cDNA)  Basato su Dynamic Range Maximum Query (RMQ)  Permette: Mapping efficiente e accurato Limitazione della distanza tra frammenti Overlap di frammenti

33 33 MCCM: distanza massima tra match È necessario limitare la distanza nel testo tra due match consecutivi per evitare situazioni come questa Chiamiamo MAX_LEN la distanza massima ammissibile tra due match nella catena C. prev(m i )mimi cDNA DNA MAX_LEN

34 34 MCCM con MAX_LEN 1. R = struttura dati RMQ, inizialmente vuota; 2. per ogni i da 1 a n a. per ogni match m j tale che j rmq(R, t i - MAX_LEN -1, t i -1); insert(R, m j, t j +l j -1, score(m j )); n tempo O(n log(n)) Non permette overlap! mjRmjR

35 35 MCCM con overlap È utile permettere gli overlap perchè:  sono molto comuni nel mapping del cDNA, occorrendo spesso alle estremità degli esoni del cDNA  aumentano la quantità di sequenza ricoperta dalla catena T (DNA) = … G G A C A C A G T G T G T A C C C G C C P (cDNA) = … G G A C A C A G T G T A C C C G C C … mjmj mimi

36 36 MCCM con overlap: idea L’algoritmo considera 4 tipi di match candidati per prev(m i ): A. match che non si sovrappongono con m i B. match m j che hanno pattern_overlap(m j,m i )>text_overlap(m j,m i )≥0 C. match m j che hanno pattern_overlap(m j,m i )=0 e text_overlap(m j,m i ) >0 D. match m j che hanno text_overlap(m j,m i )>pattern_overlap(m j,m i )>0 S 2 (cDNA) S 1 (genoma) mimi a b1b1 b2b2 c d

37 37 MCCM con overlap: idea (2) 1. Per ogni match m i : a) per ciascun insieme A, B, C e D si cerca il miglior match candidato ad essere prev(m i ) b) prev(m i ) sarà il “migliore” tra i 4 candidati 2. Si determina il match m con il massimo score e si costruisce la catena a partire da m utilizzando l’informazione prev()

38 38 MCCM con overlap Ricerca del match candidato predecessore per m i di tipo A:  struttura dati RMQ dinamica ( R 1 )  in R 1 sono inseriti i match m j tali che j < i e pattern_overlap(m j, m i ) = 0  rmq(R 1, t i  MAX_LEN  1, t i  1) : m i : m j (j < i)  R 1 P T MAX_LEN Non ci sono match in R 1 che abbiano overlap su pattern con m i

39 39 MCCM con overlap Ricerca del match candidato predecessore per m i di tipo B:  struttura dati RMQ dinamica ( R 2 )  in R 2 sono inseriti i match m j tali che j  i e pattern_overlap(m j, m i )  0  rmq(R 2, t i  p i  MAX_LEN  1, t i  p i  1) : m i : m j (j < i)  R 2 In R 2 ci sono solo match che hanno overlap su pattern con m i Con l’RMQ cerchiamo il match che massimizza lo score tra quelli che hanno pattern_overlap(m j, m i )  text_overlap(m j, m i ) P T

40 40 MCCM con overlap Ricerca del match candidato predecessore per m i di tipo B:  struttura dati RMQ dinamica ( R 2 ) insert(R 2, m j,, t j  p j, score(m j )  p j  l j, ) rmq(R 2, t i  p i  MAX_LEN  1, t i  p i  1) : dato m i trova match m j che lo precede ed è tale che t j  p j < t i  p i per la definizione di tipo B

41 41 MCCM con overlap Ricerca del match candidato predecessore per m i di tipo C:  struttura dati coda ( Q ) implementata con albero binario di ricerca, che supporta inserimenti, cancellazioni e ricerche (non c’è bisogno di rmq)  in Q sono inseriti i match m j tali che j  i e pattern_overlap(m j, m i ) = 0  find_best(Q,t i ) : m i : m j (j < i)  Q P T Non ci sono match in Q che abbiano overlap su pattern con m i. In Q andiamo a cercare l’elemento che massimizza lo score di m i tra quelli che hanno text_overlap(m j, m i )  0

42 42 MCCM con overlap Ricerca del match candidato predecessore per m i di tipo D:  struttura dati RMQ dinamica ( R 3 )  in R 3 sono inseriti i match m j tali che j  i e pattern_overlap(m j, m i )  0  rmq(R 3, t i  p i  1, t i  1) : m i : m j (j < i)  R 3 In R 3 ci sono solo match che hanno overlap su pattern con m i Con l’RMQ cerchiamo il match che massimizza lo score tra quelli che hanno text_overlap(m j, m i )  pattern_overlap(m j, m i ) NB: non si garantisce che t j  t i P T

43 43 MCCM con overlap C. nel calcolo dello score si deve tenere in considerazione solo la sovrapposizione nel testo struttura dati coda Q, implementata con albero binario di ricerca, che supporta inserimenti, cancellazioni e ricerche (non c’è bisogno di rmq) insert_queue(Q,m j, t j, t j + l j  1, score(m j )  t j  l j ) find_best(Q,t i ) D. nel calcolo dello score si deve tenere in considerazione la lunghezza di sovrapposizione nel testo struttura dati RMQ dinamica ( R 3 ) insert(R 2, m j, t j  p j, key(score(m j )  t j  l j, t j  p j, )) rmq(R 3, t i  p i  1, t i  1), dato m i trova match m j tale che  t i  p i < t j  p j < t i  1  NB: non si garantisce che t j < t i

44 44 MCCM con overlap Come si calcola il migliore tra i 4 match candidati?  si calcola lo score che m i avrebbe usando come predecessore di m i ognuno dei 4 candidati  si sceglie quello che massimizza score(m i )

45 45 1. R 1, R 2, R 3 = strutture dati RMQ, inizialmente vuote; 2. Q = coda, inizialmente vuota; 3. per ogni i da 1 a n in ordine a) per ogni match m j tale che jt i )) allora m (d) =nil; g) se ((m (a) = null)AND(m (b) = null) AND (m (c) = null) AND(m (d) = null)) allora prev(m i )= nil; score(m i )=l i ; h) altrimenti prev(m i )= max_score(m i, m (a), m (b), m (c), m (d) ); //max_score: restituisce il match che massimizza la funzione di score per m i i) score(m i ) = score(prev(m i ) + l i – overlap(prev(m i ), m i ); j) insert(R 2, m i, t i -p i, score(m i )- p i - l i ); k) insert(R 3, m i, t i -p i, key(score(m i )- t i - l j, t i - p i ); 4. m = ; 5. C = MCCM con overlap tempo O(n log(n))

46 46 MCCM con overlap: insert_queue (Q, I j, a j, b j, c j ):: 1. I e = b i >; 2. if ((b j < a e )OR(c j < c e )) then insert(Q,I i ); else return; 3. for each I j t.c. (( a i < b j < b i )AND( isLarger(b j ) ) if (c j < c i ) then return; else delete(Q,I j ); find_best(Q,a):: 1. I e = a >; 2. if (a > a e ) then return I e ; 3. else return nil; find_best(Q,t i ) IeIe IiIi titi t i + l i O((d+1)log n) tempo con d = il n° di elementi eliminati al (3) e n = n° elementi in Q Se implementiamo Q come albero AVL costa O( n log(n) ) O(log n) tempo

47 47 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

48 48 Mapping su sequenze multiple I genomi di specie in stretta relazione oppure i genomi di ceppi differenti di una stessa specie, condividono una grande quantità di sequenza lo stesso avviene per una sequenza di cDNA con il genoma da cui proviene Estendiamo MCCM per mappare una sequenza di cDNA su più sequenze genomiche per:  identificare geni comuni a più genomi  individuare le regioni di sintenia

49 49 Definizioni  Un match (frammento) m su k sequenze (k-1 sequenze genomiche e una di cDNA) può essere rappresentato come un iper-rettangolo in uno spazio k-dimensionale R k, ossia una k-tupla ([p 1 … q 1 ], …, [p k … q k ]) tale che S 1 [p 1 … q 1 ] = …= S k [p k … q k ] Terminologia e definizioni S1S1 S2S2 S3S3 p1p1 p2p2 q1q1 p3p3 q2q2 q3q3

50 50 Terminologia e definizioni  Possiamo definire un match m anche dai suoi angoli estremi, ossia da una coppia di k-tuple (beg(m),end(m)) tale che: beg(m) = (beg(m).x 1, …, beg(m).x k ) = (p 1, …, p k ) end(m) = (end(m).x 1, …, end(m).x k ) = (q 1, …, q k )  Relazione << tra frammenti: m’<

51 51 Problema più generale Obiettivo: trovare una catena C di match non-overlaping frammenti tale che l'ammontare di sequenza ricoperta dai frammenti della catena sia massimizzato. Input  M = {m 1, m 2, …, m n }, un insieme di n match su k sequenze Output  trovare un sottoinsieme C={f 1, f 2, …, f l } di match colineari tale che: elementi di C non si sovrappongono la quantità di sequenza ricoperta dai frammenti è massimizzato.

52 52 Gli algoritmi di approssimazione risolvono il problema della concatenazione dei match per più di 2 genomi  Problema: complessità quadratica nel numero n di match  Può essere un grande svantaggio per grandi valori di n Alternativa: Algoritmo di Zhang  costruisce una catena ottima usando la divisione dello spazio basandosi su kd-alberi Higher-dimensional Chaining

53 53 Terminologia e definizioni  KD-Albero: albero K-Dimensionale Un Albero kd (k-dimensionale) è una struttura dati per il partizionamento dello spazio, che organizza i punti su uno spazio euclídeo a k dimensioni Utilizza soltanto piani perpendicolari a uno degli assi del sistema di coordinate

54 54 K-Dimensional Tree La prima divisione (rosso) taglia la cella principale (bianco) in 2 sottocelle le sottocelle sono divise a loro volta (verde) in due sottocelle Queste 4 sottocelle sono ancora divise (blu) a loro volta in 2 sottocelle ciscuna Poiché non ho più divisioni da fare, le 8 celle finali sono chiamate celle foglie Le sfere gialle rappresentano i nodi dell’albero Esempio di suddivisione di spazio per la creazione di kd-tree, con k = 3

55 55  Gli algoritmi di approssimazione risolvono il problema della concatenazione dei match per più di 2 genomi Problema: compessità quadratica nel numero n di match Può essere un grande svantaggio per grandi valori di n  Alternativa: Algoritmo di Zhang costruisce una catena ottima usando la divisione dello spazio basandosi su kd-alberi Problema: l’analisi rigorosa della complessità in tempo di questo algoritmo è difficile perché la costruzione della catena è integrata nella struttura dell’kd-tree Higher-dimensional Chaining

56 56  Alternativa: Algoritmo di Myers e Miller Basato sul paradigma line-sweep Ricerca ortogonale su Range Tree Tempo O(n log k n)  Adesso presenteremo un algoritmo che migliora la complessità dell’algoritmo di Myers e Miller Higher-dimensional Chaining (2)

57 57  Ricerca ortogonale su range tree  Costruzione di range tree Higher-dimensional Chaining (3)

58 58 Dato un insieme S di n punti d-dimensionali, si costruisce il suo range tree in questo modo:  Se d = 1: il range tree di S è un albero binario di ricerca di altezza minima o un array ordinato sugli alementi di S  Se d > 1: il range tree di S è un albero T binario di ricerca di altezza minima con n foglie, la cui i-esima foglia più a sinistra contiene l’elemento in S con l’i-esimo valore pù piccolo della coordinata x 1 associamo ad ogni nodo interno v di T un sottoinsieme canonico C v  S che contiene punti memorizzati nelle foglie del sottoalbero radicato in v Per ogni v,  l v è la più piccola coordinata x 1 di ogni punto di C v  h v è la più grande coordinata x 1 di ogni punto di C v  Ogni nodo interno v contiene l v, h v e un range tree a d-1 dimensioni costruito su Per ogni dimensione fissata d la struttura dati è costruita in O(n log d-1 n) tempo e spazio Costruzione di un range tree

59 59  Ricerca ortogonale su range tree  Costruzione di range tree  Range Query Higher-dimensional Chaining (3)

60 60  Dato un insieme S di punti in uno spazio a d dimensioni R d, una Range Query restituisce tutti i punti di S che si trovano nel iper-rettangolo R (p, q) = [l1... H1] × [L2... H2] ×... × [ld... hd]  Se d = 1: la query può essere risolta in tempo O(log n), dovuto alla ricerca binaria sull’albero  Se d > 1: si visita il range tree a partire dalla radice Range Query (RQ)

61 61 per ogni nodo visitato v :  se v è una foglia: restituiamo il punto corrispondente se si trova nell’iper- rettangolo R(p, q)  se v è un nodo interno: non si fa niente 1 si ricerca ricorsivamente nel range tree di dimensione d-1 memorizzato in v con l’iper-rettagolo [l 2... h 2 ] ×... × [l d... h d ] altrimenti, visitiamo ricorsivamente entrambi i figli di v  Tempo O (log d n + z ), con z il numero di punti nell’iper- rettangolo R(p, q) Visita del range tree

62 62  Dato un insieme S di punti in uno spazio a d dimensioni R d, una Range Query restituisce tutti i punti di S che si trovano nel iper-rettangolo R (p, q) = [l1... H1] × [L2... H2] ×... × [ld... hd]  Se d = 1: la query può essere risolta in tempo O(log n), dovuto alla ricerca binaria sull’albero  Se d > 1: la query può essere risolta in tempo O (log d n + z ), con z il numero di punti nell’iper-rettangolo R(p, q) visitando ricorsivamente il range tree a partire dalla radice Range Query (RQ)

63 63  Ricerca ortogonale su range tree  Costruzione di range tree  Range Query  Possiamo migliorare l’efficienza se come ultima dimensione dell’albero se utiliziamo un albero di priorità anziché un range tree, ottenendo un algoritmo di concatenazione di complessità in tempo O(n log k-1 n)  Possiamo migliorare ancora l’algoritmo mediante la tecnica di fractional cascading, che risparmia un fattore logaritmico nel rispondere alle Range Query Higher-dimensional Chaining (3)

64 64 Vogliamo modificare la tecnica per RQ(0,q) per rispondere efficientemente al Range Maximum Query RMQ(0,q) Consideriamo il caso d = 2  il range tree è un x -albero binario di ricerca di y-array  per ogni nodo v del x -albero indichiamo con v.L e v.R rispettivamente i suoi figli sinistro e destro  l’y-array di v, indicato con A v, contiene tutti i punti in C v ordinati in modo crescente in base alla loro coordinata y  ogni elemento p  A v contiene due puntatori L ptr punta all’elemento q 1 più grande in A v.L tale che q 1  p R ptr punta all’elemento q 2 più grande in A v.R tale che q 2  p se questi elementi non esistono i puntatori hanno valore NULL  Esempio di questa struttura Fractional Cascading

65 65 Esempio Range tree con Fractional Cascading per i punti nella figura in alto a destra

66 66 Esempio (2) I nodi colorati sono quelli visitati dalla Range Query I nodi tratteggiati sono i nodi canonici I cerchi indicano i puntatori NULL Gli elementi cololati dell’y-array dei nodi canonici sono i punti all’interno del rettangolo di query

67 67 La ricerca di tutti i punti nel rettangolo R(0,(h 1,h 2 )) avviene in 2 passi:  Primo passo: la ricerca binaria sul y-array del nodo radice del x -albero per localizzare il punto p h2 più a destra, tale che p h2.y  [0... h 2 ]  Secondo passo: visitiamo ricorsivamente x -albero tenendo traccia dei puntatori per localizzare la foglia più a destra p h1 tale che p h1.x  [0... h 1 ] Durante la visita ricorsiva del x- albero, identifichiamo un insieme di nodi che chiameremo canonici, rispetto alla nostra query Fractional Cascading (2)

68 68 Terminologia e definizioni  Un insieme di nodi canonici è il più piccolo insieme P di nodi v 1,..., v l del x -albero tale che contiene tutti i punti p  S tali che p.x  [0...h 1 ]

69 69 Se nessun p  P soddisfa p.y  [0... h 1 ] analiziamo i puntantori durante la visita del x -albero Se incontriamo un nodo canonico v j,l’elemento e j puntato dell’ultimo puntatore visitato suddivide la lista A Vj nel modo seguente:  gli elementi a destra di e j non sono contenuti nell’iper- rettangolo R (0, (h1, h2))  tutti gli altri elementi di A Vj sono contenuti nell’iper- rettangolo R (0, (h1, h2))  e j è detto split element. Il numero di nodi canonici è O(log n) Possiamo trovare tutti i nodi canonici e gli split element del loro y-array in tempo O(log n) Fractional Cascading (3)

70 70 Quindi, sia z il numero di punti nell’iper- rettangolo R(0, q), utilizzando la tecnica di fractional cascading possiamo realizzare i Range Query in tempo:  se d = 2 O(log n + z )  se d > 2 O(log d -1 n + z ) Fractional Cascading (4)

71 71 RMQ su Range Tree Possiamo rispondere al RMQ migliorando gli y- array nel fractional cascading implementandoli con una coda di priorità costruita sull’ordinamento dei punti contenuti nell’ y-array  il rank space dei punti nel y-array è l’intervallo [1 … N ], dove N è la dimensione dell’array  la coda di priorità supporta: inserzioni, cancellazione, ricerca del predecessore e successore in tempo O(log log N )

72 72 RMQ su Range Tree (2) Per rispondere a RMQ(0,q): 1. si cercano tutti i nodi canonici 2. per ogni nodo canonico v j 1. si cerca lo split element in A Vj e sia r j il suo indice all’interno del y-array  tutti i punti in A Vj a sinistra dello split elemento (esso stesso compreso) sono contenuti in R(0,q)  i restanti elementi di A Vj non appartengono a R(0,q) 2. q j = predecessor(r j ) è l’indice dell’elemento di massimo score in A Vj 3. l’elemento con il massimo score nel range(0,q) sarà l’elemento che ha il massimo score tra i massimi trovati su ogni nodo canonico

73 73 RMQ su Range Tree: complessità Rispondere a una RMQ a due dimensioni (d=2) costa in tempo O(log n log(log n) )  Il numero di nodi canonici è O(log n )  Ogni operazione sulla coda di priorità costa O(log log n ) Se d ≥ 2 costa in tempo O(log d-1 n log(log n) )

74 74 Dati k>2 sequenze genomiche e n match si può trovare una catena ottima globale in :  tempo O( n log k-2 n log (log n ))  spazio O( n log k-2 n ) Dimostrazione (cenno)  Per ogni match eseguiamo una RMQ  Poichè i punti sono già ordinati sulla prima dimensione l’RMQ necessita solo di d = k – 1 dimensioni  Per d ≥ 2 la ricerca dell’RMQ costa spazio O( n log d-1 n ) e tempo O( n log d-1 n log log n ) Pertanto, trovare la catena ottima globale costa in tempo O( n log k-2 n log (log n) ) e spazio O ( n log k-2 n ) Teorema

75 75 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

76 76 Terminologia e definizioni  Ad ogni match m è associato un valore di rarità r definito come il numero massimo di volte che la sottostringa S i [p i … p i +l-1] occorre nella stessa sequenza S i, per 1  i  k  Dati due match m e m’ tali che diremo che hanno overlap sse S1S1 S2S2 S3S3 m’ m S1S1 S2S2 S3S3 r = 4 c’è ovelap tra m’ e m Non

77 77 Terminologia e definizioni  Per ogni coppia di frammenti m’ e m su k sequenze, dove la k- esima è la sequenza di cDNA, la quantità di overlap sul cDNA è calcolata come  Relazione << tra frammenti: m’<

78 78 Input  M = {m 1, m 2, …, m n } una lista di match su K (  2) sequenze: S 1, S 2,..., S k-1 sequenze di DNA S k sequenza di cDNA Output  Catena di match colineari C = {m c1, m c2, …, m cf, cioè m c1 << m c2 << … <<, tale che la funzione sia massimizzata Match chaining problem su k sequenze

79 79 Soluzione con grafo Il match chaining problem può essere ridotto al problema della “ricerca del cammino di costo massimo su un grafo orientato aciclico” Un grafo G( V, E ) è definito da una coppia di insiemi  V, insieme dei nodi (o vertici)  E, insieme degli archi che collegano coppie di nodi: E  ( V, V ) Un grafo G( V, E ) si dice pesato quando ad ogni arco e i  E è associato un valore w ( e i )

80 80 G(V,E) rappresentazione grafica a b c d fe V = { a, b, c, d, e, f } E = { (a, b), (b, c), (b, f), (c, f), (e, f),} Grafo non pesato Grafo pesato w ((a, b))=5 w ((b, c))=3 w ((b, f))=8 w ((c, f))=0 w ((e, f))=2

81 81 Nozioni sui grafi Un grafo G( V, E ) è orientato quando i suoi archi hanno un verso, cioè sono percorribili in un solo senso  ( v i, v j )  E, è un arco percorribile dal nodo v i al nodo v j  ( v i, v j )  ( v j, v i ) Un cammino di lunghezza l in G( V, E ) è dato da una sequenza di vertici v 0, v 1,..., v l tali che ( v i, v i+1 )  E,  i = 0, …, l – 1 Il costo di un cammino v 0, v 1,..., v l su un grafo pesato G(V, E) è dato dalla somma dei pesi degli archi che lo compongono

82 82 Nozioni sui grafi(2) Un cammino è chiuso (ciclo) quando v 0 = v l, cioè quando inizia e termina sullo stesso nodo. Un grafo aciclico è un grafo in cui non esistono cammini chiusi b c fe Grafo orientato ciclico b c fe Grafo orientato aciclico

83 83 G( V, E ) rappresentazione grafica a b c d fe V = { a, b, c, d, e, f } E = { (a, b), (b, c), (b, f), (c, f), (e, f),} w ((a, b))=5 w ((b, c))=3 w ((b, f))=8 w ((c, f))=0 w ((e, f))=2 Grafo pesato orientato aciclico esempio: w (b,c,f,e)= = 5

84 84 Riduzione a grafo Costruiamo un grafo G( V, E ) tale che  V rappresenta l’insieme dei match  E rappresenta le relazioni di precedenza tra i match ogni match in input è rappresentato come un nodo nel grafo G  sia v ’ il nodo che rappresenta m’  sia v il nodo che rappresenta m esiste in E un arco orientato ( v’, v ) solo se m’ << m w (( v’, v )) = m.length – overlap k ( m’, m ) si aggiungono in V i nodi 0 e t tali che  il nodo 0 ha un arco uscente verso ogni altro nodo v i = m i del grafo w ((0, v i )) = m i.length  il nodo t ha un arco entrante proveniente da ogni altro nodo v i del grafo w (( v i, t )) = 0

85 85 G( V, E ) rappresentazione grafica m2m2 m1m1 m3m3 m4m4 m5m5 m6m6 V = { m 1, m 2, m 3, m 4, m 5, m 6 } “ricerca del cammino di costo massimo da 0 a t sul grafo pesato orientato aciclico” 0 t E = { (m 2, m 1 ), (m 2, m 6 ), (m 2, m 3 ), (m 2, m 5 ), (m 3, m 5 ), (m 3, m 6 ), (m 6, m 5 ),} E = { (m 2, m 1 ), (m 2, m 6 ), (m 2, m 3 ), (m 2, m 5 ), (m 3, m 5 ), (m 3, m 6 ), (m 6, m 5 ), (0,m 1 ), …, (0,m 6 )} E = { (m 2, m 1 ), (m 2, m 6 ), (m 2, m 3 ), (m 2, m 5 ), (m 3, m 5 ), (m 3, m 6 ), (m 6, m 5 ), (0,m 1 ), …, (0,m 6 ), (m 1,t), …, (m 6,t)} V = { m 1, m 2, m 3, m 4, m 5, m 6, 0 } V = { m 1, m 2, m 3, m 4, m 5, m 6, 0, t } 5 3

86 86 Risoluzione del problema sul grafo È un problema classico della teoria dei grafi risolto in tempo O(n 2 ), con programmazione dinamica  Inefficiente con un numero di frammenti n molto alto La riduzione costa comunque tempo O(n 2 )

87 87 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

88 88 Usando una soluzione basata sulla geometria è possibile ridurre la complessità in tempo Concetto di regione (k-dimensionale): A(m) = Rect (0,beg(m)) B(m) = ([beg(m).x 1 … end(m).x 1 ], [0 … beg(m).x 2 ]) C(m) = ([0 … end(m).x 1 ], [beg(m).x 2 … end(m).x 2 ]) AB(m) = A(m)  B(m) Soluzione geometrica C(m) A(m) B(m) S 2 (cDNA) S 1 (genoma) m

89 89 Idea ordinare i match in input m 1,..., m n e processarli in base ad un criterio di ordinamento. Per ogni match m i :  cercare il miglior match predecessore tra quelli già processati, distinguendo in base al fatto che abbia o meno sovrapposizione sul pattern (cDNA)  calcolare score(m i )  marcare il match m i come già processato (attivo)

90 90 Considerazioni iniziali Consideriamo  i match come coppie di punti a k dimensioni (beg(m),end(m)) con beg(m) = beg(m).x 1, …, beg(m).x k end(m) = end(m).x 1, …, end(m).x k  D 1, D 2 sono strutture dati semi-dinamiche che supportano RMQ a 2k dimensioni con attivazione per manipolare i match (RMQ D1,RMQ D2 ) RMQ con attivazione: nel calcolo dell’RMQ si considerano solo i match attivi, ignorando quelli inattivi activate(D, m, p) : procedura che attiva il match m (già inserito nella struttura dati D) con priorità p

91 91 Algoritmo 1. Ordiniamo i punti di inizio dei match in base alla loro coordinata x 1 2. Tutti i match sono caricati come inattivi sia in D 1 che in D 2 3. Processiamo i match come a simulare una linea che percorre i punti sulla coordinata x 1 (line-sweep paradigm) Quando il match m i viene processato: gli viene associato prev(m i ) viene calcolato score(m i ) m i viene attivato in D 1 e in D 2 4. Prendiamo il match di massimo score e costruiamo la catena utilizzando l’informazione sul predecessore

92 92 Ricerca del predecessore Si sfrutta il concetto di regione per individuare i match già attivi che sono in relazione << con il match corrente m i, e tra questi distinguiamo quelli che hanno overlap sul pattern da quelli che non lo hanno:  m j << m i sse beg(m j )  A(m i ) and end(m j )  { A(m i )  B(m i )  C(m i ) }  m j ha overlap k con m i sse end(m j )  C(m i ) C(m i ) A(m i ) B(m i ) S 2 (cDNA) S 1 (genoma) mimi mjmj m2m2 m3m3 Esempio:  m j è un match non (ancora) attivo  non è vero che m 1 << m i  m 2 << m i e non ha overlap k  m 3 << m i ed ha overlap k m1m1

93 93 Ricerca del predecessore(2) La ricerca dei match candidati viene fatta utilizzando RMQ a 2k dimensioni su due regioni disgiunte  le prime k dimensioni devono assicurare che beg(m’)  A(m i )  le ultime k dimensioni devono assicurare, distinguendo i due casi, che end(m’)  {AB(m i )} oppure end(m’)  C(m i ) C(m i ) A(m i ) B(m i ) S 2 (cDNA) S 1 (genoma) mimi  m 1 = RMQ D1 (A(m i ), {AB(m i )}) per la ricerca del match di massimo score che non ha sovrapposizione sul pattern (cDNA) con il match corrente m i end(m 1 ).x k < beg(m i ).x k  m 2 = RMQ D2 (A(m i ), C(m i )) per la ricerca del match di massimo score che ha sovrapposizione sul pattern (cDNA) con il match corrente m i beg(m i ).x k ≤ end(m 2 ).x k ≤ end(m i ).x k m1m1 m2m2

94 94 Ricerca del predecessore(3) Tra i 2 match candidati si sceglie quello che massimizza lo score di m i :  score 1 = m 1.score + m i.length  score 2 = m 2.score + m i.length – overlap k (m 2, m i )  if (score 1 ≥ score 2 ) then prev(m i )=m 1 score(m i )=score 1  else prev(m i )=m 2 score(m i )=score 2 C(m i ) A(m i ) B(m i ) mimi m1m1 m2m2 S 2 (cDNA) S 1 (genoma)

95 95 Attivazione di un match Dopo aver stabilito il prev(m i ) e score(m i ), si deve attivare m i :  in D 1 il match m i viene attivato con priorità score(m i )  in D 2 il match m i viene attivato con priorità score(m i ) – end(m i ).x k Perchè usiamo priorità diverse?  Quando si calcola RMQ D1 si cercano frammenti senza overlap su cDNA con il match corrente m i, perciò quello che massimizza score(m i ) sarà quello col più alto score score(m i ) = score(m 1 ) + m i.length  Con RMQ D2 si cerca il match migliore tra quelli che hanno overlap con il match corrente m i, perciò non è detto che il match di score massimo in D 2 sia quello che massimizza lo score ( m i ) score(m i ) = score(m 2 ) + m i.length – overlap k (m 2, m) = score(m 2 ) + m i.length – ( end(m 2 ).x k – beg(m i ).x k ) = score(m 2 ) – end(m 2 ).x k + m i.length + beg(m i ).x k

96 96 Ricerca della catena ottima Esempio  Input: M = {m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8 } m1m1 5 m8m8 8 m3m3 20 m4m4 12 m5m5 9 m6m6 23 m7m7 16 m2m2 11 NB: l’ordine dei match in input non è quello con cui sono processati nella fase precedente  Output: C = {m 1, m 2, m 4, m 7, m 6 } Questa parte dell’algoritmo ha costo O(n)

97 97 Complessità La complessità dell’algoritmo dipende dalla struttura dati utilizzata per implementare l’RMQ con attivazione in D 1 e D 2.  Range tree: eseguire RMQ costa O(log 2k-1 n log (log n)) tempo e O(log 2k-1 n) spazio  L’algoritmo esegue 2 RMQ per ogni match, quindi calcola per O(n) volte l’RMQ La complessità totale è O(n log 2k-1 n log (log n)) tempo e O(n log 2k-1 n) spazio

98 98 Abbassiamo la complessità È possibile ridurre la complessità dell’algoritmo riducendo le dimensioni dell’RMQ in D 1 e D 2  il primo range [0 … beg(m i ).x 1 ] può essere ignorato perché i match sono processati in ordine crescente secondo la coordinata x 1 del punto di inizio tutti i match già attivi rispettano questo range  il k -esimo range [0 … beg(m i ).x k ] può essere ignorato in D 1 :  con il k- esimo range si vuole un match m 1 tale che beg(m 1 ).x k < beg(m i ).x k, ma questa condizione è ridondante in quanto il 2 k -esimo range controlla che end(m 1 ).x k < beg(m i ).x k in D 2 si possono verificare 2 casi:  beg(m 2 ).x k < beg(m i ).x k, OK  beg(m 2 ).x k ≥ beg(m i ).x k, in questo caso m 2 deve essere scartato. Questo non compromette l’ottimalità della catena poiché non esiste un altro match che termina in C( m i ) che possa dare ad m i uno score migliore di uno che temina in AB( m i ) La complessità scende a O(n log 2k-3 n log (log n)) tempo e O(n log 2k-3 n) spazio

99 99 Casi speciali L’algoritmo può essere specializzato per 1. usare in input match di tipo multi_MUM, riducendo la complessità 2. limitare la quantità di overlap ammissibile tra due match consecutivi nella catena di output, riducendo la complessità

100 100 Casi speciali: multi-MUM Maximal Multiple Unique Match: match con valore di rarità 1, cioè per ogni sequenza S i la sottostringa S i [p i … p i + l - 1] occorre in S i esattamente una sola volta S 2 (cDNA) S 1 (genoma) Conseguenze:  basta controllare le k dimensioni sulla fine dei match in quanto  end(m’) < end(m)  beg(m’) < beg(m)  anche il primo range [ 0 … end(m).x 1 ] può essere ignorato, a causa del paradigma line-sweep  ogni m’ con end(m’).x 1 > end(m).x 1 avrà beg(m’).x 1 > beg(m).x 1, quindi m’ non è stato ancora attivato  D 1 e D 2 contengono punti a k - 1 dimensioni (end(m).x2,…,end(m).xk) La complessità si riduce a O(n log k-2 n log (log n))

101 101 Casi speciali: limitazione sull’overlap Assunzioni: l: lunghezza minima di un match l -1: massimo overlap fra due match consecutivi nella catena Per trovare il predecessore m’ del match m, imponiamo che ma poiché l è la lunghezza minima di un match, sicuramente avremo che C(m) A(m) S 2 (cDNA) S 1 (genoma) m l B(m) l

102 102 Casi speciali: limitazione sull’overlap(2) A (m) S 2 (cDNA) S 1 (genoma) OK l l : lunghezza minima di un match Conseguenze: basta controllare le k dimensioni sulla fine dei match! se applichiamo il paradigma line- sweep in base al punto virtuale v(m) = (beg(m).x 1 +l,…,beg(m).x k +l) si può eliminare anche la prima dimensione D 1 e D 2 contengono punti a k - 1 dimensioni ( end(m).x 2,…,end(m).x k ) La complessità si riduce a O(n log k-2 n log (log n)) v(m) m l OK

103 103 Sommario 1. Introduzione 2. Terminologia e definizioni 3. Match Chaining Problem su 2 sequenze 1. Algoritmo base 2. Range Maximum Query (RMQ) 3. Algoritmo MCCM 1. Limitazione della distanza tra i match 2. Overlap 4. Match Chaining Problem su k sequenze 1. Terminologia e definizioni (2) 2. Concatenzione di match non overlapping 1. RMQ a dimensioni multiple 3. Concatenzione di match overlapping 1. Riduzione a grafo 2. Algoritmo basato su geometria 3. Risultati Sperimentali 5. Riferimenti

104 104 Risultati sperimentali Per gli esperimenti sono stati utilizzati come sequenze:  il cDNA del D.melanogaster (  23 Mbp)  cromosoma 2R del D.melanogaster (  21 Mbp)  cromosoma 2R del D.simulans (  20 Mbp) Con il programma ramaco si sono generati frammenti di lunghezza minima 15. Sono stati confrontati 3 algoritmi su differenti valori di rarità massima dei match in input:  soluzione basata su grafo (graph)  soluzione geometrica (geom1)  soluzione geometrica con limite di overlap (geom2)

105 105 Riferimenti 1. Match Chaining Algorithms for cDNA Mapping di T.Shibuya e I.Kurochkin, proceedings of 3rd Workshop on Algorithms in Bioinformatics (WABI), , Chaining Algorithms and applications to comparative genomics di M.I.Abouelhoda e E.Ohlebusch, Journal of Discrete Algorithms 3(2-4), , A chaining Algorithm for Mapping cDNA Sequences to Multiple Genomic Sequences di M.Abouelhoda, proceedings of 14th International Symposium on String Processing and Information Retrieval (SPIRE), 1-13, 2007.


Scaricare ppt "Algoritmi per la concatenazione di match per il mapping del cDNA Flavia Rustici Miguel Gutierrez Michele Orbini Michelucci."

Presentazioni simili


Annunci Google