| @ -0,0 +1,193 @@ | |||
| --- | |||
| title: "CytoR" | |||
| author: "Marcel Costa-Garcia" | |||
| date: "`r Sys.Date()`" | |||
| output: html_document | |||
| --- | |||
| ```{r setup, include=FALSE} | |||
| knitr::opts_chunk$set(echo = TRUE, warning=FALSE, message=FALSE) | |||
| ``` | |||
| First we load the required libreries and import functions from `functionsCyto.R`: | |||
| ```{r} | |||
| library(tidyverse) | |||
| library(flowWorkspace) | |||
| library(Biobase) | |||
| library(flowGate) | |||
| source("functionsCyto.R") | |||
| ``` | |||
| We import the .LMD or .fcs files to a FlowSet object that we convert into a GatingSet (in the case of LMD files, they include both the format FCS2 and FCS3, which is accessed as dataset=2): | |||
| ```{r} | |||
| fs<-read.ncdfFlowSet(files=list.files("BcellPhenotype-Files/",".LMD", full.names = T), readonly = F, dataset=2) | |||
| gs <- GatingSet(fs) | |||
| gs | |||
| ``` | |||
| Next, we will compensate with the compensation matrix of the adquisition, which is embed into the file. We can import another compensation matrix: | |||
| ```{r} | |||
| comp<-spillover(fs[[1]])$`$SPILLOVER` | |||
| colnames(comp)<-colnames(gs)[5:14] | |||
| rownames(comp)<-colnames(gs)[5:14] | |||
| comp | |||
| gs<-compensate(gs, comp) | |||
| ``` | |||
| To transform the axis in an interactive and visual way, I have created the following function: | |||
| ```{r, eval=FALSE} | |||
| trans_params<-transform_gs(gs) | |||
| ``` | |||
|  | |||
| ```{r, include=F} | |||
| trans_params<-readRDS("BcellPhenotype-trans_params.rds") | |||
| trans_apply(gs, trans_params = trans_params) | |||
| ``` | |||
| ```{r} | |||
| trans_params$`FL3-A` | |||
| ``` | |||
| We can save the transformation params in a file and latter we can import and apply directly (including in other experiments): | |||
| ```{r, eval=F} | |||
| saveRDS(trans_params, "BcellPhenotype-trans_params.rds") | |||
| ``` | |||
| ```{r, eval=F} | |||
| trans_params<-readRDS("BcellPhenotype-trans_params.rds") | |||
| trans_apply(gs, trans_params = trans_params) | |||
| ``` | |||
| As it wasn't done during the acquisition, we will define the marker name for the channels of interest: | |||
| ```{r} | |||
| markers<-colnames(gs) | |||
| markers[c(7,13)]<-c("CD19","L&D") | |||
| names(markers)<-colnames(gs) | |||
| markernames(gs)<-markers | |||
| markernames(gs) | |||
| ``` | |||
| Finally, we will clean a bit the sample names: | |||
| ```{r} | |||
| sampleNames(gs) | |||
| sampleNames(gs)<-gsub("\\s[0-9]*.LMD","",sampleNames(gs)) | |||
| sampleNames(gs)<-gsub(".*\\s","",sampleNames(gs)) | |||
| pData(gs)$name<-rownames(pData(gs)) | |||
| sampleNames(gs) | |||
| ``` | |||
| And we are ready to gate! We will be using the `gs_interactive_gate` function from `flowGate` package. | |||
| ```{r, include=F} | |||
| gates<-readRDS("BcellPhenotype-gates.rds") | |||
| gs<-gates_apply(gs, gates) | |||
| ``` | |||
| ```{r, eval=F} | |||
| gs_gate_interactive(gs, | |||
| filterId = "Leukocytes", | |||
| dims = list("FS-A", "SS-A")) | |||
| ``` | |||
|  | |||
| ```{r, eval=F} | |||
| gs_gate_interactive(gs, | |||
| subset = "Leukocytes", | |||
| filterId = "CD19 L&D", | |||
| dims = list("CD19", "L&D")) | |||
| ``` | |||
| We can save the created gates into a file to import latter on (which may be also used to apply the gating strategy into a new experiment): | |||
| ```{r, eval=F} | |||
| gates<-gates_save(gs, file = "BcellPhenotype-gates.rds") | |||
| gates<-readRDS("BcellPhenotype-gates.rds") | |||
| gs<-gates_apply(gs, gates) | |||
| ``` | |||
| ```{r} | |||
| plot(gs) | |||
| ``` | |||
| We can rapidly explore the results using the `autoplot` function: | |||
| ```{r} | |||
| autoplot(gs, "Leukocytes", bins=128, nrow=1) | |||
| autoplot(gs[["aCDE19"]], bins=128, nrow=1) | |||
| ``` | |||
| We can further personalize the plot with similar sintaxis as `ggplot` with the `ggcyto` package: | |||
| ```{r} | |||
| g<-ggcyto(gs, subset = "Leukocytes", bins=128, aes(CD19,`L&D`))+ | |||
| facet_grid(.~factor(name, levels=c("Unst","aCDE19")))+ | |||
| geom_hex(bins=128)+ | |||
| geom_gate()+ | |||
| geom_stats()+ | |||
| scale_fill_gradient(low="black", high="violet") | |||
| g | |||
| ``` | |||
| Finally, we can export the stats and plot them: | |||
| ```{r, fig.width=4} | |||
| stats<-gs_pop_get_stats(gs, nodes=gs_get_pop_paths(gs, path = "auto")[3:6], type="perc") | |||
| stats | |||
| g2<-ggplot(stats, aes(factor(sample, levels=c("Unst","aCDE19")), percent, fill=pop))+ | |||
| geom_bar(stat="identity", color="black")+xlab("Samples") | |||
| ggpubr::ggarrange(as.ggplot(g), g2, ncol=1) | |||
| ``` | |||
| Code: | |||
| ```r | |||
| library(tidyverse) | |||
| library(flowWorkspace) | |||
| library(Biobase) | |||
| library(flowGate) | |||
| source("functionsCyto.R") | |||
| fs<-read.ncdfFlowSet(files=list.files("BcellPhenotype-Files/",".LMD", full.names = T), readonly = F, dataset=2) | |||
| gs <- GatingSet(fs) | |||
| comp<-spillover(fs[[1]])$`$SPILLOVER` | |||
| colnames(comp)<-colnames(gs)[5:14] | |||
| rownames(comp)<-colnames(gs)[5:14] | |||
| gs<-compensate(gs, comp) | |||
| trans_params<-transform_gs(gs) | |||
| markers<-colnames(gs) | |||
| markers[c(7,13)]<-c("CD19","L&D") | |||
| names(markers)<-colnames(gs) | |||
| markernames(gs)<-markers | |||
| sampleNames(gs)<-gsub("\\s[0-9]*.LMD","",sampleNames(gs)) | |||
| sampleNames(gs)<-gsub(".*\\s","",sampleNames(gs)) | |||
| pData(gs)$name<-rownames(pData(gs)) | |||
| gs_gate_interactive(gs, | |||
| filterId = "Leukocytes", | |||
| dims = list("FS-A", "SS-A")) | |||
| gs_gate_interactive(gs, | |||
| subset = "Leukocytes", | |||
| filterId = "CD19 L&D", | |||
| dims = list("CD19", "L&D")) | |||
| g<-ggcyto(gs, subset = "Leukocytes", bins=128, aes(CD19,`L&D`))+ | |||
| facet_grid(.~factor(name, levels=c("Unst","aCDE19")))+ | |||
| geom_hex(bins=128)+ | |||
| geom_gate()+ | |||
| geom_stats()+ | |||
| scale_fill_gradient(low="black", high="violet") | |||
| stats<-gs_pop_get_stats(gs, nodes=gs_get_pop_paths(gs, path = "auto")[3:6], type="perc") | |||
| stats | |||
| g2<-ggplot(stats, aes(factor(sample, levels=c("Unst","aCDE19")), percent, fill=pop))+ | |||
| geom_bar(stat="identity", color="black")+xlab("Samples") | |||
| ggpubr::ggarrange(as.ggplot(g), g2, ncol=1) | |||
| ``` | |||