Forum

Nome Utente:
Password:
Riconoscimi automaticamente
 Tutti i Forum
 Laboratorio
 Bioinformatica e Biostatistica
 File XML di Blast
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
I seguenti utenti stanno leggendo questo Forum Qui c'è:

Aggiungi Tag Aggiungi i tag

Quanto è utile/interessante questa discussione:

Autore Discussione  

Seffy
Nuovo Arrivato



8 Messaggi

Inserito il - 13 febbraio 2009 : 13:46:49  Mostra Profilo  Visita l'Homepage di Seffy Invia a Seffy un Messaggio Privato  Rispondi Quotando
Salve a tutti!!
Sono nuova di questo forum, mi sono appena iscritta.
Apro un nuovo posto per sottoporvi il mio problema:
usando blast (nel mio caso specifico blastn ) è possibile ottenere l'output in diversi formati fra cui l'xml.
Il mio problema è che se uso questo formato non trovo fra i vari risultati la percentuale di omologia fra le sequenze mentre lo trovo se chiedo l'output in forma tabellare (-m=8).
Di contro in questo formato non ottengo un altro risultato per me importante che è lo score, mentre lo ritrovo nel file xml.
A me servirebbero entrambi i valori( score e percentuale di identità )e mi sembra strano che un valore così importante sia omesso nell'xml.
Di sicuro sto sbagliando qualcosa...
Sapete come aiutarmi?
Vi ringrazio!!!

dallolio_gm
Moderatore


Prov.: Bo!
Città: Barcelona/Bologna


2445 Messaggi

Inserito il - 13 febbraio 2009 : 14:43:19  Mostra Profilo  Visita l'Homepage di dallolio_gm  Clicca per vedere l'indirizzo MSN di dallolio_gm Invia a dallolio_gm un Messaggio Privato  Rispondi Quotando
Come lo leggi l'XML? Usi qualche libreria particolare?
Cosa intendi esattamente per omologia di sequenze? Puoi postare un esempio, cosi' che sia piu' facile capire?
Generalmente conviene parsare sempre il formato xml di output, perche' quello tabulare non e' stabile, e' stato cambiato piu' volte e con poco avviso nel tempo, e scrivere una libreria che lo legga richiederebbe troppo mantenimento.

Il mio blog di bioinformatics (inglese): BioinfoBlog
Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-)
Torna all'inizio della Pagina

Seffy
Nuovo Arrivato



8 Messaggi

Inserito il - 13 febbraio 2009 : 15:20:38  Mostra Profilo  Visita l'Homepage di Seffy Invia a Seffy un Messaggio Privato  Rispondi Quotando
Ciao dallolio_gm!
Innanzi tutto ti ringrazio per avermi risposto e ora rispondo alle tue domande.
Per leggere l'xml uso NCBIXML del pacchetto Bio di Python.
Per omologia di sequenze intendo quanto sono simili due sequenze. La percentuale di omologia alla quale mi riferisco è esattamente quella che ti restituisce UCSC quando provi a fare il blat.
A esempio se hai questa sequenza:
CAAAGGCAGGGTAGAAACTTGCAACTAAGGTTAAAATAATT
e provi a fare il blat su UCSC ( genoma topo ) ti restituisce i punti del genoma sui quali l'ha riconosciuta. E fra i vari parametri ti restituisce anche la percentuale di identita: IDENTITY.
Anche se faccio il blast in locale ottengo gli stessi risultati e ho questo valore, IDENTITY, solo nel formato tabellare ( -m=8 ) nel quale però manca il valore dello SCORE.
Anche io sono del parere che il formato XML sia da preferire, ma per le analisi che sto facendo mi è necessario questa percentuale.
Ho anche pensato di scrivere io l'algoritmo che la calcoli, ho provato a cercare in rete ma non ho trovato nessuno che ne parlasse e dal sorgente di BLAST non sono riuscita a ricavarne nulla...... :(
Spero che fra di voi ci sia qualcuno che possa aiutarmi.
A presto e ancora grazie!!!
Torna all'inizio della Pagina

dallolio_gm
Moderatore


Prov.: Bo!
Città: Barcelona/Bologna


