Bioinfo Blog!

blog di bioinformatica e di esperienze di studio all’estero

Come creare i ‘Sequence Logos’

Posted by dalloliogm su novembre 15, 2007

I sequence logos sono un sistema inventato una decina di anni fa per rappresentare graficamente motivi e allineamenti di piccole sequenze di DNA o proteine; per esempio, potreste aver gia’ visto una figura del genere, che rappresenta i segnali di splicing piu’ conservati in uomo:

Posso confermare che questo tipo di rappresentazione torna molto utile in una varieta’ di situazioni in bioinformatica, dal dimostrare quali sono gli aminoacidi piu’ conservati in un dominio proteico, a quando si vogliono confrontare due motivi regolatori coinvoltiin un evento di regolazione o di trascrizione in due diversi organismi e capire quale e’ il piu’ conservato.

In questo post vi segnalo alcune delle risorse piu’ utili per creare e confrontare i vostri sequence logos.


Weblogo
: creare un logo a partire da un set di sequenze

Attualmente il mio strumento preferito per creare sequence logo e’ Weblogo, messo a disposizione dalla universita’ di Berkeley.

E’ molto semplice da usare: andate su questa pagina, inserite le vostre sequenze (tutte della stessa lunghezza) o uploadate un file, date un’occhiata a quali opzioni vi possano interessare, e avviate il programma.

In poco tempo vi ritroverete di fronte ad un logo come questo:

E’ un segnale presente in tutti i trascritti per indicare alla cellula di eseguire una particolare reazione (il capping) sul pre-mRNA, e si vede che le basi TGTGA e TCACANT sono conservate in alcune posizioni particolari e sono probabilmente implicate in qualche interazione importante per il riconoscimento.

TwoSampleLogo : Confronto tra due Sequence Logos simili

Puo’ essere molto utile confrontare due sequence logos: per esempio, potreste voler sapere in quali posizioni di un segnale di splicing differiscono due specie strettamente imparentate, per sapere se ci sono differenze interessanti.

Tanto per fare un esempio, nella mia tesi di specialistica abbiamo messo a confronto la conservazione dei segnali di splicing in due set di introni, quelli che avevano evidenze di intron retention (ehi, ma si capisce questa roba qua?), e quelli normali, e abbiamo visto che in alcuni casi la composizione cambiava significativamente.

Un esempio di confronto fra due sequence logo é questo:

nel quale vengono messe a confronto delle sequence in cui la Tyrosina (la Y in posizione centrale) viene fosforilata, con delle sequenze che contengono Tyrosina ma che non hanno evidenze sperimentali di fosforilazione.

Dal logo si vede chiaramente che le sequenze in cui la Tyrosina viene fosforilata contengono una sequenza consenso ricca di E a monte della Y, e che le Leucine potrebbero avere qualche ruolo nello sfavorire la fosforilazione (se non vi ricordate bene gli aminoacidi, come me, potreste dare un’occhiata a questo).

TAMO Framework: un modulo per Python per lavorare sui motivi e profili.

Se programmate in Python (mi dispiace.. ma non mi intendo molto di librerie in Perl e Java, e C), potreste trovare molto utile questo framework scaricabile gratuitamente.

L’esempio piu’ semplice che potrei fare e’ quello della creazione di un motivo a partire da una sequenza; immaginate di avere a disposizione una lista di sequenze della stessa lunghezza: per creare un motivo che ne rappresenti il consensus, vi basta dare due righe di codice in python:

from TAMO.MotifTools import Motif
m = Motif([lista di sequenze])

e vi ritroverete con un oggetto python del quale potete stampare la matrice di frequenza/contenuto di informazione, e che potete utilizzare per cercarne occorrenze su altre sequenze e per confrontare con altri motivi (per maggiori informazioni, date un’occhiata al tutorial).

