an hadoop approach to build phylogenetics trees
TRANSCRIPT
Alessandro Della Rocca Marco Fazzone Natasha Marmo
Università degli Studi di Salerno Facoltà di SS.MM.FF.NN – Laurea Magistrale in Informatica
A.A. 2012/2013 Corso di Sistemi Operativi II – Prof. Giuseppe Cattaneo
Il problema
Soluzione Hadoop
Analisi delle prestazioni
Data una proteina, ricercare le n sequenze con lo
score maggiore di similarità, ottenute attraverso un algoritmo di allineamento.
Sequenze simili hanno un antenato comune.
Costruzione di un albero filogenetico basato su matrice di distanza.
DB di riferimento per le analisi proteiche.
Contiene di dati e le sequenze aminoacidiche di tutte le proteine scoperte in natura.
UNIRef 100: file da 8 gb contenente 17850592 sequenze (al 7 luglio 2013)
17milioni di allineamenti
Basato sulla programmazione dinamica.
Per una coppia di proteine di size m , n riempie una matrice di dimensione n*m , effettuando anche backtrack per recuperare l’allineamento.
Restituisce lo score di allineamento e le sequenze allineate.
Le sequenze proteiche possono essere lunghe anche 800, 1000 aminoacidi.
Basato sulla programmazione dinamica.
Edit Distance = minimo numero di operazioni necessarie a trasformare una stringa nell’altra.
Operazioni di: inserzione, cancellazione, sostituzione, trasposizione.
Calcolo della matrice di distanza per le n sequenze proteiche considerate.
Generazione di ‘rooted tree’
Metodo di clustering gerarchico
Cluster costruite su misure di distanza tra le sequenze
Considera un orologio molecolare costante.
Costruzione di una scala di distanza tra le proteine per determinare la storia evolutiva e le relazioni genetiche.
Input Size #Sequenze Time
500 MB 1115662 49 min
1 GB 2231324 1 h. 43 min
4 GB 8925296 7h. 3 min
8 GB 17580592 12 h 45 min
Problema fondamentalmente CPU-Intensive
Uso intensivo della memoria RAM
Dataset di grandi dimensioni.
Dimensioni crescenti dell’input.
Bisogno di scalabilità.
Input Split customizzato
Strategia multithreading per sfruttare al massimo la CPU
Allineamenti gestiti attraverso oggetti
Classe Mapper che esegue l’algoritmo di allineamento Needleman Wunsch sull’input assegnato.
Classe Reducer che seleziona gli allineamenti migliori globali tra tutti quelli calcolati localmente dai map task.
Il Reducer calcola la matrice di distanza e l’albero filogenetico
Lo splitter dell’input è stato settato in modo che ogni input task sia composto da 20000 sequenze.
Il parametro è stato settato considerando che valori maggiori conducevano a situazioni di esaurimento della memoria Java Heap Space.
Ogni map task calcola lo score di allineamento tra la sequenza query e tutte le sequenze che compongono la porzione di input ad esso assegnata.
Ogni map task, restituisce dieci oggetti Allineamento che costituiscono i dieci allineamenti migliori in base allo score, relativamente sempre a quella porzione di input.
Seleziona quelli con lo score più alto a livello globale.
Calcola la matrice di distanza tra questi allineamenti, tramite l’algoritmo di Damerau-Levenshtein.
Calcola l’albero filogenetico utilizzando l’algoritmo UPGMA .