bioinfusion

blog di vita bioinformatica stremata

Archivio per la categoria ‘sorgente’

Presentazione per Galaxy (nuova piattaforma per analizzare dati genomici)

Pubblicato da fuliggians su 26 Novembre 2007

L’integrazione è sempre più facile da realizzare. Ecco uploadata una presentazione powerpoint di questo nuovo tool, di cui parlo su Inside Bioinfo. Un click ed ecco per i più pigri una favolosa presentazione offerta dal bioamico Matteo Cesaroni!

Many thanks!!

Pubblicato su bioinformatica, fuligramma, novità, sorgente, strumenti, tutorial | Contrassegnato da tag: , | 4 Commenti »

Visualizzazione di network di interazione tra proteine (sulla base di parole chiave)

Pubblicato da fuliggians su 11 Settembre 2007

Parlando di protein-protein interaction, risulta spesso difficoltoso creare classi e categorie per poter assemblare cluster funzionali di proteine. Le informazioni circa interazioni funzionali sono o non disponibili, o limitate a piccoli e ben specifici gruppi proteici, oppure sono sottoposte a una diaspora che costringe il bioinformatico a raccogliere i dati dalle fonti e database più diversi.
Eppure, è comune in proteomica avere a che fare con enormi liste di proteine identificate in un unico complesso; un’analisi quantitativa può anche fornire informazioni importantissime quali per esempio la lista delle le proteine più espresse. Eppure al contempo non si è in grado di collezionare in modo semplice le relazioni che vigono tra di esse. Questo perchè uno studio funzionale non è certo un’analisi di routine da condurre, e le conseguenti annotazioni presenti nei vari DB non hanno una forma compiuta, facilmente accessibile, come avviene invece per esempio nelle analisi genomiche.

Per superare questo limite ci viene in aiuto il fatto che la visualizzazione delle reti biologiche sta diventando un’operazione sempre più comune per l’analisi di dataset di grosse dimensioni. Questi network fanno riferimento ad un’ampia varietà di interazioni biologiche, similarità di sequenza, vie metaboliche, regolazioni geniche o interazioni proteiche (evviva).
Il mio obiettivo in questo caso è trovare un modo automatico di dare una rappresentazione visiva delle interazioni che possono esserci tra le proteine che compongono il complesso analissato. Interazioni nel senso più ampio, non solo quelle funzionali.

Dunque, la mia piccola ricetta comprende:
1) una lista di proteine identificate con il relativo score di identificazione
2) un server SRS che mi permetta di accedere comodamente a swissprot
3) uno script perl realizzato ad hoc
4) un software di visualizzazione di network

Spieghiamo le cose con ordine. La lista di proteine possiamo ottenerla da un’analisi di spettrometria di massa, usando per esempio come software di ricerca Mascot. Un piccolo lavoro di parsing ci permette di ottenere una semplice lista di proteine identificate.
SRS è un sistema che permette di interrogare database biologici. All’interno di uno script perl è possibile inserire query che sfruttano la potenzialità del comando getz per estrarre facilmente la sequenza fasta e tutte le altre informazioni della relativa proteina.
L’assunto di base è che il database SWISSPROT contiene tra i vari dati che fornisce un campo molto utile KEYWORD. Ovvero una lista di parole chiave che identificano genericamente le caratteristiche della proteina, e che quindi danno un sunto di tutte le sue proprietà desunte dai vari paper.
Estraiamo allora per ogni protein ID (che abbiamo dalla lista di proteine identificate) i vari keyword, e li associamo allo score di identificazione.
Infine diamo in pasto il risultato ad un software per la visualizzazione di network.
Ce ne sono di ogni tipo. Ve ne propongo uno piccolo, dinamico, 2D: BIOLAYOUT JAVA. Lo potete trovare descritto qui e già scaricato nel box dei file del blog. Un breve studio della sua sintassi mi permette di generare un file da dargli in pasto.
Ecco il risultato, una bella immagine che può far bella figura nel mio paper, e che mi dà un’idea complessiva delle interazioni tra proteine, quali sono fosforilate, quali hanno una struttura 3D conosciuta, ecc…

biolayout.jpg

Non male per 100 righe di programma:

Leggi il seguito di questo post »

Pubblicato su Mascot, bioinformatica, perl, protein-protein interaction, smart trick, sorgente, srs, swissprot | Lascia un commento »

un bash file per gestire agevolmente procedure e viste mysql

Pubblicato da fuliggians su 10 Settembre 2007

se sei un bioinformatico bravo e buono ti avran chiesto gentilmente almeno una volta di gestire il DB opensource (mysql, naturalmente) del tuo laboratorio; e questo col tempo diventerà sempre più complesso, con una proliferazione di query, stored procedure e viste. Il tutto in un organizzato disordine. Personalmente trovo utile cercare di tenere quanto più possibile le operazioni dentro mysql, tanto da preferire utilizzare il comando EVENT piuttosto che il CRONTAB del server. Scelta personale. Oggi volevo mostrarvi un piccolo trucchetto che mi sono inventato per gestire ed automatizzare molte delle situazioni che possono capitare.

