Analisi di dati Microarray: Esercitazione Matlab

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!