Il progetto ProFAX e l’algoritmo di protein folding basato su Monte Carlo
Il problema del protein folding è un argomento di primaria importanza nell’era post-genomica [Khoury, G. A., Smadbeck, J., Kieslich, C. A., & Floudas, C. A. (2014)]. Con il termine “protein folding” s’intende la connessione tra la sequenza di aminoacidi e la struttura terziaria della proteina. La previsione della struttura proteica è utilizzata per determinare con precisione l’intera conformazione tridimensionale di una proteina disponendo solamente della sua sequenza aminoacidica e sfruttandone le caratteristiche energetiche e geometriche. Questa conoscenza è essenziale per lo sviluppo di nuove terapie farmacologiche. La capacità di produrre nuovi modelli attraverso la previsione Ab Initio della struttura delle proteine a partire da una sequenza sconosciuta di amminoacidi (o da una sequenza di amminoacidi di cui non è nota la struttura tridimensionale) è importante per la loro progettazione, e per l’avanzamento nel campo delle biotecnologie. La dimensione dei dati di questo tipo di algoritmi e la loro complessità richiedono ai biologi di lavorare in stretta collaborazione con esperti in campo informatico e matematico. Industrie farmaceutiche e biotecnologiche potrebbero sfruttare tali approcci bioinformatici per migliorare la loro ricerca e lo sviluppo dei prodotti.
Il miglioramento dell’approccio computazionale al protein folding porta diversi benefici nella realizzazione del completo sequenziamento del genoma. Esso è, infatti, uno dei punti cardinali nel campo della genomica computazionale. Questo campo è in costante crescita, attirando fondi per la ricerca sia da istituzioni accademiche che da industrie private. I risultati, derivati da questo approccio, potrebbero essere sfruttati anche in applicazioni nel campo della ricerca agricola, in ambito di biodiversità, sviluppo sostenibile, bioingegneria e nutrizione.
Tuttavia, nonostante la potenzialità di questo approccio, le aziende sono frenate dall’elevata potenza computazionale, intesa come grande quantità di calcoli, che l’algoritmo necessita. Uno speed-up nel tempo di esecuzione sarebbe fondamentale per migliorare la produttività di tali industrie.
Dopo aver recentemente presentato il progetto PrISMA condotto da Gea Bianchi e Fabiola Casasopra per la ricerca di biomarcatori proteomici, è la volta di un’implementazione accelerata di un algoritmo Ab Initio di protein folding, basato sulla simulazione Monte Carlo. A pensarlo sono stati due studenti del Politecnico di Milano, Giulia Guidi e Lorenzo Di Tucci: lei studentessa di Ingegneria Biomedica, lui di Ingegneria Informatica. Il progetto è ProFAX.
chi sono
Giulia ha iniziato ad interessarsi alla bioinformatica dopo aver frequentato un corso di informatica tenuto dal Prof. Marco Domenico Santambrogio, responsabile del NECSTLab del Politecnico di Milano. Durante l’estate, ha effetuato alcune ricerche in ambito bioinformatico e, nel mese di ottobre, ha proposto la sua idea al Prof. Santambrogio, il quale ha deciso di sostenerla. Ha trovato molto stimolante l’esperianza presso il NECSTLab ed ha deciso di unire alla sua formazione in Ingegneria Biomedica alcuni esami di Ingegneria Informatica.
Lorenzo si è interessato alle architetture hardware durante il suo quarto anno presso il Politecnico di Milano, mentre frequentava il corso di High Performance Processor and Systems, durante il quale ha lavorato ad un progetto riguardante l’accelerazione hardware. Lorenzo ha rafforzato la sua conoscenza sul tema nel corso di uno stage di 6 mesi nei laboratori di ricerca Xilinx (la società che ha inventato le FPGA) a Dublino, Irlanda, sotto la guida e la supervisione della Dr. Michaela Blott. A seguito della proposta di Giulia, Lorenzo ha iniziato a collaborare con lei nella realizzazione dell’implementazione, che ha portato ad una pubblicazione in occasione della conferenza RAW.
il progetto
“Il nostro obiettivo -spiegano a Close-up Engineering Giulia Guidi e Lorenzo Di Tucci- è quello di raggiungere un miglioramento in termini di rapporto tra le prestazioni e il consumo di energia, utilizzando la nuova toolchain di Xilinx: SDAccel, mediante la board Alpha Data”.
L’implementazione proposta si basa su una simulazione di tipo Monte Carlo, che è comunemente impiegata per calcolare percorsi e proprietà termodinamiche nell’ambito della proteomica. Questa simulazione consiste in una serie di passaggi casuali nello spazio conformazionale, ad ogni passo vi è una perturbazione di qualche grado di libertà nella struttura della molecola. Un passo è accettato con una probabilità che dipende dalla variazione del valore della funzione di energia. Tipiche funzioni energetiche sommano vari termini di energia differenti. La funzione di energia adottata nell’algoritmo, per cercare la conformazione di minima energia, si chiama funzione EEF1 (Lazaridis, T., & Karplus, M. (1999). Effective energy function for proteins in solution. Proteins: Structure, Function, and Bioinformatics, 35(2), 133-152). Si tratta di una funzione basata sugli atomi ed è descritta da Themis Lazaridis e Martin Karplus. EE1 utilizza la funzione CHARMM19, basata sull’energia potenziale dell’idrogeno polare, completata da un semplice modello gaussiano per l’energia libera di solvatazione.
La funzione della densità di energia libera di solvatazione è stata scelta basandosi su calcoli meccanici statistici. Le catene ioniche laterali sono trattate come altamente polari ma neutre, al fine di evitare il problema derivante dalla compensazione non sufficientemente accurata tra le interazioni di Coulomb e la solvatazione di energia libera dei gruppi ionici. Il modello utilizza la costante dielettrica lineare, dipendente dalla distanza, nella funzione CHARMM.
Sul codice proposto è stato effettuato un profiling con lo strumento Callgrind e la visualizzazione dei dati del profilo mediante KCachegrind.
“L’obiettivo di questa strategia -continuano i ricercatori- era quello di scoprire quali fossero i colli di bottiglia nel programma e la funzione, computazionalmente più intensa (nel nostro caso questa funzione occupava più del 60% del tempo di esecuzione totale dell’applicazione). La funzione identificata, in questo caso chiamata computePairEnergy, è stata parallelizzata. Successivamente, è stata fatta un’analisi statica della funzione al fine di comprendere, sfruttando il Roofline model (Williams, S., Waterman, A., & Patterson, D. (2009). Roofline: an insightful visual performance model for multicore architectures. Communications of the ACM,52(4), 65-76.), se valesse la pena spostare la funzione in hardware”.
A causa della sua complessità, un’implementazione software è inefficiente sia dal punto di vista energetico che in termini di tempi di esecuzione. Spostare l’implementazione in hardware è il modo migliore per ottimizzare questo tipo di algoritmi.
In questo contesto ci sono diverse piattaforme hardware, come ASIC (Application Specific Integrated Circuits), GPU (Graphics Processing Unit) e FPGA (Field Programmable Gate Array), tra le quali l’utente può scegliere per implementare l’algoritmo.
In generale, le piattaforme ASIC sono spesso la soluzione migliore sia in termini di performance che di consumi. Tuttavia, il costo di produzione di tali dispositivi è molto elevato ed è giustificato solo in caso di grande numero di vendite. Le piattaforme GPU, grazie alla loro architettura, possono accelerare notevolmente alcuni tipi di algoritmi, ma dall’altro lato il loro consumo energitico è elevato.
Le FPGA, invece, offrono un buon compromesso tra prestazioni e consumo di energia.
Grazie alla loro flessibilità e la mancanza di un’architettura hardware fissata, l’FPGA può essere configurata e riconfigurata più volte dall’utente per implementare funzioni diverse. Un’implementazione hardware su una FPGA darebbe il vantaggio di un aumento della velocità di esecuzione rispetto a un’implementazione software, riducendo il consumo di energia e, in aggiunta, permettendo all’hardware di acquisire la capacità di adattarsi a runtime.
Inoltre, i costi di sviluppo di un’applicazione per l’esecuzione su un FPGA sono notevolmente inferiori rispetto a quello dello sviluppo in ASIC. Per questi motivi, la piattaforma FPGA sembra essere la scelta migliore per la nostra applicazione. Possiamo, infatti, sfruttare le sue capacità di riconfigurabilità al fine di creare un’implementazione hardware mirata all’ottimizzazione del rapporto tra prestazioni e potenza.
“Un articolo scientifico -concludono Giulia e Lorenzo-, che descrive le nostre scelte d’implementazione e i nostri primi risultati in termini di speed-up dell’implementazione hardware rispetto a quella software di partenza, è stato accettato, e sarà pubblicato, alla Conferenza RAW (Reconfigurable Architecture Workshop, raw.necst.it), che si terrà a Chicago, Illinois (USA), il 23-24 maggio. Durante il workshop ci sarà una presentazione del nostro lavoro e sarà esposto un poster, chiunque sia interessato potrà assistere e porre domande”.
Insieme, con altri studenti del NECSTLab del Politecnico di Milano, parteciperanno con la loro applicazione al Concorso Open Hardware Xilinx 2016.