Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Analisi di dati Microarray: Esercitazione Matlab Laboratorio di Bioinformatica II Pietro Lovato Anno Accademico 2011/2012 Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni Contenuti 1 Introduzione Introduzione a Matlab Bioinformatics Toolbox DNA Microarray 2 Analisi di una singola ibridazione Ambiente Matlab Sottrazione del background Scatter plot 3 Analisi di più ibridazioni Esempio: Serie temporali di lievito Gene Selection Cluster analysis Validare i risultati 4 PCA e Visualizzazione scientifica Principal Component Analysis PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Introduzione a Matlab Che cos’è MATrix LABoratory Sistema interattivo per il calcolo tecnico e scientifico Linguaggio di programmazione Internamente: librerie numeriche altamente ottimizzate Una caratteristica di Matlab è l’espansibilità delle sue funzioni, attraverso delle soluzioni denominate toolbox. Tali toolbox sono collezioni complete di funzioni Matlab per risolvere particolari categorie di problemi. Introduzione Analisi di una singola ibridazione I toolbox Statistica Elaborazione di immagini Elaborazione di segnali Pattern recognition Bioinformatica Sistemi di comunicazione Sistemi di controllo Economia & Finanza Calcolo parallelo ... Analisi di più ibridazioni PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Applicazioni per la bioinformatica 1 Analisi di sequenze 2 Analisi di dati microarray Allineamento, primer design, identificazione di motivi Analisi di immagini Normalizzazione dei dati Clustering & data mining 3 Proteomica Analisi di dati da spettrometria di massa 4 Systems Biology Simulazione di pathway metabolici 5 Filogenesi Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica DNA Microarray Che cos’è Tecnologia capace di misurare simultaneamente l’espressione di migliaia di geni. Sono analizzate differenti condizioni sperimentali: Diversi tessuti (es. da individui sani/malati) Diverse condizioni di crescita Diversi istanti di tempo Enorme quantità di dati, da analizzare con strumenti informatici. Introduzione Analisi di una singola ibridazione DNA Microarray (2) Analisi di più ibridazioni PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni DNA Microarray (3) Problematiche Design delle sonde Problematiche di Image Processing: Segmentazione spot Rimozione rumore Rilevamento della qualità degli spot Quantificazione del segnale Analisi dei dati: Riduzione della dimensionalità Cluster analysis Visualizzazione scientifica Interscambio di formati PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni DNA Microarray (4) Problema A seconda del tipo di esperimento e della piattaforma utilizzata, i dati che ci vengono forniti possono avere diversi formati. Qualche esempio .cel (Affymetrix) .chp (Affymetrix) .gpr (GenePix) .soft (Dataset GEO) .txt... PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica L’interfaccia grafica Sotto Applicazioni −→ Programmazione Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Un tipico comando Matlab data_mouse = gprread ’mouse_a1pd.gpr’ ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Un tipico comando Matlab Risultato data_mouse = gprread ’mouse_a1pd.gpr’ ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Un tipico comando Matlab Risultato data_mouse = gprread Nome del comando ’mouse_a1pd.gpr’ ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Un tipico comando Matlab Risultato data_mouse = gprread Nome del comando Argomenti in input ’mouse_a1pd.gpr’ ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Un tipico comando Matlab Risultato data_mouse = gprread ’mouse_a1pd.gpr’ ; Nome del comando Argomenti in input Nota Per i comandi di visualizzazione non è necessario specificare un risultato. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Lavorare con una singola ibridazione Esempio Dati di espressione di topo in cui è stato indotto farmacologicamente il morbo di Parkinson. Ogni chip contiene l’espressione in una regione (voxel) del cervello. Dati grezzi: file in formato .gpr oppure soft (GEO accession GSE30). File .gpr già presente come demo Matlab. Caricare i dati pd = gprread(’mouse_a1pd.gpr’); Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Strutture in Matlab struct() Tipo di dato che raggruppa più campi in un unico oggetto. Un campo può memorizzare informazioni di vario tipo. Accesso ai campi con variabile.nomeCampo. Nota Formati di file microarray diversi avranno campi con nomi diversi (ma l’informazione contenuta è sostanzialmente la stessa). Header: Data: Blocks: Columns: Rows: Names: ... [1x1 struct] [9504x38 double] [9504x1 double] [9504x1 double] [9504x1 double] {9504x1 cell} Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Cosa ci interessa Campi Il campo Data è una matrice che contiene i dati. Il campo Names contiene i nomi dei geni (le righe). Il campo ColumnNames contiene i nomi delle colonne. All’interno del campo ColumnNames: ’F635 Median’ intensità del canale rosso (cy5, λ = 635nm). ’F635 Median - B635’, come sopra ma con sottrazione del background. ’F532 Median - B532’ intensità del canale verde (cy3, λ = 532nm). La mediana è uno stimatore robusto dell’intensità dei pixel. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Sottrazione del background B532 Median Background: fluorescenza che può contribuire all’intensità misurata ma non è dovuta all’ibridazione del target. Può dipendere da polvere, molecole isolate, imperfezioni nel sistema di acquisizione, rumore, ... Il background varia lungo il supporto e va stimato localmente. Provare a visualizzare il bg del canale verde con il comando maimage(pd, ’B532 Median’); Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Salvare in variabili separate i campi di interesse Sintassi cy5Data = magetfield(pd,’F635 Median - B635’); cy3Data = magetfield(pd,’F532 Median - B532’); genes = pd.Names; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni Scatter plot: R vs G Dati “osservati”: {(R, G)i } PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni Scatter plot: log2 R vs log2 G Dati “osservati”: {(log2 R, log2 G)i } PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Scatter plot: I vs R Dati “osservati”: n log10 (R · G), log2 R o G i Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica In Matlab Per creare uno scatter plot del tipo log R vs log G: maloglog(cy5Data,cy3Data,’labels’,genes); Per creare uno scatter plot del tipo I vs R: mairplot(cy5Data,cy3Data,’labels’,genes); Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica In Matlab Per creare uno scatter plot del tipo log R vs log G: maloglog(cy5Data,cy3Data,’labels’,genes); Per creare uno scatter plot del tipo I vs R: mairplot(cy5Data,cy3Data,’labels’,genes); Esercizio Provare a disegnare uno scatter plot “a mano”: Dato un vettore x , il logaritmo delle sue componenti si calcola con il comando: variabile = log10(x ); Un qualsiasi scatter plot (non microarray-specifico) si disegna con il comando: scatter(x ,y ); Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Ricapitolando... » pd = gprread(’mouse_a1pd.gpr’); » maimage(pd, ’B532 Median’); » cy5Data = magetfield(pd,’F635 Median - B635’); » cy3Data = magetfield(pd,’F532 Median - B532’); » genes = pd.Names; » maloglog(cy5Data,cy3Data,’labels’,genes) » mairplot(cy5Data,cy3Data,’labels’,genes) Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Idea: combinare dati provenienti da diverse ibridazioni Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Cluster analysis Passi (a grandi linee) Identificare geni differenzialmente espressi: t-test se il problema è a due classi. Altri indici per selezionare geni “rilevanti” (varianza, entropia, ...). Definire una distanza tra profili di espressione. Scegliere un algoritmo di clustering. Validare il risultato. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Esempio: Serie temporali di lievito Problema Investigare come variano nel tempo i livelli di espressione del lievito (Saccharomyces cerevisiae). Si è interessati alla riprogrammazione metabolica nel passaggio dalla fermentazione alla respirazione. Idea Cercare di raggruppare geni con profili di espressione “simili”. Cercare di caratterizzare ciascun gruppo attraverso il processo biologico cui i geni prendono parte. Caricare i dati load yeastdata; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Plottare un profilo di espressione plot times, yeastvalues 15 , : ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Plottare un profilo di espressione Matrice dei dati plot times, yeastvalues 15 , : ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Plottare un profilo di espressione Matrice dei dati plot times, yeastvalues Seleziono la quindicesima riga=gene 15 , : ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Plottare un profilo di espressione Matrice dei dati plot times, yeastvalues Seleziono la quindicesima riga=gene Seleziono tutte le colonne=tempi 15 , : ; Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Gene Selection Scartare i geni “non informativi” Geni a bassa varianza. Geni con basso valore assoluto in ogni istante temporale. Geni a bassa entropia informativa. Sintassi » [mask, yeastvalues, genes] = genevarfilter(yeastvalues, genes); » [mask, yeastvalues, genes] = genelowvalfilter(yeastvalues, genes, ’absval’, log2(3)); Quanti geni rimangono dopo la selezione? Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Introduzione: Cluster Analysis Una possibile definizione Il clustering rappresenta l’organizzazione di un insieme di entità in gruppi (clusters) sulla base della similarità. Il concetto di cluster è vago: Dipendentemente dalle misure di similarità utilizzate cambia il risultato. La scelta della misura di similarità è cruciale Dovrebbe essere fatta in modo da inglobare la maggior quantità possibile di informazione a priori. Il risultato può cambiare anche a seconda della metodologia utilizzata per fare clustering. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Clustering partizionale vs gerarchico Clustering partizionale Il risultato è una singola partizione dei dati. Tipicamente il numero di cluster deve essere dato a priori. Esempio: K-means. Clustering gerarchico Il risultato è una serie di partizioni innestate (un dendrogramma). Non è necessario settare a priori il numero di cluster. Più informativo del clustering partizionale ma improponibile per dataset molto grandi. Esempi: Complete link, single link, ... Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Clustering gerarchico Funzione clustergram clustergram(data, ’Linkage’, ’tipo’, ’rowlabels’, genes); Dove: data: matrice di espressione. ’tipo’: Algoritmo di clustering gerarchico. ’single’: Algoritmo Single Link ’complete’: Algoritmo Complete Link ’average’: UPGMA ... genes: identificativi dei geni. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Clustering partizionale K-means Algoritmo più famoso di clustering partizionale. Ogni gene è un punto in uno spazio n-dimensionale (n numero di esperimenti). Ogni cluster è rappresentato dalla sua media. Idea: L’algoritmo è iterativo: si “assesta” in più passi. Si parte da una clusterizzazione iniziale, e ad ogni iterazione si assegna ogni gene alla media più vicina. Si riaggiornano le medie. Si ripete fino a convergenza. Introduzione Analisi di una singola ibridazione K-means clustering Analisi di più ibridazioni PCA e Visualizzazione scientifica Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica K-means clustering (2) Funzione kmeans [cidx, ctrs] = kmeans(data, K , ’dist’, ’tipo’); Input: data: matrice di espressione. K : numero di cluster. Per questo esempio K=16. ’tipo’: Distanza da utilizzare. ’sqEucl’: Distanza euclidea ’corr’: Distanza di correlazione statistica ... Output: cidx: indica, per ogni gene, il cluster a cui appartiene. ctrs: centri dei cluster – profilo “medio” di espressione. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Visualizzare i risultati Funzione maplot Per visualizzare i profili appartenenti ad ogni cluster: maplot(times, yeastvalues, cidx) Per visualizzare il profilo medio di espressione in ogni cluster: maplot(times, yeastvalues, ctrs) Quale/i cluster rappresenta geni che si esprimono solo durante la respirazione cellulare? Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Validare i risultati: GOstat Una volta individuato un cluster di interesse x, esportare in un file di testo i geni che lo compongono: cluster = genes(cidx==x); dlmwrite(’cluster.txt’, char(cluster), ’’); Carico il file su GOstat: Nel campo “Gene-association database” mettere sgd (lievito) (Opzionale) Nel campo “Subset of GO hierarchy” mettere biological_process (siamo interessati al pathway cui i geni nel cluster prendono parte) In output ho i termini GO che meglio descrivono i geni all’interno del mio cluster. Che informazioni riesco a dedurre? Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Ricapitolando... » load yeastdata » plot(times, yeastvalues(15,:)) » [mask, yeastvalues, genes] = genevarfilter(yeastvalues, genes); » [mask, yeastvalues, genes] = genelowvalfilter(yeastvalues,genes,’absval’,log2(3)); » clustergram(yeastvalues,’Linkage’,’complete’, ... ’rowlabels’,genes) » [cidx, ctrs] = kmeans(yeastvalues, 16, ’dist’,’corr’); » maplot(times, yeastvalues, cidx) » maplot(times, yeastvalues, ctrs) » cluster = genes(cidx==1); » dlmwrite(’cluster.txt’, char(cluster), ’’); Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Principal Component Analysis (PCA) Motivazioni Ridurre la dimensione dei dati (qui ogni dato è un gene caratterizzato da 7 numeri)... per visualizzare il dataset; per ridurre il carico computazionale delle tecniche applicate; per eliminare possibile ridondanza; Mettere in evidenza particolari strutture presenti nei dati. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica PCA (2) Idea Presentare i dati nel riferimento che evidenzia maggiormente la loro struttura. Estrarre le direzioni di massima varianza dei dati. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica PCA (3) Idea: eliminare le direzioni a bassa varianza In questo modo si comprimono i dati minimizzando la perdita di informazione. Per trasformare ogni punto: formule e nozioni derivanti dall’algebra lineare (autovalori e autovettori della matrice di covarianza...). Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica PCA (4) Vantaggi Migliore tecnica di compressione dei dati Migliore in senso di errore quadratico medio Svantaggi Non è detto in tutti i casi che le direzioni a varianza maggiore siano le direzioni ottimali; Si perde l’interpretabilità delle grandezze rappresentate. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica PCA in Matlab Funzione princomp [pc, comp] = princomp(data); Input: data: matrice di espressione. Output: pc: coefficienti della trasformazione. comp: coordinate dei punti nello spazio trasformato, ordinate per importanza decrescente. Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica PCA in Matlab (2) Plottare le prime due o tre componenti per visualizzare i dati trasformati. Il comando è sempre scatter: scatter(comp(:,1),comp(:,2)); o, in alternativa: scatter3(comp(:,1),comp(:,2),comp(:,3)); Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Esercizio Effettuare un clustering k-means sui dati trasformati, prendendo solo le prime due o tre componenti principali; Ad es, per prendere solo le prime due componenti data_pca = comp(1:2,:); K = 2; Vengono separati i due cluster? Introduzione Analisi di una singola ibridazione Analisi di più ibridazioni PCA e Visualizzazione scientifica Ricapitolando... » [pc, comp] = princomp(yeastvalues); » scatter(comp(:,1),comp(:,2)); » scatter3(comp(:,1),comp(:,2),comp(:,3)); » pca_data = comp(:,1:2); » [pca_idx, pca_ctrs] = kmeans(pca_data, 2, ’dist’, ’sqEucl’); » scatter(pca_data(:,1), pca_data(:,2), 4, pca_idx); Nota Matlab offre un help molto semplice e dettagliato!