2445 Messaggi

Inserito il - 13 febbraio 2009 : 15:59:12  Mostra Profilo  Visita l'Homepage di dallolio_gm  Clicca per vedere l'indirizzo MSN di dallolio_gm Invia a dallolio_gm un Messaggio Privato  Rispondi Quotando
Nei file XML di esempio utilizzati per il testing di biopython, vi e' un campo chiamato 'Hsp_Identity' all'interno di un campo 'Hsp':
- http://code.open-bio.org/cgi/viewcvs.cgi/biopython/Tests/Blast/xbt001.xml?rev=1.1&cvsroot=biopython&content-type=text/vnd.viewcvs-markup

onestamente adesso non mi viene in mente cosa possa significare 'Hsp', pero' sembra contenere tutte le informazioni relative ai dettagli dell'allineamento.
Puo' essere cosi'? Anche i tuoi file contengono questo campo?

In biopython, per ogni match viene creato un oggetto 'Alignment', che contiene una proprieta' (una lista) chiamato 'hsps'.
Dovresti riuscire ad accedere alla percentuale di identita' come Alignment.hsps[0].identities.

Purtroppo non ho mai usato il codice di biopython per leggere gli allineamenti, per cui non ti so aiutare molto. Se puoi postare da qualche parte una porzione del codice che hai, forse riesco a rendermi piu' utile.

p.s. se hai qualche idea o proposta per migliorare biopython, di' pure, che ultimamente sto inviando alcune cose al loro progetto.

Il mio blog di bioinformatics (inglese): BioinfoBlog
Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-)
Torna all'inizio della Pagina

Seffy
Nuovo Arrivato



8 Messaggi

Inserito il - 14 febbraio 2009 : 16:22:11  Mostra Profilo  Visita l'Homepage di Seffy Invia a Seffy un Messaggio Privato  Rispondi Quotando
Ciao dallolio_gm!!
Scusa per il ritardo della mia risposta, ieri ho avuto un pò di cose da fare a lavoro e non ho avuto tempo per rispondere.
Ti ringrazio per la gentilezza e adesso rispondo al tuo post :)
Per quanto riguarda biopython puoi controllare qui http://biopython.org/DIST/docs/tutorial/Tutorial.html
è il tutorial e trovi praticamente tutte le informazioni necessarie per eseguire blast in locale e poi fare il parse dell'out ( sia in xml che in altri formati ). Il codice xml che hai mandato tu è esattamente uguale a quello che ottengo io.
La proprietà alla quale ti riferisci( hsp.identities ) è il numero esatto di nucleotidi ( per ogni allineamento )che sono stati "matchati". In sostanza è dato da (query_end - query_start) - mismatch e si accede a questo valore direttamente come hsp.identities o alignment.hsp.identities.
HSP sta per High Score Pairwise. Sono gli allineamenti che hanno uno score maggiore di una determinata soglia, che ovviamente è imposta da blast.
Purtroppo non esiste nessun valore, fra quelli della lista degli hsp, che rappresenti la percentuale di omologia. Li ho provati tutti ma purtroppo non ne cavo un ragno dal buco. Se controlli nel tutorial alla voce Running blast locally troverai uno schema UML che rappresenta la classe che si utilizza per il parse e tutti i possibili oggetti. Ma come potrai vedere non c'è niente che suggerisca la percentuale che voglio io.
Ti sto rispondendo da casa e qui ora non ho codice, lunedì provo a postarti qualche riga.
Ti ringrazio tanto per l'aiuto!!
Torna all'inizio della Pagina

Seffy
Nuovo Arrivato



8 Messaggi

Inserito il - 17 febbraio 2009 : 10:15:13  Mostra Profilo  Visita l'Homepage di Seffy Invia a Seffy un Messaggio Privato  Rispondi Quotando
Ho risolto il problema!
Non so se potrà essere utile a qualcuno comunque lo scrivo lo stesso :)

