190 likes | 381 Views
Voolutsütomeetri andmete analüüsimine R-ga. Peeter Laas TTÜ 5.12.2013. Voolutsütomeetri põhimõte. Voolu- tsütomeetrid. Kust ja kuidas on meie tänased andmed saadud?. Proovide kogumine. BioConductor’i paketid. Täna kasutame:.
E N D
Voolutsütomeetri andmete analüüsimine R-ga Peeter Laas TTÜ 5.12.2013
Täna kasutame: ## Pakettide paigaldamine (NB! Võimalik, et tuleb veel lisaks seotud pakette paigaldada) source("http://bioconductor.org/biocLite.R") biocLite("flowCore") biocLite("flowStats") biocLite("flowViz") ## Pakettide lisamine library(flowCore) library(flowStats) library(flowViz)
Andmete sisselugemine 1 faili kaupa (flowFrame) ## Enamik VT andmeid omab “FCS” laiendit f = read.FCS(file= "naide1.fcs") f nrow(f) # Sündmuste arv proovis ## peamised flowFrame elemendid on exprs ja description slotid exprs(f)[1:10,]# 10 esimese raku mõõtmisandmed kõikides kanalites E = exprs(f) dim(E) summary(f) description(f) # Proovi kõik metaandmed keyword(f, 'TUBE NAME') # Proovi nimi
Andmete visualiseerimine ## Jooniste tegemine käib sarnaselt varemõpitule flowViz paketi abil plot(f) plot(f, "FITC-A") plot(f, c("FITC-A", "SSC-A")) plot(f, c("FITC-A", "SSC-A"), smooth = FALSE) plot(f, c("FITC-A", "SSC-A"), ylim = c (0 ,8000), xlim = c (0 ,6000), smooth = FALSE) # Lisame joone abline(v = 700, col="red")# v – vertikaalne joon abline(h = 500, col="blue")# h – horisontaalne joon abline(v = 2100, col="green")
flowViz ## Eraldame detriidi rakkudest detriit = which(exprs(f[, "FITC-A"]) <700) length(detriit) ## Teeme maatriksi kõikide rakkude FITC-A ja SSC-A väärtustest D = exprs(f[, c("FITC-A", "SSC-A")]) ## Värvime detriidi punaseks points (D[detriit, ], pch=".", col = "red", cex =2) ## Leiame detriidi protsendi detriidi.protsent = 100 * length(detriit) / nrow(f) ## Lisame legendi legend('bottomright', legend = paste(" Detriit :", detriidi.protsent , "%"), col = "red", pch = 1) ## Teeme uue flowFrame’i, kus pole ja siis sellest joonise f.detriidita = f[-detriit] plot(f.detriidita, c("FITC-A", "SSC-A"), ylim = c (0 ,8000), xlim = c (0 ,6000), smooth = FALSE)
Mitme faili korraga sisselugemiseks (flowSet) ## flowSet’i sisselugemine dir() proovid = as.character(dir()) # Siit tuleb välja selekteerida naide1-6 või: fset <- read.flowSet(proovid) ## Alternatiiv: fset <- read.flowSet(files=c("naide1.fcs", "naide2.fcs", "naide3.fcs", "naide4.fcs", "naide5.fcs", "naide6.fcs")) fset ## Osad käsud toimivad sarnaselt: keyword(fset, 'TUBE NAME') ## Nende puhul, mis muidu ei tööta saab kasutada käsku fsApply(), näiteks nrow() fsApply(fset, nrow) ## Vajadusel saab flowSet’st flowFrame’e välja võtta: fset[[1]]
Teisendamine ## Loome workFlow mw <- workFlow(fset, name ="myWork") mw ## Koostame transformList’i [arcsinhTransform f(x) = asinh(a + bx) + c]: tf <- transformList(colnames(fset)[2:9], asinh, transformationId = "asinh") ## Lisame selle workFlow’sse add(mw, tf) mw ## Teeme joonised png("joonis1.png", width=1000, height=1000, res=200) xyplot(`FITC-A` ~ `SSC-A`, Data(mw[["asinh"]]), main = "Proovid") dev.off()
Väravate loomine ja kasutamine ## Teeme ristküliku kujulise värava rgate1 = rectangleGate(filterId="Ristkylik","FITC-A" = c(2.5, 12.5), "SSC-A" = c(2.5, 12.5)) ## Lisame värava workFlow-le add(mw, rgate1, parent="asinh") mw ## Vaatame kui paljud rakud jäid väravasse ja kui palju välja summary(mw[['Ristkylik+']]) ## Teeme joonised, kus on ainult väravasse jäävad rakud png("katse1.png", width=1000, height=1000, res=200) xyplot(`FITC-A` ~ `SSC-A`, Data(mw[["Ristkylik+"]]), main = "Proovid") dev.off() ## Midagi läks soovimatult, siis workFlow’st saab elemente eemaldada undo(mw) mw
Bakterite arvukuse määramine ## Teeme värava, kuhu kõik bakterid võiksid sisse jääda rgate2 = rectangleGate(filterId="totbak","FITC-A" = c(700, 8000), "SSC-A" = c(500, 8000)) ## Lisame värava töövoolu, kuid seekord transformeerimata andmete alla add(mw, rgate2, parent="base view") ## Teeme joonise, et näha tulemust png("katse2.png", width=1000, height=1000, res=200) xyplot(`FITC-A` ~ `SSC-A`, Data(mw[["totbak+"]]), main = "Proovid", ylim = c (0 ,10000), xlim = c (0 ,10000), smooth = FALSE) dev.off()
LNA ja HNA ## Teeme eraldi väravad LNAgate = rectangleGate(filterId="LNA","FITC-A" = c(700, 4000), "SSC-A" = c(500, 8000)) HNAgate = rectangleGate(filterId="HNA","FITC-A" = c(4000, 8000), "SSC-A" = c(500, 8000)) add(mw, LNAgate, parent="base view") add(mw, HNAgate, parent="base view") LNA = summary(mw[['LNA+']]) HNA = summary(mw[['HNA+']])
Kalibratsiooni kuulikesed ## Igale proovile lisati kindel arv count bead’e, mis flourestseeruvad punaselt mw # kontrollime, kas arcsin teisendus on töövoos olemas, kui ei: add(mw, tf) # Lisame uuesti arcsin teisenduse ## Vaatame, kas näeme beade oranžis (PE-A) ja punases (PerCP-Cy5-5-A) kanalis png("bead.png", width=1000, height=1000, res=200) xyplot(`PE-A` ~ `PerCP-Cy5-5-A`, Data(mw[["asinh"]]), main = "Proovid", ylim = c (10 ,16), xlim = c (10 ,16), smooth = FALSE) dev.off() ## Teeme joonise põhjal värava ja lisame selle wf-sse “asinh” alla: BEADSgate = rectangleGate(filterId="BEADS", "PE-A" = c(12, 13), "PerCP-Cy5-5-A" = c(12, 13)) add(mw, BEADSgate, parent="asinh") ## Teeme joonised, kus on ainult kuulikesed png("ainult_beads.png", width=1000, height=1000, res=200) xyplot(`PE-A` ~ `PerCP-Cy5-5-A`, Data(mw[["BEADS+"]]), main = "Proovid", ylim = c (10 ,16), xlim = c (10 ,16), smooth = FALSE) dev.off()
LNA ja HNA arvukuste leidmine ## Leiame kuulikeste arvukuse: BEADS = summary(mw[['BEADS+']]) ## Selleks, et teada saada rakkude arvukus ühes milliliitris tuleb (loetud rakud)/(loetud beadid)*35384, ehk: LNA$LNA_ml = LNA$true/BEADS$true*35384 HNA$HNA_ml = HNA$true/BEADS$true*35384
Kodutöö Iga üks saab ühe faili kt<n>.fcs • Leidke oma faili (n), n-1 ja n+1 HNA ja LNA arvukused, 1 puhul: (12, 1, 2) ja 12 puhul: (11, 12, 1) • Tehke joonis nende 3 proovi "FITC-A" ja "SSC-A“ kanalitest, nii, et rakkud oleksid nähtavad (3. tahad olla tubli) - Proovi joonisele lisada lisa vidinaid (näiteks legend arvukustega) või pane joonisele faili nime asemel “TUBE NAME” keyword (4. tahad juurde õppida) Tõmba alla flowStats vignette ja proovi teha teistsuguseid väravaid