suppressMessages(library(ggcyto))
## Warning: replacing previous import by 'ncdfFlow::rbind2' when loading
## 'ggcyto'
suppressMessages(library(flowIncubator))
Parse gatingML file graphGML object (population tree)
path <- "~/rglab/workspace/flowWorkspace/wsTestSuite/gatingML/"
# xmlfile <- file.path(path, "Merck/CytExp_10623_Gates_v5.xml")
xmlfile <- system.file("extdata/cytotrol_tcell_cytobank.xml", package = "flowIncubator")
g <- read.gatingML.cytobank(xmlfile)
g
## --- Gating hieararchy parsed from GatingML:
## with 5 populations defined
Tree accessors
getNodes(g)
## GateSet_686424 GateSet_686425 GateSet_686426 GateSet_686427 GateSet_686428
## "not debris" "singlets" "CD3" "CD8" "CD4"
getParent(g, "GateSet_686425")
## [1] "GateSet_686424"
getChildren(g, "GateSet_686425")
## [1] "GateSet_686426"
plot(g)

Read FCS files
# fcsFiles <- list.files(pattern = "\\.fcs", file.path(path, "Merck"), full = T)
fcsFiles <- list.files(pattern = "CytoTrol", system.file("extdata", package = "flowWorkspaceData"), full = T)
suppressMessages(fs_raw <- read.ncdfFlowSet(fcsFiles))
# save_ncfs(fs_raw, path = "/loc/no-backup/mike/fs_raw")
# fs_raw <- load_ncfs("/loc/no-backup/mike/fs_raw")
suppressMessages(fs <- clone.ncdfFlowSet(fs_raw,isEmpty = F))
compensation
fs <- compensate(fs, g)
## Note: method with signature 'flowSet#graphGML' chosen for function 'compensate',
## target signature 'ncdfFlowSet#graphGML'.
## "ncdfFlowSet#ANY" would also be valid
## copying data slice:CytoTrol_CytoTrol_1.fcs
## write CytoTrol_CytoTrol_1.fcs to empty cdf slot...
## copying data slice:CytoTrol_CytoTrol_2.fcs
## write CytoTrol_CytoTrol_2.fcs to empty cdf slot...
## updating CytoTrol_CytoTrol_1.fcs...
## updating CytoTrol_CytoTrol_2.fcs...
transforamation
trans <- getTransformations(g)
fs <- transform(fs, trans)
## copying data slice:CytoTrol_CytoTrol_1.fcs
## write CytoTrol_CytoTrol_1.fcs to empty cdf slot...
## copying data slice:CytoTrol_CytoTrol_2.fcs
## write CytoTrol_CytoTrol_2.fcs to empty cdf slot...
## updating CytoTrol_CytoTrol_1.fcs...
## updating CytoTrol_CytoTrol_2.fcs...
#check the trans and comps outcome
# ggcyto(fs, aes(x = "CD4"), subset = "root") + geom_density()
# ggcyto(fs, aes(x = "CD4", y = "CD8"), subset = "root") + geom_hex()
Construct the GatingSet and apply gates
gs <- GatingSet(fs)
## ..done!
gating(g, gs)
## not debris
## singlets
## CD3
## CD4
## CD8
## ..done!
check the gating results
plotGate(gs[[1]])

verify the stats are correct
#load stats from cytobank
cytobank_counts <- read.csv(system.file("extdata/cytotrol_tcell_cytobank_counts.csv", package = "flowIncubator"), skip = 7, stringsAsFactors = F)
#convert it to the same format
colnames(cytobank_counts)[1] <- "Population"
cytobank_counts <- plyr::arrange(cytobank_counts, Population)
#load openCyto stats
openCyto_counts <- getPopStats(gs, statType = "count")
openCyto_counts <- reshape2::dcast(openCyto_counts, Population ~ name, value.var = "Count")
all.equal(cytobank_counts, openCyto_counts)
## [1] TRUE