La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

BIOINFO3 - Lezione 351 PARSERIZZAZIONE DI FILE Un problema piuttosto comune in bioinformatica è quello di leggere un file, tipicamente un flat-file in.

Presentazioni simili


Presentazione sul tema: "BIOINFO3 - Lezione 351 PARSERIZZAZIONE DI FILE Un problema piuttosto comune in bioinformatica è quello di leggere un file, tipicamente un flat-file in."— Transcript della presentazione:

1 BIOINFO3 - Lezione 351 PARSERIZZAZIONE DI FILE Un problema piuttosto comune in bioinformatica è quello di leggere un file, tipicamente un flat-file in un qualche formato (es. FASTA) rappresentante un database (es. un insieme di sequenze). Allinterno del file si tratta di riconoscere la struttura sintattica con cui sono organizzati i dati e quindi individuare i singoli record e allinterno dei record i singoli campi. Una volta estratte le informazioni di nostro interesse dal file è possibile sottoporle a qualunque elaborazione, ad esempio potremo scrivere in un nuovo file i risultati dellelaborazione. Lelaborazione potrebbe consistere anche semplicemente nel riscrivere i record in un nuovo formato o nello scrivere solo i record che verificano determinate condizioni. record 1 record n ……. FILE campo 1 campo2 campo n campo 1 campo2 campo n ……. PROGRAMMA PARSERIZZATORE

2 BIOINFO3 - Lezione 352 FILE FASTA Supponiamo che il file da analizzare sia in formato FASTA, ad esempio un file di sequenze EST scaricato da GENBANK. Individuamo nei record i campi di nostro interesse 1) Il numero identificativo gi del record genbank 2) Il codice accession 3) Il nome della EST 4) La descrizione della EST 5) La sequenza della EST

3 BIOINFO3 - Lezione 353 ELABORAZIONE Lelaborazione che ci interessa effettuare su ogni singolo record è quella di inserire un record corrispondente allinterno di un database relazionale SQL di sequenze EST. Le 5 informazioni estratte da ogni record dovranno produrre un corrispondente comando di insert MySQL insert into est (gi,accession,nome,descrizione,sequenza) values( ,AB044776,AB044776,Panax…,GAAGAA…)

4 BIOINFO3 - Lezione ALTERNATIVE Abbiamo visto che esistono due modi alternativi per interagire con un database SQL e di conseguenza è possibile eseguire loperazione di insert in due modi alternativi 1)Dalla linea di comando del client MySQL 2)Da programma (embedding) Nel primo caso il programma di parserizzazione creerà un file di comandi SQL che poi daremo direttamente in pasto allinterprete MySQL. Nel secondo caso le istruzioni di insert sono eseguite una ad una direttamente allinterno del programma, man mano che vengono letti i singoli record. La seconda soluzione sembrerebbe più automatizzata, però anche nel primo caso, una volta scritto completamente il file, è possibile far eseguire da programma (con una istruzione qx o system) il comando UNIX di lettura ed esecuzione del file da parte del client mysql

5 BIOINFO3 - Lezione 355 SCHEMATIZZANDO… Proveremo a vedere entrambe le soluzioni in quanto la parte di programma che cambia è minima (evidenziata in rosso) campo 1 campo2 campo n campo 1 campo2 campo n … …. while (riconoscimento di un record){ estrazione campi definizione comando di insert scrittura del comando sul file } fileparserizzatore file di comandi SQL campo 1 campo2 campo n campo 1 campo2 campo n … …. 1) 2) while (riconoscimento di un record){ estrazione campi definizione comando di insert esecuzione del comando } DB SERVER MYSQL esecuzione del file

6 BIOINFO3 - Lezione 356 LA STRATEGIA PER PARSERIZZARE IL FILE Abbiamo detto che la parserizzazione deve essere guidata dalla struttura sintattica del file. In Perl una possibilità è quella di leggere lintero file ed assegnarlo ad ununica stringa (che può contenere file anche molto grandi) e quindi procedere allindividuazione dei record. I record sono chiaramente separabili grazie al pattern >gi| posto allinizio di ogni record. Si potrà pertanto effettuare una operazione di split basata proprio su questo pattern, ottenendo un array contenente tutti i record. Per ogni record si potrà effettuare successivamente un pattern matching per estrarre i 5 campi. file lettura file >gi| stringa splitarray (,, ) pattern matching 12345

7 BIOINFO3 - Lezione 357 IL PARSERIZZATORE

8 BIOINFO3 - Lezione 358 ESECUZIONE Per evitare di sorbirsi tutti i cicli di lettura fissiamo un break point!

9 BIOINFO3 - Lezione 359 ESECUZIONE Lo split crea 22 record, ma il primo è vuoto (perché il file iniziava con il pattern di split). Per questo ho aggiunto il test if ($record)

10 BIOINFO3 - Lezione 3510 ESECUZIONE Prima di eliminare tutti gli spazi e i new-line dalla sequenza proviamo a vedere tutte le stringhe catturate dal pattern matching

11 BIOINFO3 - Lezione 3511 ESECUZIONE Vediamo la sequenza $seq prima e dopo la sostituzione del pattern Si può anche notare che loperazione di pattern substitution azzera le variabili speciali $1, $2,… In generale ogni operazione sui pattern cancella i risultati della precedente

12 BIOINFO3 - Lezione 3512 ESECUZIONE Si procede quindi con il riconoscimento del secondo record e così via. Alla fine di ogni ciclo abbiamo a disposizione nelle variabili $gi, $ac, $nome, $descr, $seq tutti i campi per quel record

13 BIOINFO3 - Lezione 3513 CREAZIONE DI FILE DI COMANDI SQL Non ve lavevo ancora detto (anche perché a fine programma i file aperti vengono comunque chiusi automaticamente) ma è buona norma chiudere un file quando è stato letto o scritto completamente

14 BIOINFO3 - Lezione 3514 ESECUZIONE

15 BIOINFO3 - Lezione 3515 ESECUZIONE DEL FILE DI COMANDI Una volta scritti tutti i comandi SQL e chiuso il file di output ($nomefile.mysql) si può eseguire listruzione Perl: qx{mysql btbm-xx <$nomefile.mysql}; Dove btbm-xx è il nome del database su cui far eseguire i comandi. Il comando UNIX eseguito da Perl fa leggere ed eseguire al client mysql il file di comandi appena creato. Lo stesso comando UNIX potrà anche essere dato non da programma ma a mano al termine dellesecuzione del programma parserizzatore

16 BIOINFO3 - Lezione 3516 COMANDI SQL DA PROGRAMMA


Scaricare ppt "BIOINFO3 - Lezione 351 PARSERIZZAZIONE DI FILE Un problema piuttosto comune in bioinformatica è quello di leggere un file, tipicamente un flat-file in."

Presentazioni simili


Annunci Google