Dchip e struttura dei files di output Esistono oramai una gran quantità di programmi, in gran parte commerciali, per analizzare i risultati prodotti dai GeneChip Affymetrix; ma per fortuna il free software sta invadendo anche il campo della ricerca biologica. E sono proprio i ricercatori che programmano e che sviluppano programmi per le proprie esigenze a rendere questi spesso liberamente disponibili in rete. Dchip è probabilmente al momento il più completo (anche se non esente da bug) e utilizzato programma per analizzare i GeneChip Affymetrix in locale, appartenente alla categoria del free software (e non a quella open source). Logicamente, quando si sviluppano programmi del genere, bisogna utilizzare algoritmi nuovi e differenti, sia per migliorare la resa e l’affidabilità dei risultati, sia perché tutto ciò che riguarda il campo dei software commerciali è brevettato e quindi protetto da licenze. Modello Gli autori di questo programma (ricercatori del dipartimento di biostatistica di Harvard) sono partiti facendo una serie di considerazioni in seguito all’analisi dei risultati prodotti dagli array. Facendo l’analisi della varianza delle differenze PM – MM su un grosso numero di array Affymetrix sono giunti alla conclusione che tra gli array la varianza dovuta ad effetti “probe specifici” è maggiore di quella dovuta agli array. Questa variazione è causata quindi maggiormente da fattori indipendenti dall’espressione dei geni; ma dipendenti da elementi imputabili alle differenti cinetiche d’ibridazione caratteristiche delle diverse sequenze che interrogano un unico trascritto. Non dimentichiamo infatti che ogni Probe Set interroga 1 gene è costituito da 16-20 Probe Pair a loro volta formati da un Perfect Match (PM) e un MisMatch (MM). Probe: oligonucleotide di DNA a singolo filamento disegnato per essere complementare ad un’unica sequenza. Affymetrix utilizza oligonucleotidi lunghi fino a 25 basi direttamente sintetizzati sulla superficie dell’array. Probe Cell: singolo quadratino dell’array contenente un unico probe. Un singolo Probe Cell contiene circa 107 molecole dello stesso probe. Perfect Match: probe disegnata per essere complementare ad una specifica sequenza del 3’ di un trascritto. MisMatch: probe disegnato per essere complementare ad una sequenza specifica del 3’ di un trascritto eccetto che per una base omomerica in posizione centrale. Queste servono per valutare le cross-ibridazioni e come controllo negativo. Probe Pair: 2 Probe Cell, un PM con il corrispondente MM diverso solo per la tredicesima base. I Probe Pair di un determinato Probe Set sono distribuiti omogeneamente sulla superficie dell’array. Probe Set: set di probe disegnato per interrogare un unico specifico trascritto. Solitamente un Probe Set consiste di 16-20 Probe Pair. Target: cRNA biotinilato antisenso preparato dall’mRNA che deve essere analizzato. Ogni Probe Pair in un Probe Set quindi interroga una diversa sequenza dello stesso trascritto che quindi non ibriderà alla stessa maniera per tutti. Gli autori di Dchip hanno quindi creato un modello per eliminare questo tipo di “rumore nei dati” chiamato Model Based Expression indexes Abbiamo un numero I > 1 di campioni da analizzare e quindi di array. Assumendo che ogni Probe Set sia costituito da 20 Probe Pair allora per ogni trascritto avremo il livello d’espressione stimato sulla base di 2 x I x 20 differenti misurazioni dei valori di intensità dei PM e MM. Il procedimento è basato comunque su un modello che stima come i valori di intensità dei segnali variano in risposta alle variazioni di espressione. Indichiamo con i l’indirizzo di espressione nel iesimo campione. Assumiamo che l’intensità di un probe cresca linearmente con i, ma che la velocità di questa relazione sia differente per differenti probe. Assumiamo anche che entro lo stesso Probe Pair la velocità con cui cresce il PM sia maggiore di quella con cui cresce il MM. Da questo si ricava il seguente modello: MMij = vj + ij + ij PMij = vj + ij + ij + ij In cui i indica l’array vj indica l’intensità dovuta ad ibridazioni aspecifiche j è la velocità di increase del segnale del MM j è l’addizionale velocità di increase del segnale del rispettivo PM rappresenta un errore generico. j indica il Probe Pair Per semplificare il modello utilizziamo la differenza PM-MM: yij = PMij – MMij = ij + ij Model Based Expression Index (MBEI) è caratteristico di 1 esperimento Probe Sensitivity Index (PSI) è caratteristico di 1 Probe Set Questo modello è però calcolabile solo se lo costringiamo in qualche modo (in quanto sono presenti due incognite e e noi abbiamo una sola equazione). Viene quindi posto j2 = J (numero dei Probe Pair utilizzati nel computo) ij = 2 (varianza nelle differenze PM – MM) Perciò in seguito all’acquisizione del segnale per tutti i Probe Cell di tutti gli esperimenti viene calcolato il valore per (per ogni array) e (per ogni Probe Pair) e costruita la curva di yij che viene confrontata con la reale curva di PM – MM. In base a alle differenze tra la curva reale e quella creata dal modello il programma tira fuori anche l’errore standard delle misurazioni che sarà poi utilizzato nel computo degli outlier e della precisione dei calcoli. Idealmente risultante dovrebbe essere indipendente dal tipo cellulare in esame e dal trattamento subito, ma per avere un risultato veramente affidabile dobbiamo avere un numero alto di esperimenti e di repliche. Vediamo adesso come si utilizza il programma: Come ho detto è gratuito ed è scritto in Visual C++ Questa è la schermata iniziale che registra nel pannello di destra tutte le operazioni che il programma compie. A questa si può accedere in qualsiasi momento durante le analisi cliccando “Analysis” nel pannello di sinistra. Il programma è in grado di lavorare su immagini provenienti da sistemi Affymetrix sia DAT sia CEL; è inoltre in grado di lavorare su fogli excel opportunamente organizzati e in ogni caso, dopo aver caricato un array, produce un proprio file (DCP) simile ai CEL per un accesso più veloce. Per il momento il numero di array limite che può caricare è 400. L’analisi del DAT file che opera è uguale a quella svolta dal MAS per la produzione del CEL. Per inserire i dati quindi basta selezionare il menu “Analysis/Open Group” La finestra che ci si presenta Chiede di inserire una serie di informazioni: Group name: il nome che vogliamo dare al gruppo di array che carichiamo Data directory: dobbiamo indicare la cartella in cui sono presenti i file DAT, CEL o DCP Data file list: nel caso in cui nella cartella ci sono più esperimenti di quanti dobbiamo analizzare dobbiamo specificare con un file txt quali vogliamo analizzare Working dir: la cartella che utilizzeremo in cui il programma salverà i file .ini che produrrà Data file: il tipo dei file che stiamo immettendo Nel caso in cui le analisi siano già state effettuate bisogna indicare al programma se deve tenere conto dei risultati già ottenuti (normalizzazione e produzione dei DCP file) o se deve ripetere l’analisi de novo selezionando le rimanenti 2 chiamate e cliccando su “Use saved setting”. In “Other information” Dobbiamo invece specificare essenzialmente: CDF file: localizzazione del file CDF (file delle librerie Affymetrix specifico per ogni array) Gene information: localizzazione del file *geneinfo.xls file Excel compilato dagli autori che contiene informazioni aggiuntive riguardanti Gene Ontology, Gene Bank e Locus Link per ogni Probe Set quando possibile A questo punto cliccando su OK il programma inizia a lavorare e a caricare tutti i file. Alla fine un “array summary.xls” file è generato dal software. Questo contiene il nome dell’array, l’intensità media e la percentuale dei trascritti presenti Inoltre nel pannello a sinistra si presenteranno una serie di nuove caratteristiche Oltre al file Excel c’è l’icona PM/MM Data che è la parte più interessante di tutto il programma Qui si presentano sei griglie che mostrano i dati di ogni singolo Probe Cell all’interno di un Probe Set. N.B.: ci riferiremo alle griglie con la notazione griglia x,y chiamando la prima inalto a destra griglia 1,1 e l’ultima in basso a destra griglia 2,3. Ci possiamo muovere all’interno dell’array con i tasti PAGup e PAGdown per cambiare Probe Set e tra gli array con i tasti HOME e END per cambiare array. La griglia 2,1 è l’immagine del corrente Probe Set nel corrente array come scritto sopra di essa. La griglia 1,1 mostra le curve dei dati reali di ibridazione dei PM (blue) e MM (verde) ordinandoli sull’asse x da 1 a 20 e indicando sull’y le intensità relative ai segnali. Sopra le curve è scritto il range in cui y varia (in questo caso 0-17281), la call del Probe Set e la percentuale delle call P per quel Probe Set tra i differenti array caricati. Le linee azzurre inoltre presenti anche nelle griglie 1,2 e 1,3 indicano l’errore standard di . Probe Pair con grande standard error sono Probe Pair che si comportano in maniera anomala rispetto agli stessi sugli altri array. N.B.: con si tenta di calcolare un pattern per il comportamento di ogni Probe Set cioè la curva del Model Based Expression Index che dovrebbe essere sempre la stessa indipendentemente dal livello di espressione del trascritto; cioè i segnali DEVONO cambiare tra differenti esperimenti ma non l’andamento delle curve. La griglia 1,2 è la curva risultante dalla differenza PM – MM, con la linea orizzontale che rappresenta il valore 0. La griglia 1,3 sovrappone la curva rossa calcolata con l’applicazione del modello alla curva blue delle differenze PM – MM reali per vedere quanto bene queste sono in accordo e quindi quanto sono affidabili le rilevazioni fatte. La curva in grigio rappresenta la differenza tra le 2. Sopra le curve sono indicati: %: una misura statistica per indicare quanto in percentuale le 2 curve sono sovrapponibili. Arr: il numero di array considerati outlier, cioè se ci sono array in cui la maggior parte dei Probe Set si comporta in disaccordo con le curve del modello. Pro: il numero di Probe Cell considerati outlier, cioè tutti quei Probe Cell che non “fittano” la curva su alcun array. Out: il numero di singoli Probe Cell di quel set che in un singolo array non “fittano” il valore corrispondente della curva. La griglia 2,2 rappresenta lo scatterplot dell’errore standard di (sulla y) verso i valori di (sulla x) calcolati per ogni array. La griglia 2,3 mostra lo scatterplot dell’errore standard di (sulla y) verso i valori di (sulla x) calcolati per ogni Probe Pair. Qui i pallini in blu rappresentano o Probe Pair provenienti da array considerati outlier o comunque probe che non vengono utilizzati nel calcolo del modello. Le icone blu nel pannello a sinistra della chiamata CEL Image attivano la visualizzazione dell’array selezionato. Nell’immagine è evidenziato in blue il Probe Set selezionato nella vista PM/MM Data. E’ inoltre indicato nella barra inferiore: il nome dell’array, il Probe Set selezionato con il numero di Probe Pair e la call, le coordinate e il segnale del punto in cui è posizionato il cursore al momento e se l’array è stato normalizzato e modellato. E’ possibile ingrandire l’immagine con i tasti FRECCIA. Se non sono disponibili file DAT, CEL o DCP è possibile inserire file dati in formato Excel opportunamente organizzati Le colonne della “call” e dell’“errore standard” sono opzionali e vanno specificate all’inserimento. N.B.: se si inizia l’analisi con l’immissione delle tabelle non è possibile visualizzare le immagini degli array, ne le griglie PM/MM Data. Adesso è possibile specificare un Array List File selezionando dal menu “Tools/ Array List File” Gli array da usare vanno selezionati nella griglia di sinistra e aggiunti cliccando su “Add array” in quella di destra. Questo è molto comodo nel caso in cui ci sono replicati o esperimenti che hanno subito gli stessi trattamenti ecc. e noi vogliamo pullarli insieme nell’analisi. Basta infatti passarli tutti a destra separandoli dai successivi con un “separator” adeguato. Se introduciamo il separatore di replica otterremo in seguito all’analisi un’unica serie di valori per tutti gli array del gruppo che saranno le medie pesate dei singoli valori. Il separatore di standardizzazione fa invece si che gli array all’interno del gruppo siano trattati anche qui come un singolo esperimento questa volta con media 0 e deviazione standard 1. Per inserire i dati in tabella selezionare nel menu “Analysis/ Get External Data” Inserire il percorso dei file e le caratteristiche richieste, ovvero se il file contiene call e standard error. Le tabelle devono avere nella prima riga i nomi degli array, nella prima colonna i nomi dei Probe Set e non devono contenere ulteriori informazioni sui geni quindi bisogna eliminare tutte le colonne che contengono descrizioni sui geni. A questo punto si può iniziare ad analizzare gli esperimenti. Per prima cosa i dati vanno normalizzati dChip, come abbiamo visto è in grado di analizzare fino a 400 array contemporaneamente al contrario del MAS che lavora su 2 array per volta. La normalizzazione funziona in questo modo: Il programma sceglie l’array (baseline) con un’intensità media più vicina alla media del gruppo, e contro questo normalizza i rimanenti array (esperimenti). Il metodo di normalizzazione utilizzato è chiamato Invariant Set Normalization Method. Questo sceglie un subset di PM che sono più o meno costanti tra i due array e sulla base di questi costruisce di normalizzazione su cui normalizzerà il resto della baseline. Farà questo per ogni array da normalizzare. E’ possibile, se sul computer è installato il pacchetto R e opportuni tool, visualizzare il grafico di normalizzazione In questo plot sulla x c’è l’array da normalizzare, sulla y la baseline, i puntini neri rappresentano i PM e i MM degli array e quelli cerchiati in rosso sono i PM scelti dal programma come invariant set. Finalmente la linea verde è la curva scelta dal software per normalizzare l’array. La linea blu è la diagonale x = y. Il valore normalizzato di un probe sull’asse x è dato dal valore y corrispondente sulla curva verde. Per normalizzare selezionare dal menu “Analysis/ Normalize” Di default viene mostrato l’array con intensità media all’interno del gruppo (scritta in parentesi quadre) contro il quale verranno normalizzati tutti gli altri; ma questo può anche essere cambiato dall’utente. Model Based Expression I valori di model based expression della griglia 2,2 vengono calcolati al volo; ma per conservarli e salvarli per tutti i Probe Set bisogna selezionare il menu “Analysis/Model-based Expression” Di default nessuna opzione è selezionata. Selezionare “Ignore Esisting...” per ricalcolare il modello invece di leggere le informazioni esistenti all’interno del DCP. Selezionare “Use Average Difference...” Per utilizzare i valori di espressione prodotti dal MAS invece di calcolare il modello. Inoltre si può scegliere di troncare o trasformare in logaritmo i valori di espressione. Valori di espressione piccoli o negativi possono essere troncati a un valore fisso (0) o ad una percentuale del valore a cui si trovano solitamente i geni chiamati Assenti tra gli array. Questo è comodo se non vogliamo utilizzare successivamente i valori dell’ errore standard per filtrare. Il concetto del Probe Sensitivity index è un po’ più complesso. Nel caso in cui si dispone di un discreto numero di esperimenti (almeno 10 senza problemi di ibridazione o di superfice del vetrino) tali da tirar fuori un PSI attendibile per ogni Probe Set è possibile salvare questi in un file per poterlo riutilizzare nelle successive analisi fatte con altri array o esperimenti. Selezionando poi “Export” è possibile scegliere quali analisi esportare e il nome del file Excel di output in cui queste saranno esportate. Bisogna selezionare i nomi degli esperimenti da esportare con “Ctrl+click”, selezionare se si vuole in output anche la call e lostandard error e se le informazioni sui geni (che di default sono piazzate nella seconda colonna dell’output) si vogliono nell’ultima colonna. Cliccando su OK si avvia l’analisi Comparazione tra campioni Un’altra analisi di alto livello performata da dChip è l’analisi di comparazione. Dati 2 campioni o 2 gruppi di campioni è possibili identificare i geni che sono differenzialmente espressi. N.B.: se vengono utilizzati + campioni per ogni gruppo i valori utilizzati nelle analisi saranno la media dei valori di ogni gruppo. E’ anche possibile utilizzare una serie di criteri per filtrare i risultati sulla base di considerazioni statistiche per tirare fuori i geni maggiormente interessanti. Selezionare dal menu “Analisys/ Compare Samples” In questa finestra vanno selezionati gli esperimenti che si vogliono comparare come esperimento e baseline e in più i parametri di filtraggio per far si che il software tiri fuori, in seguito alle analisi, solo i geni che li esaudiscono. Il criterio (1) richiede che il fold change del gene superi un certo valore e si possono utilizzare indipendentemente quello della baseline/esperimento e viceversa. Inoltre possiamo chiedere al programma di calcolare l’intervallo di confidenza in cui il valore del fold change calcolato è compreso al 90%, selezionando “Use lower 90%...”. In questo modo la tabella di output conterrà gli estremi dell’intervallo. Il calcolo di questo è eseguito utilizzando l’errore standard dei valori di espressione. Viene cioè eseguito il test 2 sul calcolo del fold change. Il test 2 è un test statistico che viene applicato per misurare la discrepanza tra i dati misurati e i dati attesi da calcoli fatti a priori. Per fare ciò gli autori hanno considerato ’b = k(b + SE2 b) e ’e = k(e + SE2 e) con ’b e ’e che rappresentano i valori di misurati e b e e i valori di calcolati dal modello. Una volta determinati i valori osservati e i valori attesi risulta poi semplice applicare il test ad ogni Probe Set Il criterio di filtraggio (2) riguarda la differenza tra i due set, cioè si decide di far passare solo quei geni la cui differenza di segnale va oltre un certo valore. Il criterio di filtraggio (3) lascia passare solo i geni il cui valore di espressione è differente tra quello dei 2 gruppi con una incertezza massima permessa dal valore che inseriremo nel quadratino. Il test usato per il calcolo dell’incertezza è il t-test. Il criterio di filtraggio (4) lascia passare solo quei geni che risultano presenti in almeno la percentuale degli array specificata. Il criterio di filtraggio (5) è uguale al (3); ma nel caso in cui abbiamo caricato più array per gruppo esegue il t-test per ogni singolo array. La diversa combinazione di questi parametri ci aiuta a tirare fuori dai dati un piccolo set di geni altamente significativi. E’ inoltre possibile combinare tra loro diverse comparazioni mediante l’utilizzo degli operatori logici AND, OR, AND NOT, OR NOT aumentando così ancora ulteriormente le possibilità di assortimento nella scelta del filtraggio. Questo tipo di filtraggio risulta, a mio avviso, anche estremamente nel momento in cui abbiamo più di 2 gruppi di esperimenti da comparare, ad esempio un time course. Ci sono un bel po’ di altre cose che dChip può fare come clustering, ulteriori tipi di filtraggio ecc.; ma penso che per questo corso sia meglio fermarci qui. Ciò che volevo mostrarvi è che esistono diversi tipi di analisi e di algoritmi da utilizzare e ognuno utilizza una determinata teoria o legge e necessariamente NESSUNO è migliore di un altro in assoluto. Bisogna però conoscerne il più possibile e possibilmente a fondo per poter fare la scelta giusta e…………. la pubblicazione su Cell.