La percentuale di identità che restituisce il blast è data dalla seguente formula:
( alignment_length - mismatches - gaps ) / alignment_length.
Utilizzando Biopython il numero dei mismatches è dato da:
mismatches = len(hsp.match) - hsp.identities
mentre il numero dei gap è dato da : hsp.gaps. C'è da fare una precisazione, hsp.gaps è una tupla. Quando sono presenti gap il suo tipo è però intero.
Posto il pezzo di codice che esegue il calcolo:


for blast_record in blast_records:
    for alignment in blast_record.alignments:
        for hsp in alignment.hsps:
            mismatches = len(hsp.match) - hsp.identities
            if type(hsp.gaps)==int:
                    print "percent identity with gaps= ",  float(hsp.align_length - mismatches - hsp.gaps) / hsp.align_length
                else:
                    print "percent identity without gaps= ", float(hsp.align_length - mismatches) / hsp.align_length

Grazie per il supporto!!!

Torna all'inizio della Pagina

dallolio_gm
Moderatore


Prov.: Bo!
Città: Barcelona/Bologna


2445 Messaggi

Inserito il - 17 febbraio 2009 : 10:48:49  Mostra Profilo  Visita l'Homepage di dallolio_gm  Clicca per vedere l'indirizzo MSN di dallolio_gm Invia a dallolio_gm un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da Seffy

Ho risolto il problema!
Non so se potrà essere utile a qualcuno comunque lo scrivo lo stesso :)

La percentuale di identità che restituisce il blast è data dalla seguente formula:
( alignment_length - mismatches - gaps ) / alignment_length.
Utilizzando Biopython il numero dei mismatches è dato da:
mismatches = len(hsp.match) - hsp.identities
mentre il numero dei gap è dato da : hsp.gaps. C'è da fare una precisazione, hsp.gaps è una tupla. Quando sono presenti gap il suo tipo è però intero.
Posto il pezzo di codice che esegue il calcolo:


for blast_record in blast_records:
    for alignment in blast_record.alignments:
        for hsp in alignment.hsps:
            mismatches = len(hsp.match) - hsp.identities
            if isinstance(hsp.gaps, int):
                print "percent identity with gaps= ", \
                          float(hsp.align_length - mismatches - hsp.gaps) / hsp.align_length
            else:
                print "percent identity without gaps= ", \ 
                          float(hsp.align_length - mismatches) / hsp.align_length

Grazie per il supporto!!!



Penso che sia piu' standard utilizzare isinstance(var, type) piuttosto che type(var) == type.

Credi che questo fatto di hsp.gaps che a volte risulta essere un int invece che una tupla possa essere un errore?

Il mio blog di bioinformatics (inglese): BioinfoBlog
Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-)
Torna all'inizio della Pagina

Seffy
Nuovo Arrivato



8 Messaggi

Inserito il - 20 febbraio 2009 : 11:13:15  Mostra Profilo  Visita l'Homepage di Seffy Invia a Seffy un Messaggio Privato  Rispondi Quotando
Ciao!!
Scusa per il ritardo ma mi son presa un'influenza micidiale che mi ha costretto a letto per un pò....
Credo che tu abbia ragione e userò il tuo suggerimento per modificare il codice!!
Grazie mille!!
per quanto riguarda hsp.gaps non credo che sia un errore...però non saprei proprio dirti perchè hanno fatto questa scelta!!
Comunque secondo me, se devi mandare suggerimenti chiedi di aggiungere questo dato perchè nelle mie varie ricerche ho visto che su OSdir (.. nn so se ti è mai capitato di leggere post di questa mailing list...) in tanti chiedevano come si calcolasse. E tutti rispondevano che era dato dal rapporto fra il match e la lunghezza della query, che è corretto perchè ti restituisce la percentuale di basi che sei riuscito ad allineare, ma non è il dato che restituisce blast o blat

Ti ringrazio ancora per il supporto, e se ti va tienimi aggiornata sulle richieste che mandi al gruppo di biopython!! mi piacerebbe essere di aiuto! anche se nel mio piccolo..... :)
Grazie ancora!
Torna all'inizio della Pagina
  Discussione  

Quanto è utile/interessante questa discussione:

 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
Vai a:
MolecularLab.it © 2003-18 MolecularLab.it Torna all'inizio della Pagina