Bioinformatica e Web 2.0

Inside Bioinfo

20 settembre 2007 - 15:03

Non solo perl

» di in: tools

Bioinformatica va di pari passo con perl. Questo è un dato di fatto se non quasi un assioma. Di recente ci si è resi conto che perl, nonostante le sue interessanti potenzialità per quanto riguarda la gestione delle stringhe, è totalmente inadeguato quando s’ha da affrontare qualcosa che ha a che fare con i numeri. Negli ultimi anni, come si nota anche da altri post in questo blog, altri linguaggi si sono affiancati alla bioinformatica, tutti con il loro pacchetto bio: bioperl, biopython, biojava, bioruby… Addiritutta biolisp! Tutti questi linguaggi sono molto comodi, facili da usare (forse non Lisp…), e condividono tutti una scarsa efficenza. Oggi come oggi ci affidiamo a macchine potenti, senza preoccuparci del fatto che sprechiamo risorse computazionali.

Esistono altre biolibrerie che permettono lo sviluppo di programmi più efficenti, più prestanti, eppure non sono pubblicizzate. BioCocoa e BioC++, per dirne due. La prima forse interessa solo noi utenti Mac, è arrivata alla release 2.0 (io da poco ci partecipo) e permette di sviluppare applicazioni di biologia molecolare con la facilità con cui si sviluppa per OS X. Sulla seconda, beh, c’è poco da dire: C++ è un linguaggio estremamente potente, si impara relativamente in fretta, è orientato agli oggetti. In entrambi i casi bisogna solo mettersi in testa che la fase di sviluppo e prototyping non corrisponde con la fase di rilascio (già solo per il fatto che i sorgenti vanno compilati!).

Tutto questo non serve per incominciare un flame, una lotta intestina tra bioinformatici su quale sia il miglior linguaggio da usare (anche perché non esiste il miglior linguaggio, esiste quello più adatto allo scopo), ma solo ed esclusivamente per ricordare che se il vostro codice ci mette qualche ora per fare un’analisi, oltre a controllare che non stia eseguendo loop inutili, potreste anche riscriverlo utilizzando degli strumenti più appropriati!

25 giugno 2007 - 10:49

GPU Computing

Non so se ve ne siete accorti, negli ultimi tempi non si parla d’altro:GPU computing. Ma cosa significa GPU computing? Essenzialmente si tratta di demandare routine di calcolo alla GPU (Graphics Processing Unit), ovvero il processore della vostra scheda video.

Ci sono svariati motivi per cui si è intrapresa questa via. Il primo, e probabilmente più logico, è il fatto che le moderne GPU hanno una potenza di calcolo decisamente elevata. Negli ultimi anni questa è cresciuta più velocemente rispetto alla potenza delle CPU, a causa di un mercato milionario dei videogame e della relativa semplicità di progettazione delle GPU. In aggiunta, le GPU sono nativamente in grado di gestire parallelamente più unità di calcolo, sono progettate espressamente per questo dovendo gestire modelli tridimensionali con alta efficienza.

L’idea, peraltro assai semplice, è quindi interfacciare alla GPU algoritmi comunemente utilizzati. Quest’approccio è tutt’altro che semplice. Prima di tutto un algoritmo deve essere parallelizzabile. In secondo luogo si devono utilizzare delle specifiche API (Application Programming Interface) per implementare l’interfaccia. Nella migliore delle ipotesi il codice di un programma va semplicemente riscritto.

Tra i progetti emergenti non si può non citare TESLA, della NVIDIA. Si tratta di una “normale” scheda video GeForce 8800, senza uscita video. Una singola scheda ha un picco teorico di circa 500 Gflop in precisione singola. NVIDIA prevede un “server” con quattro di queste schede da collegare ad un server controller, per raggiungere un picco teorico di circa 2 Tflop! Il tutto a “soli” 12000 USD. Assieme a questa scheda vengono fornite le API e le SDK necessarie per implementare i propri algoritmi.

La domanda che vi starete facendo tutti è: “Come posso trarne vantaggio in bioinformatica?”. Beh, ci sono svariati progetti a riguardo, provate a cercare in pubmed o in google! Al momento molti di questi riguardano campi molto vicini alla fisica, come la risoluzione di strutture proteiche, ma credo che algoritmi per l’analisi delle sequenze verranno presto implementati (alla BITS 2007 era presente un poster sull’implementazione dell’algoritmo Smith-Waterman proprio su una GeForce 8800). Alcuni applicativi, già parallelizzati, sono possibili candidati di un port in questo senso, tra cui: hmmer, blast, fasta e genewise.

22 giugno 2007 - 12:14

Un nuovo arrivato

» di in: Attualità

Un saluto a tutta la comunità di MolecularLab. Sono dawe. Mi è stato chiesto di presentarmi, ora che faccio parte del gruppo di autori di Inside Bioinfo.

Brevemente: mi sono laureato in biotecnologie nell’ormai lontano 2002. L’anno successivo ho concluso un master in bioinformatica. Successivamente mi sono unito al gruppo di proteomica all’IFOM di Milano dove mi sono occupato di tante cose, dallo sviluppo di algoritmi al data mining. Ora lavoro sempre in IFOM e gestisco la piattaforma di bioinformatica su cui si sviluppa e si analizzano i dati.

Occupandomi di sistemi mi sto facendo le ossa nel campo della programmazione e, nonostante il mio progetto GNU SRS vada molto a rilento (anzi, è praticamente fermo!), sono molto attivo nell’apportare patch e migliorie a vari software bioinformatici.

Sono un Mac user entusiasta, per cui immagino che i miei post in questo blog riguarderanno più frequentemente la bioinformatica vista da Cupertino.

Bene, credo di aver detto tutto quello che serve in pochissime righe. Sono stato troppo sintetico? Accidenti, spero proprio di no…

ja ne