Se lo abilitate in fase di compilazione, potete usare TAMO per interrogare weblogo direttamente con un comando; e inoltre, potete realizzare la maggior parte delle cose che fa TwoSampleLogo, incluso applicare diversi criteri statistici per la comparazione dei due motivi, sebbene onestamente al momento non ho capito bene in che modo.

Anche sulla lista di BioPython si é discusso a proposito di aggiungere dei moduli per gestire motivi di sequenze: ma il fatto é che il framework TAMO, ad essere sinceri, é più che ben scritto e completo, e sarebbe più auspicabile che i due progetti si unissero piuttosto che creare del codice da capo.

Ora vi lascio con la stessa immagine degli scienziati che fanno gli stupidi per rappresentare un sequence logo con il loro corpo… il primo é una G degenerata, la seconda una A, e poi ci sono una T e una C un poco strana :).

About these ads

12 Risposte to “Come creare i ‘Sequence Logos’”

  1. Paolo said

    Per chi usa R consiglio il package seqLogo scaricabile da qui.

  2. dalloliogm said

    Muchas gracias.. Non uso R, ma credo di aver capito che sia un ottimo linguaggio per la bioinformatica.

  3. dalloliogm said

    E accidenti complimenti per il blog ‘One R Tip a day’, e anche per l’altro sui libri :).

  4. Paolo said

    Grazie troppo buono mi fai :”>
    Purtroppo ho poco tempo per curare questo blog. Come molti altri blog dello stesso tipo, l’idea era quella di postare del codice base accessibile alla bisogna da qualsiasi postazione per un rapido copy & paste; purtroppo, come ben sai, anche solo questa attività porta via un sacco di tempo, figuriamoci mettere su qualcosa di più complesso! In ogni caso sono soddisfatto se anche una piccola parte del mio codice risulta utile a qualche altro utilizzatore di R (come mi sembra di dedurre dalle statistiche di Google).
    Per quanto riguarda Python,R e la bioinformatica ritengo che Python, preso come linguaggio puro, non abbia rivali (e inoltre veramente piacevole da programmare) ma, per il lavoro, bioinformatico e non, di tutti i giorni, R è impareggiabile per la qualità e la quantità di packages disponibili e per la rapidità con cui si possono fare analisi statistiche semplici e MOLTO complesse.

  5. dalloliogm said

    Beh cmq rimane una ottima idea! Anche se non lo puoi aggiornare tutti i giorni, é buono avere degli script già preparati. Forse potresti dare un’occhiata su refactoremycode, ma ci saranno sicuramente altri servizi più appropriati..

    Al momento, per l’analisi statistica mi sono affidato a scipy, ma mi sono limitato a qualche chi/t test. E non perché non abbia bisogno di analisi più complesse, ma perché non ho avuto tempo di studiare meglio :(

  6. Per la mia esperienza di analisi dati di microarray, destesto profondamente R. E’ vero, ci puoi fare di tutto e anche piu’ del caffe’, ma la sintassi e’ astrusa, i pacchetti, specie di Bioconductor, spesso contengono bachi grossolani (l’ultimo, nel pacchetto GEOQuery, mi ha fatto perdere una mattinata) e in generale la performance e’ terribilmente scadente(parliamo di cinque ore per un file GEO di 150 campioni, per non parlare dei dati sugli SNP array…)

    Linguaggi come Python o Ruby sono molto meglio da questo punto di vista. Peccato che le controparti Bio* siano spesso limitate a pochi ambiti oppure con documentazione scarssisima.

  7. Paolo said

    @Giovanni
    Ti ringrazio ancora per i complimenti e per l’utile link.
    @Luca
    Sarò di parte ;-) ma dissento profondamente dal tuo giudizio su R e ora cerchero’ di argomentare.

    “la sintassi è astrusa”

    Sicuramente, soprattutto se lo paragoniamo a Python, R/S è meno chiaro almeno all’inizio e, per un programmatore puro non così piacevole da utilizzare… D’altro canto superato lo scoglio di apprendimento iniziale (anche se devo dire che la documentazione, a tutti i livelli, è incredibilmente ricca), non dover riscoprire la ruota ogni volta, ma poter produrre in ‘no time’ analisi statistiche garantite (da statistici con i contro ***** e con il codice sempre a disposizione), poter stampare grafici e analisi con una qualità adatta alla stampa nei Journal internazionali è veramente entusiasmante dal punto di vista professionale.

    “i pacchetti, specie di Bioconductor, spesso contengono bachi grossolani ”

    Escludendo casi specifici (quello da te citato è uno) non sono d’accordo e poi, come ben sai (ho visto il tuo sito, complimenti!), è open source e migliora costantemente con il susseguirsi, piuttosto rapido (se confrontato ad altri progetti), delle nuove release.
    Al contrario, la forza di R sta nel numero esorbitante di package a disposizione(è vero puoi anche fare il caffè o ordinare una pizza su Internet ;-) ), nella qualità estrema delle analisi statistiche che permette e nel supporto ‘comunitario’ che fornisce. Per la qualità dell’analisi statistica devo dire che le persone coinvolte nel progetto sono statistici/scienziati di prim’ordine sia dal punto di vista professionale (basta verificarne le pubblicazioni e l’influsso nei vari campi della statistica, bioinformatica,etc) sia da quello umano (che ho potuto verificare di persona in qualche R/Bioconductor course e che non guasta mai!). Per quanto riguarda la comunity è semplicemente sensazionale: mi sono iscritto a molte liste di questo tipo ma nessuna è così frequentata, ricca di utili consigli e soluzioni come quella di R.

    “in generale la performance e’ terribilmente scadente”

    Paragonata a linguaggi veri e propri come C o fortran (e pure perl se si parla di manipolazione di file) non c’e’ dubbio che la velocità operativa lasci molto a desiderare… Comunque, imparate alcune peculiarità del linguaggio tipo l’uso della ‘vettorizzazione’ invece dei più comuni e deprecati loop e l’uso intensivo di package scritti in c/fortran per i calcoli ‘pesanti’, R risulta più che appropriato per qualsiasi tipo di analisi soprattutto se questa viene svolta su un bel cluster Unix/Linux con la ‘giusta’ quantità di RAM ;-) .

    Mi scuso per la prolissità ma sono veramente convinto che R, ovviamente coadiuvato quando necessario da linguaggi di piu’ basso livello (nel senso di più prestazionali ovviamente), sia uno dei fiori all’occhiello dell’open source scientifico in Italia (da quello che so e’ impiegato in buona parte delle università italiane che si occupano di statistica et similia) e nel mondo (a sentire la lista di discussione).

  8. Per fare un esempio:

    espresso o gcrma non riescono a girare decentemente sul mio PC (1 Gb RAM). RMAExpress, d’altro canto, scritto in C++ e con una gestione migliore della memoria, mi ha fatto fare una bella RMA con 150 array senza impedirmi di lavorare ad altro.

    Sulla sintassi reitero (non e’ certo un linguaggio OO) anche se forse piu’ che un difetto di R e’ forse legato al suo ispiratore S-plus.

    Per quanto riguarda i bachi grossolani, purtroppo i pacchetti di Bioconductor sono sviluppati da accademici, e nonostante la qualita’ piu’ alta rispetto alla media clamorosamente bassa dei software bioinformatici (il mio blog riporta casi evidenti) comunque soffrono di mentalita’ “Publish or perish”. Per citare un altro caso, il pacchetto “exonmap” per l’analisi degli exon array Affymetrix prevede, per poter utilizzare le funzioni di annotazione, di installarsi l’intero database Ensembl piu’ altre tabelle addizionali. Ora, senza raggiungere certe sofisticazioni, un file di testo e quattro tabelle UCSC sono sufficienti a ottenere un risultato dignitoso.

    Altro esempio: “GOdb” in forma sorgente ha un errore nel calcolo delle dipendenze (richiede AnnotationDbi >= 1.1.6 quando s’intendeva 1.0.6) e quindi sotto Linux non si installa (mentre il pacchetto per Windows va benissimo, ma non usando il suddetto SO sono fregato).

    Non e’ una noia solo di R, anche pacchetti blasonati come TMeV soffrono di problemi astrusi, ma il risultato e’ lo stesso: per girarci attorno devo reinventare la ruota un mucchio di volte.

    Uno dei veri problemi che uccidono la performance di R e’ che quasi nessun pacchetto usa funzioni native, preferendo reinventare la ruota da zero, unito alla gestione della memoria non eccelsa. Poi anche a me tocca usarlo per qualcosa (la SAM, per esempio) ma cerco di evitarlo il piu’ possibile (o usare wrapper tipo Rpy).

    Da ultimo mi scuso per aver deragliato i commenti, ci sarebbe forse da riprendere la conversazione altrove.

  9. dalloliogm said

    No figurati, é uscita fuori una discussione molto interessante.
    Magari la si potrebbe continuare su openbiosource o molecularlab… ma non credo cambi molto.
    Il fatto che R abbia una buona mailing list non é da sottovalutare… anche quella di biopython non é male, anche se mi é sempre risultato difficile trovare persone con problemi simili ai miei con le quali dialogare, e per questo é difficile collaborare per avere i moduli che mi servono.

  10. Paolo said

    Grazie Luca per le tue interessanti ed argomentate osservazioni. Ribadisco la mia predilezione per R, ma devo aggiungere che le tue puntuali obiezioni sono fondate, è capitato anche a me di voler installare alcuni package riuscendoci in un SO e fallendo su un altro (nel mio caso OK in Linux KO in winzoze) o fallendo del tutto, ma in genere nelle versioni successive (soprattutto dopo bug report o segnalazioni nelle liste di discussione) il problema viene risolto.
    Le tue obiezioni sul Publish or Perish sono sostanzialmente valide (a proposito consiglio questo software a chi è interessato a valutare l’h-index personale o di altri scienziati/ricercatori), in effetti è buona regola dare un’occhiata alla stabilità dei package che si utilizzano (per stabilità intendo da chi e da quanto vengono mantenuti); d’altro canto, e qui la FORZA (alla Star Wars) dell’Open Source si fa sentire, mi è capitato alcune volte di avere bisogno di alcune nuove feature per un particolare package che stavo utilizzando… ho scritto all’autore che nel giro di pochissimo tempo ha prodotto una versione aggiornata del package che conteneva la funzione da me richiesta!
    Ribadisco quindi la mia predilezione per questo linguaggio nell’ambito della ricerca: se si ha disposizione un sistema ‘adeguato’ e si ha la pazienza di superare gli scogli iniziali di apprendimento può dare MOLTE soddisfazioni sia allo statistico/bioinformatico alle prime armi che a quello più esperto e smaliziato, che ovviamente gli affiancherà altri tool (Perl, Python, C, etc.) a seconda delle esigenze partcolari.

    Per ulteriori interessanti scambi non esitare a contattarmi via mail o su forum, blog di tua convenienza.

    Ciao e grazie.

    P.S. By the way, ho notato dal tuo cv che abbiamo collaborato (in realtà nel mio caso con brevi consulti per analisi di microarray) con lo stesso gruppo di Padova (che ometto per la privacy): quanto è piccolo il mondo!

  11. Non farmi parlare di Biopython, va’… 8P Che al di la’ di analisi di sequenza (DNA o proteine), tutto il resto o non e’ mantenuto o ha una documentazione pessima.

  12. dalloliogm said

    Per python ho appena trovato questo altro tutorial:
    - http://iorich.caltech.edu/~t/bio+python/motility/motility-introduction.html

    E’ con PyGR, un’altra libreria per la bioinformatica in python. Ci do un’occhiata appena ho tempo e poi scrivo..

Al momento l'inserimento di commenti non è consentito.

 
Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

%d blogger cliccano Mi Piace per questo: