Analisi di dati Microarray: Esercitazione Matlab

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Analisi di dati Microarray: Esercitazione Matlab"

Transcript

1 Analisi di dati Microarray: Esercitazione Matlab Laboratorio di Bioinformatica II Pietro Lovato Anno Accademico 2010/2011

2 Contenuti 1 Introduzione DNA Microarray 2 Lavorare con una singola ibridazione Strutture Matlab Sottrazione del background Scatter plot 3 Lavorare con più ibridazioni Introduzione Esempio: Serie temporali di lievito Gene Selection Cluster analysis Clustering gerarchico K-means Validare i risultati

3 DNA Microarray Che cos è Tecnologia capace di misurare simultaneamente l espressione di migliaia di geni. Sono analizzate differenti condizioni sperimentali: Diversi tessuti (e.g. da individui sani/malati) Diverse condizioni di crescita Diversi istanti di tempo Enorme quantità di dati, da analizzare con strumenti informatici.

4 DNA Microarray (2)

5 DNA Microarray (3) 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...

6 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 );

7 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: [1x1 struct] Data: [9504x38 double] Blocks: [9504x1 double] Columns: [9504x1 double] Rows: [9504x1 double] Names: {9504x1 cell}...

8 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.

9 Sottrazione del background 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. B532 Median Provare a visualizzare il bg del canale verde con il comando maimage(pd, B532 Median );

10 Salvare in variabili separate i campi di interesse Sintassi cy5data = magetfield(pd, F635 Median - B635 ); cy3data = magetfield(pd, F532 Median - B532 ); genes = pd.names;

11 Scatter plot: R vs G Dati osservati : {(R, G) i }

12 Scatter plot: log 2 R vs log 2 G Dati osservati : {(log 2 R, log 2 G) i }

13 Scatter plot: I vs R Dati osservati : {( ( R )) } log 10 (R G), log 2 G i

14 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);

15 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);

16 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)

17 Idea: combinare dati provenienti da diverse ibridazioni

18 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.

19 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;

20 Plottare un profilo di espressione ( plot times, yeastvalues ( 15, : )) ;

21 Plottare un profilo di espressione Matrice dei dati ( plot times, yeastvalues ( 15, : )) ;

22 Plottare un profilo di espressione Matrice dei dati ( plot times, yeastvalues ( 15, : )) ; Seleziono la quindicesima riga=gene

23 Plottare un profilo di espressione Matrice dei dati ( plot times, yeastvalues ( 15, : )) ; Seleziono la quindicesima riga=gene Seleziono tutte le colonne=tempi

24 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?

25 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.

26 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,...

27 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.

28 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.

29 K-means clustering

30 K-means clustering (2) Funzione kmeans [cidx, ctrs] = kmeans(data, K, dist, tipo ); Input: Output: 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... cidx: indica, per ogni gene, il cluster a cui appartiene. ctrs: centri dei cluster profilo medio di espressione.

31 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?

32 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?

33 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), );