1 / 19

Voolutsütomeetri andmete analüüsimine R-ga

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

tomai
Download Presentation

Voolutsütomeetri andmete analüüsimine R-ga

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Voolutsütomeetri andmete analüüsimine R-ga Peeter Laas TTÜ 5.12.2013

  2. Voolutsütomeetri põhimõte

  3. Voolu-tsütomeetrid

  4. Kust ja kuidas on meie tänased andmed saadud?

  5. Proovide kogumine

  6. BioConductor’i paketid

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

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

  9. 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")

  10. 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)

  11. 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]]

  12. 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()

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

  14. 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()

  15. 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+']])

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

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

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

  19. Küsimused?

More Related