La situazione (particolare) che mi ritrovo ad affrontare è questa: il database è popolato quotidianamente da una grande mole di dati (spettrometria?, microarray?, quel che vuoi). Ogni giorno viene creata una tabella che si chiama MOLEDIDATI_data. E rimane lì come archivio.
Ora immaginate di dover fare una qualunque operazione su una tabella passata. Dovresti scrivere o modificare una stored procedure per esempio indicando quale tabella usare. Personalmente preferisco automizzare quanto più possibile. Ho costruito allora una struttura del genere:

  • Prima ho creato un database “action” (CREATE DATABASES action;)
  • poi ho creato una tabella “listprocedure” così fatta:

DROP TABLE IF EXISTS action.listprocedure;CREATE TABLE action.listprocedure (
indice int(10) unsigned NOT NULL AUTO_INCREMENT,
tipo varchar(45) NOT NULL,
query text NOT NULL,
PRIMARY KEY (indice)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  • a questo punto posso popolare la tabella listprocedure con qualunque azione che voglio operare su una GENERICA tabella, per esempio gli piazzo dentro la creazione di una stored procedure (in questo caso semplicissima) e la sua relativa CALL:

INSERT INTO action.listprocedure (query) VALUES (‘DELIMITER $$
DROP PROCEDURE IF EXISTS DATABASE.nomeacaso $$
CREATE PROCEDURE DATABASE.nomeacaso ()
BEGIN
SELECT * FROM DATABASE.MOLEDIDATI_datagenerica;
END $$

DELIMITER ;
CALL DATABASE.nomeacaso;’)

a questo punto sono pronto. Mi basta scrivere un piccolo file bash (che chiameremo pippo.sh) che fa da motore alla sostituzione dei nomi all’interno della query:

#!/bin/bash
indiceProc=$1
day=$2
result=`mysql -h [host] -u root –password=[psw]<<EOF
use action; SELECT query FROM action.listprocedure where indice=$indiceProc;
EOF
`
updated=${result//datagenerica/$day}
for line in $updated; do
if [ $line != "query"]; then
echo “$line” >engineUpdated.sql
fi
done

#eseguo
mysql -h [host] -u root –password=[pwd]<engineUpdated.sql

a questo punto sono a posto. Mi basta lanciare il bash come:
pippo.sh 1 010307 (che lancia la query con indice 1 sulla tabella del 01 Marzo 2007)

il vantaggio è che non devo fare una specifica query per ogni tabella e tutte le query rimangono dentro al DB in un formato “generico”

Pubblicato su bash, bioinformatica, mysql, sorgente | Lascia un commento »

NCBI: passare da gi| proteiche a informazioni genomiche

Pubblicato da fuliggians su 22 Maggio 2007

La proteomica, forse per la sua complessità, forse perchè considerata secondaria rispetto alle genomica, ha un limitato numero di tools disponibili on-line. Specialmente, non è al momento ancora automatizzato il passaggio dal nome della proteina alla sua funzione.

Spesso sistemi di identificazione proteica come Mascot o Sequest sono in grado di fornire solo un’informazione di presenza/assenza delle proteine nel complesso analizzato. Con molta fatica già si riesce ad aggiungere un’informazione quantitativa (ovvero stabilire le proporzioni in cui si presentano le diverse proteine – quali sono quelle più espresse, insomma), usando tecniche che si basano su tag isotopici (iTRAQ, ICAT, SILAC).
Una volta identificate le proteine presenti in un complesso, entra in gioco il più delle volte l’esperienza del ricercatore, che deve analizzare le sequenze una ad una. Si possono usare database come prosite, o pfam per cercare di stabilire domini ofamiglie comuni, e qualche caratteristica funzionale. Non esistono però tools paragonabili a quelli a disposizione per l’analisi di liste genomiche, come la gene ontology, o David.

Personalmente per arricchire le informazioni generate da i software di identificazione ho sviluppato un piccolo tool che si integra con un software di visualizzazione di network molto leggero e dinamico (java biolayout). Faccio compiere su il database di SwissProt una ricerca degli ACC che ho a disposizione ed estraggo dalla query il campo KEYWORD. Questa è un’annotazione non sempre presente ma che -se c’è- identifica chiaramente quali sono le caratteristiche funzionali della proteina. Sulla base di questa informazione riesco a generare un’immagine che mi fornisce un’idea (parziale) del legame dei diversi elementi che fanno parte del complesso proteico.

Un’altra operazione ricorrente è collezionare le informazioni genomiche. Ora, come è noto, non vi è sempre una relazione univoca tra il gi| della proteina identificata e il suo gene. Spesso una stessa proteina può derivare da diversi cDNA, ecc..

La mia soluzione è operare una serie di step di calcolo impegnativi per il server ma che mi permettono con buona approssimazione di linkare all’informazione proteica anche i gene ID, le refseq, e via dicendo.

Sfrutto tre strumenti:

$query = "fastacmd -d $db -s $protID ";
$query = "blastall -p blastp -i temp.faa -d refseq_protein -e 1e-500 -m 8";
$query = "getz -e \'[refseqrelease -acc:$refseq]\'";

in questo modo riesco ad estrarre  prima la sequenza della proteina identificata partendo dal sui gi|

la seconda query fa un allineamento della sequenza ottenuta con un database refseq di proteine, molto stringente. Del la lista di match risultanti viene preso solo il primo risultato utile. E a questo livello ho le informazioni fondamentali genomiche, ovvero il gi| del gene corrispondente. Un’ultima query mi permette di estrarre maggiori informazioni ancora, come i riferimenti alla letteratura, per esempio.

E’ un giro un po’ complesso ma funziona!

Pubblicato su bioinformatica, smart trick, sorgente | 2 Commenti »

test logico per programmatori

Pubblicato da fuliggians su 17 Maggio 2007

Ho pensato fosse molto carino proporvi un test che mi hanno sottoposto durante una delle molte fasi di selezione per un posto di lavoro come programmatore Perl.

Nella barra laterale, tra i file utili troverete 2 files: theTest.clp e un file zip Jess60a5.

Jess, non lo conoscevo, ma pare sia “the Rule Engine for the JavaTM Platform”. In sostanza è un ambiente in cui si possono creare delle regole basate su espressioni regolari che permettono di leggere una struttura dati (simulando una sorta di database) e agire di conseguenza.

Ha una gestione delle parentesi tonde folle!

Comunque, a parte i commenti, nel file zip troverete un file powerpoint con una sorta di manuale condensato delle funzioni base del sistema e il sistema Jess stesso. E’ tutto quello che vi serve. Il file theTest invece, è quello che viene lanciato con Jess come file batch, e al suo interno specifica le operazioni che si richiede debbano essere fatte. Basta seguire le istruzioni. E’ più semplice da leggere che da spiegare.

Comunque chi si volesse cimentare… io ne ho trovate 3 diverse soluzioni: una bella, una casuale, una semplice. La soluzione ottimale è fatta aggiungendo 3 o 4 nuove rules.

divertitevi!

Pubblicato su bioinformatica, sorgente, test | 2 Commenti »

calcolare il punto isoelettrico di un peptide (o almeno stimarlo)

Pubblicato da fuliggians su 14 Maggio 2007

Mi hanno chiesto di scrivere un piccolo script per calcolare l’IP di un peptide.

Il problema solito è che questi tipi di stima vengono fatti sull’intera sequenza proteica, non il singolo peptide. Comunque on line ho trovato almeno 2 tools in grado di fare questi calcoli. Sfortunatamente, testandoli un po’ se ne generano dei risultati ben differenti quando si inserisce una sequenza di circa 15 aa.

A questo punto ho scelto di seguire le linee guida del sofware integrato nella “sequence manipulator suite” (consigliato), e specificamente l’algoritmo sviluppato da David Tabb. L’ho trasformato in Perl, e mi sentivo tanto contento.

Ma il problema è che mi avevano pure chiesto di aggiunge l’opzione che alcuni amino acidi siano modificati (per lo più fosforilati). Un bel problema!

Infatti sebbene Google is my friend, non sono riuscito a trovare una lista di valori del pK degli amino acidi modificati. Questi valori infatti sono necessari per implementare il calcolo del IP. Cercando bene, ho individuato 3 diversi set di valori pKa per aminoacidi fosforilati. Come c’era da aspettarsi, sono completamente diversi! :-(

Ecco quello che ho trovato:

  1. nel phosphosite web page www.phosphosite.org/Login.jsp c’è la possibilità di predirre il pI per vari siti di fosforilazione. E’ basato sull’articolo: Bjellqvist, B., Hughes, G.J., Pasquali, Ch., Paquet, N., Ravier, F., Sanchez, J.-Ch., Frutiger, S. & Hochstrasser, D.F., The focusing positions of polypeptides in immobilized pH gradients can be predicted from their amino acid sequences, Electrophoresis 1993, 14:1023-1031.
  2. http://prometheus.brc.mcw.edu/promost/
  3. E infine ho trovato questo http://scansite.mit.edu/calc_mw_pi.htmlin cui si può aggiungere una serie di fosforilazioni!

Comunque mettendo insieme il tutto, ne è uscito questo script, non è certo perfetto, ma se qualcuno di trova ad affrontare le stesse problematiche potrebbe dargli qualche idea.

L’intero script potrete trovarlo tra i file utili nella barra laterale, qui sotto giusto l’implementazione dell’algoritmo.

Leggi il seguito di questo post »

Pubblicato su bioinformatica, sorgente | 2 Commenti »